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

 
 
> Насколько трудно портировать scmRTOS под Keil?
DimaM
сообщение Sep 16 2008, 10:21
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 103
Регистрация: 17-12-06
Из: село
Пользователь №: 23 615



Нравится мне C++ и поэтому smcRTOS интересна, хотел попробовать портировать под Keil, но из за того что с IAR не работал проблемы возникли.

И возник вопрос - а стоит ли связыватся? Как авторы и народ оценивают количество специфических для IAR вещей?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Сергей Борщ
сообщение Sep 16 2008, 10:37
Сообщение #2


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(DimaM @ Sep 16 2008, 13:21) *
Как авторы и народ оценивают количество специфических для IAR вещей?
Несколько макросов в сишных исходниках (INLINE, OS_INTERRUPT, OS_PROCESS) и один асмовый файл. Причем код в асмовом файле переписывать скорее всего не нужно, только директивы ассемблера. Ну и линкерные скрипты, если дефолтные не подойдут. Могу консультировать "что эта фИгня делает в ИАРе" (лучше через ICQ), но поскольку с кейлом не работаю, подсказать "а как это будет в Кейле" скорее всего не смогу.
Портирование на GCC сложнее, ибо он не позволяет указывать thumb или arm для конкретной функции, только для файла целиком.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
DimaM
сообщение Sep 16 2008, 11:19
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 103
Регистрация: 17-12-06
Из: село
Пользователь №: 23 615



Цитата(Сергей Борщ @ Sep 16 2008, 14:37) *
Несколько макросов в сишных исходниках (INLINE, OS_INTERRUPT, OS_PROCESS) и один асмовый файл. Причем код в асмовом файле переписывать скорее всего не нужно, только директивы ассемблера. Ну и линкерные скрипты, если дефолтные не подойдут. Могу консультировать "что эта фИгня делает в ИАРе" (лучше через ICQ), но поскольку с кейлом не работаю, подсказать "а как это будет в Кейле" скорее всего не смогу.
Портирование на GCC сложнее, ибо он не позволяет указывать thumb или arm для конкретной функции, только для файла целиком.

я думаю часть вопросов может быть интересна не только мне
например что делают OS_INTERRUPT, OS_PROCESS
может что то выскажут и знатоки keil, например как со стеком обходится.
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Sep 16 2008, 12:56
Сообщение #4


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(DimaM @ Sep 16 2008, 14:19) *
я думаю часть вопросов может быть интересна не только мне
Возможно, им более интересно, чтобы вы выложили уже готовый порт? wink.gif
Цитата(DimaM @ Sep 16 2008, 14:19) *
например что делают OS_INTERRUPT, OS_PROCESS
Код
#if scmRTOS_CONTEXT_SWITCH_SCHEME == 0
    #define OS_INTERRUPT __arm
#else
    #define OS_INTERRUPT __arm __irq
#endif
Тут, кажется, все понятно и без комментариев. Абисьнять?
Код
#define OS_PROCESS
Т.е. не делает ничего. Заглянув в порт для AVR можно увидеть такое объявление:
Код
#define OS_PROCESS    __task
Т.е. если у кейла есть возможность определить функцию, для которой не надо сохранять контекст на стеке (аналог __attribute__((__naked__)) в GCC) - используйте ее здесь.
Цитата(DimaM @ Sep 16 2008, 14:19) *
может что то выскажут и знатоки keil, например как со стеком обходится.
Со стеком там работа идет на асме, зависимости от компилятора в ней нет.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post



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

 


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


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