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

 
 
> scmRTOS. Вопросы и ответы.
alexander55
сообщение Oct 1 2007, 09:35
Сообщение #1


Бывалый
*****

Группа: Свой
Сообщений: 1 584
Регистрация: 7-08-07
Пользователь №: 29 615



Из-за того, что мои предложения повисли в воздухе, решил открыть тему здесь.
У меня вопросы по scmRTOS (извините, если они покажутся дилетанскими, я только начал мучить ОС). Раньше считал, что в uC OS лишняя заморочка, сейчас уже так не считаю.
Общие вопросы для общего развития. smile.gif
1. Зачем понадобилось иметь порядок приоритетов сверху вниз (насколько я понял из-за Blackfin только). a&-a немногим проигрывает.
2. Я хочу ограничиться
#if scmRTOS_CONTEXT_SWITCH_SCHEME == 0,
т.е. использовать всегда программное прерывание.
Правильно ли это ?
3. Про OS::TChannel сказано, что этот объект оставлен для совместимости с версией 1. Рекомендуется пользоваться OS::channel.
Мне же показалось, несмотря на универсальность OS::channel, применение его для байтовых каналов слишком расточительным. Я бы рассматривал бы как чистый FIFO буфер, как-то так
#define TFIFO OS::Channel
и изменил он нем представление как об атавизме. Или я чего-то не понял ?

Платформозависимые вопросы.
Я использую LPC2148 с IAR 5.10. Использовал порт Сергея Борщ с незначительными собственными доработками.
1. Интересует особенности использования векторных прерываний, кроме системного времени. На что следует обращать внимание.
2. Или их использовать нежелательно.
PS. Не считайте мои вопросы наездом, scmRTOS - замечательная вещь. a14.gif
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
LessNik
сообщение Jan 18 2008, 07:07
Сообщение #2


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

Группа: Свой
Сообщений: 107
Регистрация: 6-09-06
Из: Москва
Пользователь №: 20 118



Цитата
Посмотрел, как в OS_Target_cpp.cpp сделан обработчик прерывания - там баг, который я исправил в своем проекте, но не перенес исправление в репозиторий. В вашем коде SystemTimerUserHook(); вызывается только если прерывание пришло от таймера. Надо сделать такое изменнение:
...


Может там ещё нужно где-то поправить? У меня периодически отваливаются прерывания от системного таймера при большой активности DBGU. Программа постоянно сидит в void OS::IdleProcessUserHook() {}

Если не трудно, можно выложить обновление здесь?
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jan 18 2008, 09:19
Сообщение #3


Гуру
******

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



Цитата(LessNik @ Jan 18 2008, 09:07) *
Может там ещё нужно где-то поправить? У меня периодически отваливаются прерывания от системного таймера при большой активности DBGU.
DBGU при этом продолжает работать?Стека для прерываний достаточно выделено?
Цитата(LessNik @ Jan 18 2008, 09:07) *
Программа постоянно сидит в void OS::IdleProcessUserHook() {}
Это нормально, если ей больше нечего делать.
Цитата(LessNik @ Jan 18 2008, 09:07) *
Если не трудно, можно выложить обновление здесь?
Да там только приведенные выше две функции OS::SystemTimer_Handler() и OS::SystemTimer_ISR() изменились. http://scmrtos.svn.sourceforge.net/viewvc/...1=71&r2=105


--------------------
На любой вопрос даю любой ответ
"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
LessNik
сообщение Jan 18 2008, 14:36
Сообщение #4


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

Группа: Свой
Сообщений: 107
Регистрация: 6-09-06
Из: Москва
Пользователь №: 20 118



Цитата(Сергей Борщ @ Jan 18 2008, 12:19) *
DBGU при этом продолжает работать?Стека для прерываний достаточно выделено?Это нормально, если ей больше нечего делать.Да там только приведенные выше две функции OS::SystemTimer_Handler() и OS::SystemTimer_ISR() изменились. http://scmrtos.svn.sourceforge.net/viewvc/...1=71&r2=105


GBGU перестаёт работать и перестаёт вызываться системное прерывание вообще OS_INTERRUPT void OS::SystemTimer_ISR() и Программа постоянно сидит в void OS::IdleProcessUserHook() {}, периодически реагируя на прерывание от другого таймера TC0.

Для верности объявил:
typedef OS::process<OS::pr0, 1000> TDBGUProc;
всё равно не работает.
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jan 19 2008, 00:47
Сообщение #5


Гуру
******

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



Цитата(LessNik @ Jan 18 2008, 16:36) *
GBGU перестаёт работать и перестаёт вызываться системное прерывание вообще OS_INTERRUPT void OS::SystemTimer_ISR() и Программа постоянно сидит в void OS::IdleProcessUserHook() {}, периодически реагируя на прерывание от другого таймера TC0.
Очень похоже, что ваша программа некорректно (без записи в AIC_EOICR) завершает какое-то из прерываний. При этом перестают вызываться прерывания с таким же и более низкими приоритетами. На это косвенно указывет и то, что программа крутится в Idle,т.е. не вызывается и переключатель контекста. Возможно, в каком-то из прерываний вы забыли завести объект OS:TISRW, в деструкторе которого и выпоняется эта запись. Если какое-либо ваше прерывание не использет никакие сервисы ОС, то можно не заводить в нем объект OS:TISRW, но тогда вы должны сами в конце этого прерывания вручную прописать AIC_EOICR.

Вот такая версия. Надеюсь, что ОС в данном случае не виновата. Но если вы все же найдете в ней недоработку-обязательно сообщите. И даже если не в ОС дело-все равно отпишитесь здесь, интересно же wink.gif

Цитата(prottoss @ Dec 13 2007, 14:18) *
кстати, в ассемблер на IAR тоже можно включать C-шные хедеры, так что я думаю, что можно побороть эту проблему.
Увы, насколько я понял рассматривая заголовочные файлы компилятора, __HAS_RAMPZ__ определяется не в заголовочном файле (который подключен к OS_Target_asm.s90), а самим компилятором на основе указанного ему типа процессора. А вот в ассемблере аналогичное определение они почем-то не сделали sad.gif Выход есть - написать в начале файла свой большой #if defined (__ATMEGA128__) и определить в нем __HAS_RAMPZ__ для всех процессоров, в которых он есть.

Надо занести это в трекер, чтобы не забыть сделать к ближайшему релизу


--------------------
На любой вопрос даю любой ответ
"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
LessNik
сообщение Jan 31 2008, 10:24
Сообщение #6


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

Группа: Свой
Сообщений: 107
Регистрация: 6-09-06
Из: Москва
Пользователь №: 20 118



Цитата(Сергей Борщ @ Jan 19 2008, 03:47) *
Надеюсь, что ОС в данном случае не виновата. Но если вы все же найдете в ней недоработку-обязательно сообщите. И даже если не в ОС дело-все равно отпишитесь здесь, интересно же wink.gif


Нашёл!

При настройке AIC, нужно использовать не AT91C_AIC_SRCTYPE_INT_POSITIVE_EDGE, как было в примере, а AT91C_AIC_SRCTYPE_INT_HIGH_LEVEL. Тогда всё работает стабильно:

Код
AT91C_BASE_AIC->AIC_SMR[AT91C_ID_SYS] = AT91C_AIC_SRCTYPE_INT_HIGH_LEVEL/*AT91C_AIC_SRCTYPE_INT_POSITIVE_EDGE*/ | AT91C_AIC_PRIOR_LOWEST + 1;
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- alexander55   scmRTOS. Вопросы и ответы.   Oct 1 2007, 09:35
- - dxp   Цитата(alexander55 @ Oct 1 2007, 16:35) 1...   Oct 1 2007, 11:11
|- - alexander55   Цитата(dxp @ Oct 1 2007, 15:11) Вы сравни...   Oct 1 2007, 12:49
|- - dxp   Цитата(alexander55 @ Oct 1 2007, 19:49) П...   Oct 1 2007, 13:10
- - Сергей Борщ   Цитата(alexander55 @ Oct 1 2007, 12:35) И...   Oct 1 2007, 11:42
|- - alexander55   Цитата(Сергей Борщ @ Oct 1 2007, 15:42) В...   Oct 1 2007, 13:36
|- - Сергей Борщ   Цитата(alexander55 @ Oct 1 2007, 16:36) Х...   Oct 1 2007, 14:53
|- - alexander55   Цитата(Сергей Борщ @ Oct 1 2007, 18:53) Н...   Oct 2 2007, 04:43
|- - Сергей Борщ   Цитата(alexander55 @ Oct 2 2007, 07:43) P...   Oct 2 2007, 07:57
|- - alexander55   [quote name='Сергей Борщ' date='Oct 2 ...   Oct 2 2007, 09:19
|- - Сергей Борщ   Цитата(alexander55 @ Oct 2 2007, 12:19) С...   Oct 2 2007, 09:49
|- - alexander55   Вопрос. Как в scmRTOS организовать карусель скажем...   Oct 3 2007, 06:28
|- - dxp   Цитата(alexander55 @ Oct 3 2007, 13:28) В...   Oct 3 2007, 07:24
||- - alexander55   Цитата(dxp @ Oct 3 2007, 11:24) Никак. А ...   Oct 3 2007, 07:40
||- - alexander55   Цитата(alexander55 @ Oct 3 2007, 11:40) В...   Oct 3 2007, 09:46
||- - Сергей Борщ   Цитата(alexander55 @ Oct 3 2007, 12:46) Х...   Oct 3 2007, 10:38
||- - alexander55   Цитата(Сергей Борщ @ Oct 3 2007, 14:38) [...   Oct 3 2007, 11:01
||- - alexander55   Правильно ли я понимаю, что минимальный джентальм...   Oct 4 2007, 07:34
||- - Сергей Борщ   Цитата(alexander55 @ Oct 4 2007, 10:34) П...   Oct 4 2007, 10:00
||- - alexander55   Цитата(Сергей Борщ @ Oct 4 2007, 14:00) Н...   Oct 4 2007, 10:36
||- - dxp   Цитата(alexander55 @ Oct 4 2007, 17:36) И...   Oct 4 2007, 11:53
||- - alexander55   Спасибо всем за ответы. Предлагаю выкладывать в эт...   Oct 8 2007, 05:44
||- - dxp   Цитата(alexander55 @ Oct 8 2007, 12:44) С...   Oct 8 2007, 06:03
|||- - alexander55   Цитата(dxp @ Oct 8 2007, 10:03) КодOS_PRO...   Oct 8 2007, 07:46
||- - Сергей Борщ   Цитата(alexander55 @ Oct 8 2007, 08:44) К...   Oct 8 2007, 08:05
||- - alexander55   Цитата(Сергей Борщ @ Oct 8 2007, 12:05) О...   Oct 8 2007, 11:12
||- - Сергей Борщ   Цитата(alexander55 @ Oct 8 2007, 14:12) P...   Oct 8 2007, 11:27
||- - alexander55   Цитата(Сергей Борщ @ Oct 8 2007, 15:27) Н...   Oct 8 2007, 11:58
||- - Сергей Борщ   Цитата(alexander55 @ Oct 8 2007, 14:58) З...   Oct 8 2007, 13:27
||- - alexander55   Цитата(Сергей Борщ @ Oct 8 2007, 17:27) К...   Oct 9 2007, 04:41
||- - Сергей Борщ   Цитата(alexander55 @ Oct 9 2007, 07:41) c...   Oct 9 2007, 10:24
||- - dxp   Цитата(Сергей Борщ @ Oct 9 2007, 17:24) В...   Oct 9 2007, 12:47
||- - alexander55   Цитата(dxp @ Oct 9 2007, 16:47) Мущщины, ...   Oct 9 2007, 13:05
||- - Сергей Борщ   Цитата(alexander55 @ Oct 9 2007, 16:05) Я...   Oct 9 2007, 14:24
|||- - alexander55   Цитата(Сергей Борщ @ Oct 9 2007, 18:24) Н...   Oct 10 2007, 04:27
|||- - alexander55   Цитата(alexander55 @ Oct 10 2007, 08:27) ...   Oct 11 2007, 05:52
||- - dxp   Цитата(alexander55 @ Oct 9 2007, 20:05) В...   Oct 10 2007, 03:57
||- - ReAl   "UP" Цитата(dxp @ Oct 10 2007, ...   Nov 9 2007, 16:15
||- - alexander55   Цитата(ReAl @ Nov 9 2007, 19:15) А если з...   Nov 12 2007, 07:04
|- - spf   Цитата(alexander55 @ Oct 3 2007, 12:28) В...   Oct 3 2007, 07:28
- - prottoss   Привет всем! решил поиграться с scmRTOS. Скача...   Dec 8 2007, 14:37
|- - dxp   Цитата(prottoss @ Dec 8 2007, 20:37) Это ...   Dec 8 2007, 15:29
|- - prottoss   Цитата(dxp @ Dec 8 2007, 22:29) А разве о...   Dec 8 2007, 15:44
- - prottoss   Вроде бы нашел косяк: Я использую в проекте ATmega...   Dec 8 2007, 18:06
|- - dxp   Цитата(prottoss @ Dec 9 2007, 00:06) В фа...   Dec 8 2007, 20:12
|- - prottoss   Цитата(dxp @ Dec 9 2007, 03:12) Макрос HA...   Dec 9 2007, 09:43
- - ReAl   В порте для avr-gcc с этим проще. Тип процессора п...   Dec 13 2007, 10:07
|- - prottoss   Цитата(ReAl @ Dec 13 2007, 17:07) В порте...   Dec 13 2007, 12:18
- - bus16   Вот тоже появилось пара вопросов по мютексам: 1 Си...   Dec 27 2007, 07:28
|- - jorikdima   Цитата(bus16 @ Dec 27 2007, 10:28) Вот то...   Dec 27 2007, 09:32
|- - bus16   С 1 - понятно, хотел просто уточнить. Цитата(jorik...   Dec 27 2007, 09:45
|- - dxp   Цитата(bus16 @ Dec 27 2007, 15:45) Mutex-...   Dec 27 2007, 13:24
- - jorikdima   В том изаключается мягкость, что если ресурс уже з...   Dec 27 2007, 13:27
- - LessNik   Возник вопрос по обработке прерываний от системной...   Jan 17 2008, 07:35
|- - Сергей Борщ   Цитата(LessNik @ Jan 17 2008, 09:35) Пере...   Jan 17 2008, 08:59
|- - LessNik   Всё заработало. Пока ещё не смог сломать Цитат...   Jan 17 2008, 13:07
- - LessNik   Цитата(Сергей Борщ @ Jan 19 2008, 03:47) ...   Jan 22 2008, 06:40
|- - Сергей Борщ   Цитата(LessNik @ Jan 22 2008, 08:40) Полу...   Jan 22 2008, 08:05
- - Сергей Борщ   Цитата(LessNik @ Jan 31 2008, 12:24) При ...   Jan 31 2008, 13:02
- - spf   Цитата(Сергей Борщ @ Jan 31 2008, 18:02) ...   Feb 2 2008, 03:25
- - IgorKossak   Цитата(spf @ Feb 2 2008, 05:25) И туда: [...   Feb 3 2008, 10:33
- - zltigo   Цитата(IgorKossak @ Feb 3 2008, 13:33) Не...   Feb 3 2008, 10:47
- - Сергей Борщ   Цитата(IgorKossak @ Feb 3 2008, 12:33) Ош...   Feb 3 2008, 11:30
- - spf   Цитата(IgorKossak @ Feb 3 2008, 15:33) Не...   Feb 4 2008, 15:21
- - IgorKossak   Цитата(spf @ Feb 4 2008, 17:21) Все работ...   Feb 5 2008, 06:11
- - spf   Цитата(IgorKossak @ Feb 5 2008, 11:11) По...   Feb 5 2008, 08:31


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

 


RSS Текстовая версия Сейчас: 28th June 2025 - 06:39
Рейтинг@Mail.ru


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