|
|
  |
4.0 |
|
|
|
Sep 23 2011, 13:09
|

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

|
Для ускорения выхода релиза я принял решение прекратить поддержку следующих портов ARM7: IAR/STR71x - ибо порт был написан по просьбе местного представителя ST в обмен на обещание упомянуть scmRTOS на сайте ST. Обещание не выполнено, кит я отдал после выхода порта, отлаживаться не на чем. GCC/ADuC70xx - ибо ADuC тоже не применяю, а для полноценного порта надо добавлять еще и поддержку ADuC71xx, которых у меня нет. По статистике загрузок с sourceforge.net оба эти порта были скачаны в сумме 17 раз за последний год, что показывает их неактуальность.
всю ветку IAR4.xx, ибо не актуально.
По поводу IAR версии 6.xx - я с версии 4.хх перескочил на GCC, с пятой и более поздними не разбирался и разбираться желания нет - во-первых, GCC меня устраивает полностью, во-вторых - принято решение переползать на кортексы. Если несмотря на засилие кортексов кому-то еще интересены порты ARM7/IAR6.xx - добро пожаловать в команду разработчиков. Вышлю присланый мне когда-то очень давно порт scmRTOS v3.10 под IAR5.xx для допиливания под 6.xx и дальнейшей поддержки.
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
Jan 28 2012, 20:51
|
Местный
  
Группа: Участник
Сообщений: 312
Регистрация: 9-04-10
Пользователь №: 56 532

|
В версии для GCC есть небольшой косяк. При сборки версии, для ATmega168pa , с программным прерывание вылетает ошибка "SPM ready interrupt vector not defined". Это происходит из-за того, что вектор SPM_READY_vect называется SPM_Ready_vect. А так-же есть еще эта ошибка Код # if scmRTOS_CONTEXT_SWITCH_USER_HOOK_ENABLE != 1 # error scmRTOS_CONTEXT_SWITCH_USER_HOOK_ENABLE must be 1\ for SPM_READY interrupt context switcher # endif Это опечатка? (Этот вопрос уже прояснил, при программном прерывании scmRTOS_CONTEXT_SWITCH_USER_HOOK_ENABLE =1 )
Сообщение отредактировал a9d - Jan 28 2012, 22:00
|
|
|
|
|
Jan 29 2012, 10:18
|

Adept
     
Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343

|
QUOTE (a9d @ Jan 29 2012, 03:51)  В версии для GCC есть небольшой косяк. При сборки версии, для ATmega168pa , с программным прерывание вылетает ошибка "SPM ready interrupt vector not defined". Это происходит из-за того, что вектор SPM_READY_vect называется SPM_Ready_vect. Вообще-то, выбор и конфигурирование источника программного прерывания специально вынесен на уровень пользовательского проекта для: 1) предоставления пользователю полной свободы в этом вопросе; 2) обхода косяков в заголовках тулчейнов, когда для разных МК аналогичные макросы имеют чуть разные имена, как в примере выше. Поэтому, как я понимаю, ошибки тут нет - для МК, который используется в примере всё указанно верно, а при смене МК просто нужно откорректировать этот код проекта.
--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
|
|
|
|
|
Feb 12 2012, 11:44
|

Нечётный пользователь.
     
Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417

|
Цитата(a9d @ Jan 28 2012, 22:51)  Это происходит из-за того, что вектор SPM_READY_vect называется SPM_Ready_vect. Ой, а где это он так ( SPM_Ready_vect) называется? В h-файлах от avr-libc есть только SPM_READY_vect и SPM_RDY_vect, эти имена и используются в примерах scmRTOS.
--------------------
Ну, я пошёл… Если что – звоните…
|
|
|
|
|
Mar 8 2012, 13:03
|
Гуру
     
Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322

|
Как в версии 4 использовать исходники написанные для 3.10? Нужно где-то определить Код #define scmRTOS_OBSOLETE_NAMES 1 ? В каком файле это должно быть определено?
|
|
|
|
|
Mar 8 2012, 17:01
|
Гуру
     
Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322

|
Задал в файле scmRTOS_CONFIG.h scmRTOS_OBSOLETE_NAMES 1 Получил: Код ../scmRTOS/Common/OS_Kernel.h: In member function 'void OS::TKernel::raise_context_switch()': ../scmRTOS/Common/OS_Kernel.h:182:46: error: 'RaiseContextSwitch' is not a member of 'OS' ./src/main.cpp: In function 'void OS::system_timer_user_hook()': ./src/main.cpp:116:6: error: redefinition of 'void OS::system_timer_user_hook()' ../scmRTOS/Common/OS_Kernel.h:496:17: error: 'void OS::system_timer_user_hook()' previously defined here make: *** [obj/main.o] Ошибка 1 Ошибка на строке: Код INLINE void raise_context_switch() { OS::RaiseContextSwitch(); } Что неправильно делаю?
|
|
|
|
|
Mar 8 2012, 19:52
|

Нечётный пользователь.
     
Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417

|
Значит, Вы не задали функцию RaiseContextSwitch() в пространстве OS у себя в проекте, в файле scmRTOS_TARGET_CFG.hИ если исходники были для 3.10, то в них не могло быть функции system_timer_user_hook(), должна была быть SystemTimerUserHook() Пример 3-Channel для порта AVR/GCC специально оставлен в режиме совместимости, т.е. там все исходники примера от 3.10 Только в scmRTOS_CONFIG.h добавлена строка Код #include "scmRTOS_310_compat.h" и всё. Этого достаточно — компилируется в режиме совместимости. В том include-файле кроме Код #define scmRTOS_OBSOLETE_NAMES 1 ещё определено несколько нужных для 3.10 типов.
--------------------
Ну, я пошёл… Если что – звоните…
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|