sysel 0 10 марта, 2012 Опубликовано 10 марта, 2012 · Жалоба Здравствуйте! Работаю над одним проектом, в котором некоторые операции решил делать через системные вызовы. Родился код, позволяющий довольно элегантно это реализовать под IAR-ом (версия 6.30.1). Добился того, что при написании программы системный вызов (с параметрами и возвращаемым значением) ни чем не отличается от вызова обычной функции. Сейчас без ухищрений в вызов можно передать до четырёх 32-битных параметров. Знатоков архитектуры Cortex M3 прошу покритиковать. Проект IAR 6.30.1. Отладка на симуляторе. tst01.zip Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Forger 26 10 марта, 2012 Опубликовано 10 марта, 2012 · Жалоба Работаю над одним проектом, в котором некоторые операции решил делать через системные вызовы. До кучи, вы, пожалуйста, приведите примеры, где удобно использовать такие вызовы. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_Pasha 0 10 марта, 2012 Опубликовано 10 марта, 2012 · Жалоба До кучи, вы, пожалуйста, приведите примеры, где удобно использовать такие вызовы. Скоро CMSIS вытащит на свет гибрид лягушки с носорогом Как Вы думаете, чем будут реализованы системные вызовы? :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sysel 0 10 марта, 2012 Опубликовано 10 марта, 2012 · Жалоба До кучи, вы, пожалуйста, приведите примеры, где удобно использовать такие вызовы. Например: делим код и память на пользовательскую (реализация логики работы программы) и на системную (операционная система, функции работы с периферией). Разграничиваем стеки (PSP и MSP), разграничиваем доступ к памяти (с помощью MPU). Системный код выполняется в привилегированном режиме, логика программы - в непривилегированном. С помощью SVCall из юзеркода можно организовать вызов функций системного кода: функции ОС, работа с периферией и т.д. Если же Вы не задействуете MPU и программа работает только в привилегированном режиме, то да - механизм системных вызовов бесполезен. Скоро CMSIS вытащит на свет гибрид лягушки с носорогом Как Вы думаете, чем будут реализованы системные вызовы? :) Думаю что эту реализацию дадут на откуп разработчикам операционок. Хотят реализовывают через SVCall, хотят без него. Главное в CMSIS что? И пофигу на корявую реализацию, главное чтобы интерфейс соотвтетствовал. Может я, конечно, погорячилса. Сужу по кишащим ошибками и кривизной драйверов от NXP для этого самого CMSIS. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 242 11 марта, 2012 Опубликовано 11 марта, 2012 · Жалоба Работаю над одним проектом, в котором некоторые операции решил делать через системные вызовы. Можете ещё до кучи реализовать некоторые операции через механизм исключений. К примеру: пишем некое значение в некий адрес памяти физически несуществующий, получаем что там - bus error вроде? В обработчике исключения (который кста выполняется в привилегированном режиме) получаем значения целевого адреса записи и записываемого значения, которые юзаем как аргументы. :) Так можно например представить память, висящую к примеру на SPI, как виртуальную страницу в общем адресном пространстве. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_Pasha 0 11 марта, 2012 Опубликовано 11 марта, 2012 (изменено) · Жалоба получаем что там - bus error вроде? Народ такие штуки не одобряет, хотя, виртуальные адреса никто не отменял. Или корректор при ошибке доступа к невыровненным данным. Вроде бы маскирует ошибку, а на деле - обеспечивает портабельность и надежность программы. За счет дополнительных тактов. Везде ли это главное? А быстрые вещи - дык их все равно под камень точат - там выравнивания уже автоматом учтены. Изменено 11 марта, 2012 пользователем _Pasha Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sysel 0 11 марта, 2012 Опубликовано 11 марта, 2012 · Жалоба Так можно например представить память, висящую к примеру на SPI, как виртуальную страницу в общем адресном пространстве. Принципиально реализуемо (ради спортивного интереса или на "слабо"), а практическая выгода под сомнением. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться