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

 
 
> Зависает один процесс
kurtis
сообщение Mar 31 2010, 12:30
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 466
Регистрация: 21-06-05
Пользователь №: 6 205



Здравствуйте!
Столкнулся с проблемой зависания процесса, который занимается аналоговыми измерениями. Всего в системе 4 процесса, приоритеты распределены следующим образом
Код
#define ANMEAS_PRI  (OS::pr1) /* Аналоговые измерения */
#define UART0_PRI   (OS::pr0) /* Работа с UART */
#define TECHNO_PRI  (OS::pr3) /* Технология (логика работы программы) */
#define PERIPH_PRI  (OS::pr2) /* Работа с периферийными устройствами */

Если я меняю значение приоритета ANMEAS_PRI на максимальный (с OS::pri1 на OS::pri0) то зависания пропадают. Проблема в том что я не могу разобраться почему в одном случае оно работает, а в другом - нет.
Исходный код доступен здесь.
Для поиска неисправностей, я написал небольшой макрос (SET_INFO(x)), который посылает в UART текущий номер, все вызовы макроса расположены в порядке возрастания порядкового номера. Модифицированный вариант исходника лежит здесь.
Таким образом установил, что после зависания процесса, в UART отправляется число 26
Код
104         }
105         SET_INFO(26);
106
107         Sleep(5,5);// 11 mc
108         SET_INFO(27);
109         LED_Out_Str[24] = GREEN_LAMP;
110         SET_INFO(28);
Т.е. прямо перед вызовом функции Sleep(). Далее я перегрузил функцию Sleep() (чтоб вызывалась конкретная функция только для одного процесса), и модифицировал по описанной выше методике, получилось такое
Код
void TBaseProcess::Sleep(TTimeout timeout, uint8_t huita)
{
    {
    TCritSect cs;

    SET_INFO(30);
    Kernel.ProcessTable[Kernel.CurProcPriority]->Timeout = timeout;
    SET_INFO(31);
    Kernel.SetProcessUnready(Kernel.CurProcPriority);
    SET_INFO(32);
    Kernel.Scheduler();
    SET_INFO(33);
    }
    SET_INFO(34);
}
Теперь последнее отправляемое число в UART 32, т.е. прямо перед вызовом Kernel.Scheduler(). Дальше лезть страшно.

В чем может возникать проблема что при смене приоритетов процесс наглухо зависает? Может есть какие-то рекомендации, чего делать не стоит или у меня какие-то существенные ошибки в описании процесса?
Заранее Спасибо!:))

P.S. Версия scmRTOS 3.10, компилятор avr-gcc (4.3.3)
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
kurtis
сообщение Mar 31 2010, 13:32
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 466
Регистрация: 21-06-05
Пользователь №: 6 205



В том то и проблема что я не понимаю почему зависает и зависает он именно в Sleep().
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- kurtis   Зависает один процесс   Mar 31 2010, 12:30
- - jorikdima   Для начала разберитесь, почему зависает? Зависнуть...   Mar 31 2010, 13:22
|- - Сергей Борщ   Цитата(kurtis @ Mar 31 2010, 15:32) В том...   Mar 31 2010, 13:42
- - kurtis   да   Mar 31 2010, 13:50
|- - Сергей Борщ   Я это к чему: Я дописал маленький отладочный кусоч...   Mar 31 2010, 14:19
|- - AHTOXA   Цитата(Сергей Борщ @ Mar 31 2010, 20:19) ...   Mar 31 2010, 14:37
|- - Сергей Борщ   Цитата(AHTOXA @ Mar 31 2010, 16:37) А есл...   Mar 31 2010, 15:21
- - kurtis   2 Сергей Борщ Попробовал вашу методику. Поместил в...   Mar 31 2010, 18:15
|- - dxp   Цитата(kurtis @ Apr 1 2010, 01:15) 2 Серг...   Apr 1 2010, 03:21
|- - BAT   Столкнулся с похожей проблемой. Есть проект, где в...   Mar 29 2011, 12:31
|- - dxp   Цитата(BAT @ Mar 29 2011, 19:31) Какие, х...   Mar 30 2011, 03:02
|- - AHTOXA   Цитата(BAT @ Mar 29 2011, 18:31) Стек не ...   Mar 30 2011, 05:34
|- - BAT   Цитата(AHTOXA @ Mar 30 2011, 08:34) Меня ...   Mar 30 2011, 06:33
|- - BAT   CODETStackItem* OS::TKernel::ContextSwitchHook(TSt...   Mar 30 2011, 08:18
|- - dxp   Цитата(BAT @ Mar 30 2011, 15:18) Туда я д...   Mar 30 2011, 12:56
|- - AHTOXA   Цитата(dxp @ Mar 30 2011, 18:56) Да, доба...   Mar 30 2011, 14:15
|- - dxp   Цитата(AHTOXA @ Mar 30 2011, 21:15) В пор...   Mar 31 2011, 05:04
|- - AHTOXA   Цитата(dxp @ Mar 31 2011, 11:04) Ты про с...   Mar 31 2011, 05:23
|- - dxp   Цитата(AHTOXA @ Mar 31 2011, 12:23) Это у...   Mar 31 2011, 10:15
- - a9d   У меня один раз косяк был, когда я для межпроцессо...   Mar 29 2011, 13:43
- - BAT   Остальные данные в объектах-процессах не портятся....   Mar 30 2011, 13:19
- - kostyan   Аналогично BATу, словил зависание процесса. Встава...   Jun 5 2012, 03:53
|- - _Артём_   Цитата(kostyan @ Jun 5 2012, 06:53) Анало...   Jun 7 2012, 08:31
- - kostyan   3.11   Jun 8 2012, 07:34


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

 


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


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