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

 
 
> Начало работы with scmRTOS, Несколько вопросиков
URANst
сообщение Feb 20 2008, 14:56
Сообщение #1


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

Группа: Новичок
Сообщений: 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 пока входит очень туманно или вообще не входит.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
alux
сообщение Mar 4 2008, 14:13
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 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. Не помогло. Как решить эту проблему?
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Mar 4 2008, 16:02
Сообщение #3


Гуру
******

Группа: Модераторы
Сообщений: 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)
Go to the top of the page
 
+Quote Post
dxp
сообщение Mar 5 2008, 04:55
Сообщение #4


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? А если заменили, то и вставили бы код для совместимости. И такие косяки у них с незапамятных времен. Такое впечатление, что о портировании кода даже внутри семейства они вообще не думают, а заголовки для разных процов лабают разные люди, которые никак свои действия друг с другом не координируют. sad.gif

Про упомянутое

/* 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

Т.е. больше похоже на чью-то личную инициативу, нежели на общий подход. Бардак, короче. sad.gif


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post
alux
сообщение Mar 5 2008, 07:36
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 589
Регистрация: 24-04-05
Пользователь №: 4 447



Цитата(dxp @ Mar 5 2008, 08:55) *
Регистра TIMSK там уже нет, вместо него есть TIMSK0. Бардак, короче. sad.gif
Вот только мне не понятно для чего добавили 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

Если гора не идет к Магомету, то Магомет идет к горе wink.gif
Цитата(dxp @ Mar 5 2008, 08:55) *
Действительно, косяк. Как он вкрался, не помню хоть убей.
Еще не начал работать с OS, а уже отлавливаю косяки. То ли еще будет wink.gif
Цитата(IgorKossak @ Mar 5 2008, 00:09) *
Сдаётся мне, что если откроете overview завтра, то там окажется завтрашнее число. cool.gif
Точно smile.gif
Цитата(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() ?
Go to the top of the page
 
+Quote Post
dxp
сообщение Mar 5 2008, 11:14
Сообщение #6


Adept
******

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



Цитата(alux @ Mar 5 2008, 13:36) *
Почему не исправлено? Добавить то всего три строчки.

Это должы добавлять те, кто модифицируют код. Чтобы для пользователя было прозрачно и портирование рабочего кода на новый кристалл проходило по максимуму безболезненно.

Цитата(alux @ Mar 5 2008, 13:36) *
Если гора не идет к Магомету, то Магомет идет к горе wink.gif

sad.gif

Цитата(alux @ Mar 5 2008, 13:36) *
Еще не начал работать с OS, а уже отлавливаю косяки. То ли еще будет wink.gif

Уже начали. smile.gif Кстати, у меня эта ошибка не проявилась. Видимо, потому, что вектор достал до адреса. В любом случае этот не опасный баг - он отлавливается на этапе сборки. Вот те, которые при сборке не проявляются, а на рантайме вылезают - эти опасные.

Цитата(alux @ Mar 5 2008, 13:36) *
И можно ли разрешать глобальные прерывания до OS::Run() ?

Можно. Но зачем? Ведь после OS::Run() управление будет передано сразу процессам, они загрузят свои стеки и свои значения регистра SREG, поэтому разрешение прерываний до запуска оси смысла имеет мало. Если только не планируете долго сидеть до запуска, чтобы успеть по прерываниям попрыгать.


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- 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 страниц V   1 2 3 >


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

 


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


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