реклама на сайте
подробности

 
 
> Реализация системных вызовов (SVCcall) для Cortex M3 в IAR, хочу поделиться
sysel
сообщение Mar 10 2012, 11:25
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 601
Регистрация: 3-07-07
Пользователь №: 28 852



Здравствуйте!
Работаю над одним проектом, в котором некоторые операции решил делать через системные вызовы.
Родился код, позволяющий довольно элегантно это реализовать под IAR-ом (версия 6.30.1).

Добился того, что при написании программы системный вызов (с параметрами и возвращаемым значением) ни чем не отличается от вызова обычной функции.

Сейчас без ухищрений в вызов можно передать до четырёх 32-битных параметров.

Знатоков архитектуры Cortex M3 прошу покритиковать.

Проект IAR 6.30.1. Отладка на симуляторе.

Прикрепленные файлы
Прикрепленный файл  tst01.zip ( 13.74 килобайт ) Кол-во скачиваний: 51
 
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
jcxz
сообщение Mar 11 2012, 16:09
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(sysel @ Mar 10 2012, 17:25) *
Работаю над одним проектом, в котором некоторые операции решил делать через системные вызовы.

Можете ещё до кучи реализовать некоторые операции через механизм исключений.
К примеру: пишем некое значение в некий адрес памяти физически несуществующий, получаем что там - bus error вроде? В обработчике исключения (который кста выполняется в привилегированном режиме) получаем значения целевого адреса записи и записываемого значения, которые юзаем как аргументы.
sm.gif
Так можно например представить память, висящую к примеру на SPI, как виртуальную страницу в общем адресном пространстве.
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Mar 11 2012, 17:25
Сообщение #3


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Цитата(jcxz @ Mar 11 2012, 19:09) *
получаем что там - bus error вроде?

Народ такие штуки не одобряет, хотя, виртуальные адреса никто не отменял. Или корректор при ошибке доступа к невыровненным данным. Вроде бы маскирует ошибку, а на деле - обеспечивает портабельность и надежность программы. За счет дополнительных тактов. Везде ли это главное? А быстрые вещи - дык их все равно под камень точат - там выравнивания уже автоматом учтены.

Сообщение отредактировал _Pasha - Mar 11 2012, 17:26
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 27th July 2025 - 14:22
Рейтинг@Mail.ru


Страница сгенерированна за 0.0135 секунд с 7
ELECTRONIX ©2004-2016