|
Начало работы with scmRTOS, Несколько вопросиков |
|
|
|
Feb 20 2008, 14:56
|
Частый гость
 
Группа: Новичок
Сообщений: 83
Регистрация: 2-02-06
Пользователь №: 13 912

|
Хочется научиться работать с этой штукой - scmRTOS & AVR(Atmega8) & IAR 4.30A ! Почитал темы которые есть на форуме, почитал User's Manual v2. Возникло некторое количество вопросов: 1. Какая последовательность создания проекта: мои предположения - создаем в IAR новый проект, тискаем добавить файлы в проект и добавляем OS_Kernel.cpp , OS_Services.cpp , OS_Target_asm.s90 , OS_Target_cpp.cpp , usrlib.cpp. В maim.cpp пишем Код #include <scmRTOS.h> . Затем каким то образом нужно создать самому как я понял scmRTOS_TARGET_CFG.h и scmRTOS_CONFIG.h, но как не ясно или их нужно тупо скопировать из примера автора и если что нада то менять. 2. Почему в примерах автор добавляет Код void OS::SystemTimerUserHook() { } void OS::IdleProcessUserHook() { } Так нужно делать всегда ? 3. Дальше >> понятно что для AVR передачу управления можно осуществить сгенерировав прерывание например от компоратора как описано в документации, но непонятно как нужно оформить функцию обработки этого прерывания, и чем она будет отличаться от функции обработки других прерываний. О взаимодействии между потоками пока вроде понятно. Может кто нить может описать последовательность начальных действий и привести пример кода или хотя бы шапку , где есть процессы и обработчики прерываний и передача управления. Мог написать что - нибудь глупое, потому как в круг моих понятий scmRTOS пока входит очень туманно или вообще не входит.
|
|
|
|
|
 |
Ответов
|
Mar 4 2008, 14:13
|
Знающий
   
Группа: Свой
Сообщений: 589
Регистрация: 24-04-05
Пользователь №: 4 447

|
При включении моих исходников проекта на Си в проект smcRTOS (пример 1-EventFlag)возникла проблема. Код Error[e18]: Range error, PC offset out of range. Valid range is -4096 (-0x1000) to 4094 (0x0FFE). File: D:\...\scmRTOS\AVR\OS_Target_asm.s90, Line: 234 Source: xjmp ContextSwitcher_ISR Where $ = #no label found# + 0x5C [0x5C] in module "scmRTOS_Asm" (D:\...\1-EventFlag\Release\Obj\OS_Target_asm.r90), offset 0x5C in segment part 1, segment INTVEC What: #no label found# - ($ + 2) [0x1388] Allowed range: 0xFFFFF000 - 0xFFF Operand: #no label found# [0x13e6] in module scmRTOS_Asm (D:\...\1-EventFlag\Release\Obj\OS_Target_asm.r90), Offset 0x0 in segment part 2, segment CODE Мой проект пока состоит из последовательного вызовов функций инициализации различной переферии. Ошибка возникает при подключении lcd_Init(); Отдельно мой проект отлажен под Мега324P. Занимал около 20кБ ROM и около 500 байт RAM. Пробовал изменить на Мега 644P и изменить размеры CSTACK, RSTACK. Не помогло. Как решить эту проблему?
|
|
|
|
|
Mar 4 2008, 16:02
|

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

|
Цитата(alux @ Mar 4 2008, 16:13)  Мой проект пока состоит из последовательного вызовов функций инициализации различной переферии. Каким-то образом обработчик прерывания переключения контекста оказывается в месте, куда не "дотягивается" xjmp из области векторов. Судя по ограничению +/- 4К вместо макроса xjmp подставляется RJMP, хотя нужен JMP. Глянул в исходники: Код #if (A90_PROC_OPTION == 0) || (A90_PROC_OPTION == 1) #define xcall rcall #define xjmp rjmp #else #define xcall call #define xjmp jmp #endif Где определяется A90_PROC_OPTION я не нашел - ни в исходниках, ни в описании ассемблера. Неопределенный символ считается равным нулю. Можно предположить, что перед этим должна быть (утерянная) строка Код #define A90_PROC_OPTION ((__TID__ >> 4) & 0x0F) dxp завтра разберется, откуда вылезла эта бага.
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
Mar 5 2008, 04:55
|

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

|
Цитата(Сергей Борщ @ Mar 4 2008, 22:02)  Где определяется A90_PROC_OPTION я не нашел - ни в исходниках, ни в описании ассемблера. Неопределенный символ считается равным нулю. Можно предположить, что перед этим должна быть (утерянная) строка Код #define A90_PROC_OPTION ((__TID__ >> 4) & 0x0F) Действительно, косяк. Как он вкрался, не помню хоть убей. Пофиксено. P.S. Лишний раз "порадовался" "красоте" иаровского подхода - поменял имя МК и началось... Регистра TIMSK там уже нет, вместо него есть TIMSK0 и т.д. Я понимаю, что одного регистра не хватает, но зачем было имя-то менять? Пусть бы для совместимости осталось. То же самое касается TCCR0, которого уже тоже нет, а есть два с буквами на конце. Почему бы было не оставить для совместимости старое имя? Не понимаю. И уж зачем вообще было менять имя вектора ANA_COMP_vect на ANALOG_COMP_vect? А если заменили, то и вставили бы код для совместимости. И такие косяки у них с незапамятных времен. Такое впечатление, что о портировании кода даже внутри семейства они вообще не думают, а заголовки для разных процов лабают разные люди, которые никак свои действия друг с другом не координируют. Про упомянутое /* SREG */ #define I 7 #define T 6 #define H 5 #define S 4 #define V 3 #define N 2 #define Z 1 #define C 0 я вообще молчу - яркий образчик бездумного подхода и безответственности. Причем что интересно - это не у всех процов есть такое определение, а только у избранного круга: iom164.h iom324.h iom644.h iom644p.h iopwm2.h iopwm3.h Т.е. больше похоже на чью-то личную инициативу, нежели на общий подход. Бардак, короче.
--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
|
|
|
|
|
Mar 5 2008, 07:36
|
Знающий
   
Группа: Свой
Сообщений: 589
Регистрация: 24-04-05
Пользователь №: 4 447

|
Цитата(dxp @ Mar 5 2008, 08:55)  Регистра TIMSK там уже нет, вместо него есть TIMSK0. Бардак, короче.  Вот только мне не понятно для чего добавили 0 в имена битов SPI ? Цитата /* SPSR */ #define SPIF0 7 #define WCOL0 6 #define SPI2X0 0
/* SPCR */ #define SPIE0 7 #define SPE0 6 #define DORD0 5 #define MSTR0 4 #define CPOL0 3 #define CPHA0 2 #define SPR01 1 #define SPR00 0 Не может же быть несколько SPI-интерфейсов на борту... Или может? Мне кажется, что это они скорее сделали по привычке... Хотя в даташите указаны "правильные" имена. По поводу регистра TIMSK0... Почему не исправлено? Добавить то всего три строчки. Цитата #ifndef TIMSK0 #define TIMSK TIMSK0 #endif Если гора не идет к Магомету, то Магомет идет к горе  Цитата(dxp @ Mar 5 2008, 08:55)  Действительно, косяк. Как он вкрался, не помню хоть убей. Еще не начал работать с OS, а уже отлавливаю косяки. То ли еще будет Цитата(IgorKossak @ Mar 5 2008, 00:09)  Сдаётся мне, что если откроете overview завтра, то там окажется завтрашнее число.  Точно Цитата(alux @ Mar 4 2008, 20:09)  Имеет ли значение уровень оптимизации компилятора для smcRTOS ? Дело в том, что у jacOS есть примечание для IAR C/EC++ for AVR 4.11A/W32 : Цитата Вероятны проблемы при установке опций оптимизации Code motion (?) Cross Call (?) И последнее. Рискну задать глупый вопрос. Если в проекте используется прерывание, но оно не является источником события для процессов, обязательно ли обработчик прерывания должен иметь тип OS_INTERRUPT и на входе ISR создавать объект OS::TISRW_SS ISRW ? И можно ли разрешать глобальные прерывания до OS::Run() ?
|
|
|
|
|
Mar 5 2008, 11:14
|

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

|
Цитата(alux @ Mar 5 2008, 13:36)  Почему не исправлено? Добавить то всего три строчки. Это должы добавлять те, кто модифицируют код. Чтобы для пользователя было прозрачно и портирование рабочего кода на новый кристалл проходило по максимуму безболезненно. Цитата(alux @ Mar 5 2008, 13:36)  Если гора не идет к Магомету, то Магомет идет к горе   Цитата(alux @ Mar 5 2008, 13:36)  Еще не начал работать с OS, а уже отлавливаю косяки. То ли еще будет  Уже начали.  Кстати, у меня эта ошибка не проявилась. Видимо, потому, что вектор достал до адреса. В любом случае этот не опасный баг - он отлавливается на этапе сборки. Вот те, которые при сборке не проявляются, а на рантайме вылезают - эти опасные. Цитата(alux @ Mar 5 2008, 13:36)  И можно ли разрешать глобальные прерывания до OS::Run() ? Можно. Но зачем? Ведь после OS::Run() управление будет передано сразу процессам, они загрузят свои стеки и свои значения регистра SREG, поэтому разрешение прерываний до запуска оси смысла имеет мало. Если только не планируете долго сидеть до запуска, чтобы успеть по прерываниям попрыгать.
--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
|
|
|
|
Сообщений в этой теме
URANst Начало работы with scmRTOS Feb 20 2008, 14:56 dxp Цитата(URANst @ Feb 20 2008, 20:56) . Зат... Feb 21 2008, 04:11 URANst Вот взял из примера , это обработчик прерывания, к... Feb 21 2008, 06:50 URANst С предыдущим вроде разобрался, все оказалось проще... Feb 21 2008, 11:55 IgorKossak ENABLE_NESTED_INTERRUPTS(); - разрешить вложенные ... Feb 21 2008, 12:14 URANst Так получается что 1 прерывание сис таймера - это ... Feb 21 2008, 12:36 spf Цитата(URANst @ Feb 21 2008, 17:36) Так п... Feb 21 2008, 14:14 alux Тоже решил попробовать эту ОС. Долго не мог решитс... Mar 2 2008, 17:02 dxp Цитата(alux @ Mar 2 2008, 23:02) Выдает п... Mar 3 2008, 04:55 alux Так что же мне делать в этом конкретном случае кро... Mar 3 2008, 06:53 IgorKossak Цитата(alux @ Mar 3 2008, 08:53) Может не... Mar 3 2008, 11:53  alux Цитата(IgorKossak @ Mar 3 2008, 15:53) Су... Mar 4 2008, 15:43   IgorKossak Цитата(alux @ Mar 4 2008, 17:43) В overvi... Mar 4 2008, 20:09    Сергей Борщ Цитата(alux @ Mar 5 2008, 09:36) Вот толь... Mar 5 2008, 10:49     Сергей С. Цитата(Сергей Борщ @ Mar 5 2008, 14:49) Н... Mar 6 2008, 06:53      Сергей Борщ Цитата(Сергей С. @ Mar 6 2008, 08:53) Как... Mar 6 2008, 13:26       Сергей С. Цитата(Сергей Борщ @ Mar 6 2008, 17:26) Е... Mar 6 2008, 20:14    Stas633 И снова "уровень оптимизации".. / см.... Jul 30 2008, 18:42 alux Имеет ли значение уровень оптимизации компилятора ... Mar 4 2008, 16:09 alux Мне не понятно, почему для генерации программного ... Mar 9 2008, 21:15 Сергей Борщ Цитата(alux @ Mar 9 2008, 23:15) Мне не п... Mar 10 2008, 01:42  alux Цитата(Сергей Борщ @ Mar 10 2008, 05:42) ... Mar 10 2008, 04:40   ReAl Цитата(alux @ Mar 10 2008, 06:40) Почему?... Mar 10 2008, 09:08    alux Спасибо за разъяснение. Маленькое уточнение: sbi P... Mar 10 2008, 09:56     ReAl Цитата(alux @ Mar 10 2008, 11:56) Маленьк... Mar 10 2008, 15:36      alux Цитата(ReAl @ Mar 10 2008, 19:36) Глянул ... Mar 10 2008, 16:00       Сергей Борщ Цитата(alux @ Mar 10 2008, 18:00) Но это ... Mar 10 2008, 16:52 alux Возникло пару вопросов. Допустим, есть три процесс... Mar 11 2008, 12:37 dxp Цитата(alux @ Mar 11 2008, 18:37) И второ... Mar 11 2008, 14:03 Сергей Борщ Цитата(alux @ Mar 11 2008, 14:37) 3) Посл... Mar 11 2008, 16:48  alux Цитата(Сергей Борщ @ Mar 11 2008, 20:48) ... Mar 11 2008, 20:31   Сергей Борщ Цитата(alux @ Mar 11 2008, 22:31) Так изн... Mar 11 2008, 22:31    alux Цитата(Сергей Борщ @ Mar 12 2008, 02:31) ... Mar 12 2008, 06:48     Сергей Борщ Цитата(alux @ Mar 12 2008, 08:48) Как бы ... Mar 12 2008, 08:06     dxp Цитата(alux @ Mar 12 2008, 12:48) Согласе... Mar 12 2008, 09:06 alux Реализация меню - это отдельная тема для разговора... Mar 12 2008, 10:45 Сергей Борщ Цитата(alux @ Mar 12 2008, 12:45) PS. Нич... Mar 12 2008, 12:30  alux Спасибо, Сергей. Сам бы до этого не додумался.
... Mar 12 2008, 13:24   Сергей Борщ Цитата(alux @ Mar 12 2008, 15:24) В конст... Mar 12 2008, 16:26 alux Сделал так как Сергей сказал. За исключением того,... Mar 12 2008, 16:57 alux Проблема с повтором решена. Спасибо Сергею Борщу. ... Mar 14 2008, 08:55 alux Как узнать точное использование стека процессами? ... Mar 18 2008, 07:50 dxp Цитата(alux @ Mar 18 2008, 13:50) Как узн... Mar 18 2008, 09:02  alux Цитата(dxp @ Mar 18 2008, 13:02) Сергей Б... Mar 18 2008, 09:38   dxp Цитата(alux @ Mar 18 2008, 15:38) Что так... Mar 18 2008, 13:13  alux Цитата(dxp @ Mar 18 2008, 13:02) После эт... Mar 18 2008, 15:19   dxp Цитата(alux @ Mar 18 2008, 21:19) Уж изви... Mar 19 2008, 04:32    alux Цитата(dxp @ Mar 19 2008, 08:32) В данном... Mar 19 2008, 07:26     dxp Цитата(alux @ Mar 19 2008, 13:26) Что зна... Mar 19 2008, 09:42      alux Цитата(dxp @ Mar 19 2008, 12:42) Там все ... Jun 28 2008, 08:38       Сергей Борщ Цитата(alux @ Jun 28 2008, 11:38) Можно х... Jun 28 2008, 12:29        alux Цитата(Сергей Борщ @ Jun 28 2008, 15:29) ... Jun 28 2008, 18:11        alux Как определить размеры потребления RSTACK процесса... Apr 14 2009, 03:03         dxp Цитата(alux @ Apr 14 2009, 10:03) Как опр... Apr 14 2009, 06:04          alux Цитата(dxp @ Apr 14 2009, 09:04) Иначе (е... Apr 14 2009, 11:09           dxp Цитата(alux @ Apr 14 2009, 18:09) Не рабо... Apr 15 2009, 06:41 alux Обнаружил такую проблему. Если два процесса ждут о... Mar 19 2008, 13:15 dxp Цитата(alux @ Mar 19 2008, 19:15) Обнаруж... Mar 20 2008, 07:17  alux Цитата(dxp @ Mar 20 2008, 11:17) Возможно... Mar 21 2008, 09:07   dxp Цитата(alux @ Mar 21 2008, 15:07) Заменил... Mar 21 2008, 09:27 alux Попробовал создать отдельный ef2 для TProc2 и
Код... Mar 21 2008, 10:39 dxp Цитата(alux @ Mar 21 2008, 16:39) Попробо... Mar 21 2008, 13:58 alux Отладчиком (JTAG) не пользуюсь по причине отсутств... Mar 21 2008, 14:46 dxp Цитата(alux @ Mar 21 2008, 20:46) Отладчи... Mar 22 2008, 07:38 alux Вроде нашел еще один свой прокол : Скорость поступ... Mar 22 2008, 11:28 alux Прошу прощения за невнимательность. Проблема с обн... Mar 23 2008, 15:25 IgorKossak Цитата(alux @ Mar 23 2008, 17:25) ... в р... Mar 25 2008, 09:50 sevstels Хочу поинтересоваться, это только у меня не запуск... Mar 25 2008, 09:11 sevstels Тестировал на примерах scmRTOS v3 AVR.
Изменил тол... Mar 25 2008, 10:43 IgorKossak sevstels, приложите к сообщению файл проекта (.ewp... Mar 25 2008, 11:49 sevstels Пока пытаюсь найти причину сам.
Вот нашёл вот тут:... Mar 26 2008, 05:27 IgorKossak Цитата(sevstels @ Mar 26 2008, 07:27) DEN... Mar 26 2008, 06:23 Ykidia Здравствуйте! Есть небольшой проектик под scmR... Mar 26 2008, 10:33 spf Цитата(Ykidia @ Mar 26 2008, 15:33) Что н... Mar 26 2008, 10:42 Ykidia Хорошо-хорошо, уже создал. Зачем кричать-то? Mar 26 2008, 11:38 sevstels Игорь, в общем, ничего к сожалению не получается.
... Mar 27 2008, 03:48 IgorKossak Цитата(sevstels @ Mar 27 2008, 05:48) Иго... Mar 27 2008, 06:45  sevstels Цитата(IgorKossak @ Mar 27 2008, 15:45) Е... Apr 1 2008, 04:55 Stas633 Прошу прощения за предыдущий пост! (стыдно, н... Jul 30 2008, 20:30 Copypaster При отладке демо-приложения в IAREW v 4.11b для MS... Jul 28 2009, 11:16 IgorKossak Цитата(Copypaster @ Jul 28 2009, 14:16) П... Jul 28 2009, 12:36 Embedder74 Начал разбираться с scmRTOS.3.10. Ответьте, плз. н... Mar 24 2010, 10:09 AHTOXA Цитата(Embedder74 @ Mar 24 2010, 15:09) Н... Mar 24 2010, 12:51 dxp Цитата(Embedder74 @ Mar 24 2010, 16:09) Н... Mar 24 2010, 15:04  Embedder74 Цитата(dxp @ Mar 24 2010, 18:04) Как это ... Mar 25 2010, 06:50 Embedder74 Пользуясь случаем, хочу спросить у DXP. Когда прим... Mar 25 2010, 09:03 dxp Цитата(Embedder74 @ Mar 25 2010, 15:03) П... Mar 26 2010, 07:21 jorikdima Ну и я что ли спрошу.
Почему в проекте, написанном... Mar 26 2010, 08:46 dxp Цитата(jorikdima @ Mar 26 2010, 14:46) По... Mar 26 2010, 12:54  jorikdima Цитата(dxp @ Mar 26 2010, 15:54) Потому, ... Mar 26 2010, 13:24   Сергей Борщ Цитата(jorikdima @ Mar 26 2010, 15:24) По... Mar 26 2010, 13:40   dxp Цитата(jorikdima @ Mar 26 2010, 19:24) Со... Mar 26 2010, 14:48    jorikdima Цитата(dxp @ Mar 26 2010, 17:48) Кстати, ... Mar 27 2010, 06:51     dxp Цитата(jorikdima @ Mar 27 2010, 12:51) Пр... Mar 27 2010, 13:31      jorikdima Цитата(dxp @ Mar 27 2010, 16:31) А что, у... Mar 28 2010, 10:45
3 страниц
1 2 3 >
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|