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

 
 
> Реализация системных вызовов (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
Ответов
Forger
сообщение Mar 10 2012, 17:12
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 22-02-05
Пользователь №: 2 831



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

До кучи, вы, пожалуйста, приведите примеры, где удобно использовать такие вызовы.


--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
Go to the top of the page
 
+Quote Post
sysel
сообщение Mar 10 2012, 20:58
Сообщение #3


Знающий
****

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



Цитата(Forger @ Mar 10 2012, 21:12) *
До кучи, вы, пожалуйста, приведите примеры, где удобно использовать такие вызовы.

Например: делим код и память на пользовательскую (реализация логики работы программы) и на системную (операционная система, функции работы с периферией). Разграничиваем стеки (PSP и MSP), разграничиваем доступ к памяти (с помощью MPU). Системный код выполняется в привилегированном режиме, логика программы - в непривилегированном.
С помощью SVCall из юзеркода можно организовать вызов функций системного кода: функции ОС, работа с периферией и т.д.

Если же Вы не задействуете MPU и программа работает только в привилегированном режиме, то да - механизм системных вызовов бесполезен.

Цитата(_Pasha @ Mar 10 2012, 21:26) *
Скоро CMSIS вытащит на свет гибрид лягушки с носорогом
Как Вы думаете, чем будут реализованы системные вызовы? sm.gif

Думаю что эту реализацию дадут на откуп разработчикам операционок. Хотят реализовывают через SVCall, хотят без него. Главное в CMSIS что? И пофигу на корявую реализацию, главное чтобы интерфейс соотвтетствовал.
Может я, конечно, погорячилса. Сужу по кишащим ошибками и кривизной драйверов от NXP для этого самого CMSIS.
Go to the top of the page
 
+Quote Post



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

 


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


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