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

 
 
18 страниц V  « < 3 4 5 6 7 > »   
Reply to this topicStart new topic
> Начало работы with scmRTOS, Несколько вопросиков
dxp
сообщение Mar 22 2008, 07:38
Сообщение #61


Adept
******

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



Цитата(alux @ Mar 21 2008, 20:46) *
Отладчиком (JTAG) не пользуюсь по причине отсутствия свободных выводов. Наблюдаю визуально по программе: перестает реагировать на кнопки и не выводит результат на экран через очередь сообщений.

Т.е. отладкой вообще не пользуетесь. sad.gif Это не есть гуд. Почти всегда необходимо иметь какой-то канал для отладки - не JTAG, так вывод на терминал (а еще лучше их оба, т.е. они вполне комплементарны), не вывод на терминал, так вывод еще куда-нибудь, но так, чтобы этот канал был усточивым к траблам в программе. Да хоть ножкой МК помахать. Если у вас есть экран, то, может, на него попробовать выводить отладочную инфу, если это не сложно.

Цитата(alux @ Mar 21 2008, 20:46) *
А в чем же дело? Два процесса ждут Signal, каждый от своего EventFlag. В процессах после Wait() идет Sleep(). Когда из третьего процесса (из п. меню) даю ef1.Signal() и ef2.Signal() для процессов, то все виснет. В смысле остальные процессы не работают. Что я делаю не так ? 05.gif

Не могу сказать, "удаленно лечить не умею" smile.gif. Попробуйте на симуляторе прогнать, возможно, там можно будет увидеть проблему.

Про OS::EventFlag мы знаем только один баг, и он проявляется в ситуации, когда два процесса ждут одновременно одного и того же флага. Общего утвержденного решения пока нет - есть частные, но они имеют проблемы с совместимостью поведения. Наиболее близким к желаемому вариантом является bug_1878045_fix, но он пока как следует не оттестирован, ждет своей очереди. Но два отдельных непересекающихся флага - это не сюда.

В общем, попробуйте наладить какой-то канал отладки в железе и/или погонять в симуляторе - если ошибка логическая, то там ее несложно будет отловить.


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


Знающий
****

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



Вроде нашел еще один свой прокол : Скорость поступления данных из TMeasure в канал по крайней мере в 5 раз выше, чем скорость считывания из канала в TProcLCD. Возможно из-за этого были проблемы. Пока проверить не могу. Позже сообщу. По поводу симулятора. Как раз об этом думаю. Осталось разобраться с написанием макросов для симуляции прерываний и периферии. Заодно можно будет посмотреть использование стека каждым процессом.

PS. Перед отправкой в канал сделал проверку свободного места:
Код
          if(MsgQueue.get_count() < 3)
            MsgQueue.push(&ReDraw);

Проверил. Проблема осталась. Т.е. когда два процесса ждут каждый свой EventFlag , то при подаче Сигналов из третьего процесса, программа виснет. То же самое и для одного общего флага. Кроме этого не могу понять, почему максимально возможное значение АЦП 0xffffff , которое я отправляю через очередь сообщений для TProcLCD, на индикатор выводится 0x4b7fffff. В данным момент в канал больше никто ничего не посылает. Проверял printf действительное значение АЦП перед запуском ОС (0xffffff) ? sad.gif


PS2. Так, это уже слишком... При входе в пункт меню устанавливаю глобальный флаг (не EventFlag): Flags |= MEASURE; В процессе TMeasure в качестве отладки использую инвертирование знакоместа на ЖКИ и printf:
Код
OS_PROCESS void TMeasure::Exec()    //TProc1
{
    for(;;)
    {
      monitoring.Wait();
      
//      while(Flags & MEASURE)
      for(unsigned char i=0;i<20;i++)
      {      
        PCInt1.Wait();    // Ждем окончания преобразования АЦП (RDY => 0)
        //measure();  
        MsgQueue.push(&Blink);
        printf_P("\n\rFlags: %d\n", Flags);
        Sleep(500);
      }
    }
}
Выяснилось, что после нулевой итерации Flags = 1, а после первой Flags=0 ! При этом в других процессах нет обращений к Flags. Что за... 07.gif Почему обнуляется глобальный флаг?
Go to the top of the page
 
+Quote Post
alux
сообщение Mar 23 2008, 15:25
Сообщение #63


Знающий
****

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



Прошу прощения за невнимательность. Проблема с обнулением глобального флага связана с использованием ф-ции printf.

PS. Кстати, этот маленький эксперимент с printf натолкнул меня на мысль, что возможная проблема с неправильным выводом данных на ЖКИ (0x4b7fffff вместо 0xffffff) связана с тем, что в реализации ReDraw используются функция-"пожиратель" стека: sprintf_P. А под процесс ProcLCD, в котором используется этот метод выделено 200 байт. Необходимо заменить sprintf на что-нибудь полегче. И к тому же это могло приводить к зависанию программы. Я прав?
Go to the top of the page
 
+Quote Post
sevstels
сообщение Mar 25 2008, 09:11
Сообщение #64


Знающий
****

Группа: Участник
Сообщений: 626
Регистрация: 3-12-07
Пользователь №: 32 910



Хочу поинтересоваться, это только у меня не запускается симулятор IAR в проекте с scmRTOS, или так и должно быть?
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Mar 25 2008, 09:50
Сообщение #65


Шаман
******

Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



Цитата(alux @ Mar 23 2008, 17:25) *
... в реализации ReDraw используются функция-"пожиратель" стека: sprintf_P. А под процесс ProcLCD, в котором используется этот метод выделено 200 байт. Необходимо заменить sprintf на что-нибудь полегче. И к тому же это могло приводить к зависанию программы. Я прав?

Более чем правы.

Цитата(sevstels @ Mar 25 2008, 11:11) *
Хочу поинтересоваться, это только у меня не запускается симулятор IAR в проекте с scmRTOS, или так и должно быть?

У меня запускается и симулятор и эмулятор.
А без scmRTOS запускается? Или что Вы понимаете под фразой "не запускается"?
Go to the top of the page
 
+Quote Post
sevstels
сообщение Mar 25 2008, 10:43
Сообщение #66


Знающий
****

Группа: Участник
Сообщений: 626
Регистрация: 3-12-07
Пользователь №: 32 910



Тестировал на примерах scmRTOS v3 AVR.
Изменил только настройки для работы с симулятором.
Компилируется идеально, без ошибок или предупреждений.
Но старт отладки не происходит. Стал искать наличие *.d90, его нигде нет .... хотя в окне workspace он присутствует. Открыл несколько своих старых проектов, там симулятор работает без проблем.

Подумал, что в EWL версии ввели ограничение на размер кода.
Установил полную версию IAR 5.10a
Результат тот же - ни в одном примере c scmRTOS симулятор не работает и *.d90 не создаётся... sad.gif


--------------------
Herz - дятел.
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Mar 25 2008, 11:49
Сообщение #67


Шаман
******

Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



sevstels, приложите к сообщению файл проекта (.ewp) и файл .ewd с настройками отладчика.
Go to the top of the page
 
+Quote Post
sevstels
сообщение Mar 26 2008, 05:27
Сообщение #68


Знающий
****

Группа: Участник
Сообщений: 626
Регистрация: 3-12-07
Пользователь №: 32 910



Пока пытаюсь найти причину сам.
Вот нашёл вот тут:
http://scmrtos.sourceforge.net/releases/avr/

-DENABLE_BIT_DEFINITIONS
-I$TOOLKIT_PATH$\AVR\inc
-I$TOOLKIT_PATH$\AVR\inc\dlib

TOOLKIT_PATH - отсутствует такое определение в IAR5.10
Есть TOOLKIT_DIR, см EWAVR_UserGuide.pdf стр 263(303)

DENABLE_BIT_DEFINITIONS - тоже не нашёл такого нигде..
а вот ENABLE_BIT_DEFINITIONS есть


--------------------
Herz - дятел.
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Mar 26 2008, 06:23
Сообщение #69


Шаман
******

Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



Цитата(sevstels @ Mar 26 2008, 07:27) *
DENABLE_BIT_DEFINITIONS - тоже не нашёл такого нигде..
а вот ENABLE_BIT_DEFINITIONS есть

Это одно и то же (одно в xcl файле, другое в настройках).
Опцию линкера -D смотрите.
Go to the top of the page
 
+Quote Post
Ykidia
сообщение Mar 26 2008, 10:33
Сообщение #70


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

Группа: Свой
Сообщений: 80
Регистрация: 3-08-06
Пользователь №: 19 287



Здравствуйте! Есть небольшой проектик под scmRTOS, ранее созданный для IAR EWARM 4.41, микроконтроллер LPC2148. Поставил EWARM 5.11 для пробы, но как-то не удается сделать так, чтобы, как и раньше, в векторах по адресам #00-#3F мирно сосуществовали как части из стандартного cstartup, так и части из OS_Target_asm. Поменял сегменты на секции, ORG на LTORG и т.д., но при компиляции в векторах присутствует либо только код из cstartup (т.е. нет частей ОС для программного и аппаратных IRQ/FIQ прерываний), либо только из OS_Target_asm (т.е. по 0-му вектору например находится какой-то мусор). Пытался менять :ROOT(x) в строках объявлений секций, что и приводило к вытеснению либо содержимого cstartup.s, либо OS_Target_asm.s.
Что нужно сделать либо есть может у кого уже адаптированный OS_Target_asm.s для EWARM 5.11 ? Спасибо.
Go to the top of the page
 
+Quote Post
spf
сообщение Mar 26 2008, 10:42
Сообщение #71


Странник
****

Группа: Свой
Сообщений: 766
Регистрация: 29-08-05
Из: Екатеринбург
Пользователь №: 8 051



Цитата(Ykidia @ Mar 26 2008, 15:33) *
Что нужно сделать либо есть может у кого уже адаптированный OS_Target_asm.s для EWARM 5.11 ? Спасибо.


Господа! Ну зачем все пихать в одну тему ?????

Почему нельзя создать новую, в которой и будет обсуждаться конкретный вопрос?

PS:
А еще лучше задать вопрос в рассылке scmRTOS.


--------------------
"Как много есть на свете вещей, которые мне не нужны!" Сократ
Go to the top of the page
 
+Quote Post
Ykidia
сообщение Mar 26 2008, 11:38
Сообщение #72


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

Группа: Свой
Сообщений: 80
Регистрация: 3-08-06
Пользователь №: 19 287



Хорошо-хорошо, уже создал. Зачем кричать-то? smile.gif
Go to the top of the page
 
+Quote Post
sevstels
сообщение Mar 27 2008, 03:48
Сообщение #73


Знающий
****

Группа: Участник
Сообщений: 626
Регистрация: 3-12-07
Пользователь №: 32 910



Игорь, в общем, ничего к сожалению не получается.
Файл *.d90 создаётся, но симулятор всё равно не работает.
Прикрепленные файлы
Прикрепленный файл  prj.zip ( 5.42 килобайт ) Кол-во скачиваний: 45
 


--------------------
Herz - дятел.
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Mar 27 2008, 06:45
Сообщение #74


Шаман
******

Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



Цитата(sevstels @ Mar 27 2008, 05:48) *
Игорь, в общем, ничего к сожалению не получается.
Файл *.d90 создаётся, но симулятор всё равно не работает.

С Вашими настройками симулятор запустился и работает.
Попробуйте отключить опцию Debugger->Setup->Setup macros на случай если подхватываются левые макросы. Отключите плагины Debugger->Plugins если они криво встали. Если ничего не поможет, переустановите продукт.
Go to the top of the page
 
+Quote Post
sevstels
сообщение Apr 1 2008, 04:55
Сообщение #75


Знающий
****

Группа: Участник
Сообщений: 626
Регистрация: 3-12-07
Пользователь №: 32 910



Цитата(IgorKossak @ Mar 27 2008, 15:45) *
Если ничего не поможет, переустановите продукт.


Ничего не помогло, переустановка тоже.
А спасло простое нажатие на кнопочку "Factory Settings" по пути: Project->Options->Simulator->Factory Settings. Странно конечно, нет там вроде никаких установок. Но заработало ... 07.gif


--------------------
Herz - дятел.
Go to the top of the page
 
+Quote Post

18 страниц V  « < 3 4 5 6 7 > » 
Reply to this topicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 


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


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