Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: знатокам связки арм7 и укоса
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
IV_K
проц tms470. подозреваю, что на других армах тоже есть вероятность сего глюка..
вобщем эпопея началась с того, что проц иногда падал в исключение причем с разными временными интервалами от 10мин. до часа..
установками бряков на критичные участки кода выяснил, что попадает в прерывание с регистром смещения для вектора = 0, что в принципе быть не должно.. но это еще пол-беды.
при выходе из прерывание падает в тумб!! ну и есс-но попадает в исключение.. весь проект в арм режиме..
вобщем стал ковырять возврат из прерывания.. стек при выходе оказался смещен на 4 байта! непонятно почему..
методом научного тыка проблему конечно устранил..
системный таймер был на fiq, переключил на irq. глюк исчез..
но непонятна причина явления..
шестым чуством чую, то где-то есть наложение fiq на irq, но доказать не могу.. в укосе же в прерываниях в cpsr они ЗАПРЕЩЕНЫ!! или я не прав? у меня в проге нигде внутри прерываний не разрешаются.. переменная IntNesting не превышает 1.. смотрел во всех критичных местах..
один раз было вобще непонятно что.. отладчиком попадаю как раз в то прерывание, после которого падает в тумб.. НО все сработало нормально !! что-то там щелкнуло (виртуально) и выпал в идл таск.. после этого проц простоял несколько часов, пока я ему прогу не перешил.. надоело ждать..

кто что присоветует? не дайте дураком помереть! у меня с tms470 уже личные счеты.. =))

PS стеки задач не переполняются, стеки irq fiq не переполняются.. проверено.. никакие переменные в стеки задач тож не лезут..
zltigo
Цитата(IV_K @ Nov 24 2006, 14:31) *
системный таймер был на fiq, переключил на irq. глюк исчез..

??? Вот просто так? Разные стеки, разный сохраняемый контекст и повесили вместо штатного для uCOS
IRQ на FIQ без сопутствующих изменений в шедулере? Так тогда глюки чего-то маленькие были :-)
IV_K
тут в общем дело такое.. http://caxapa.ru/74627.html
там описан как раз мой случай насчет дефолтного вектора.
но проблема в том, что некорректно обрабатывается дефолтное прерывание. разбираться буду.. насчет изменений в шедулере - в порте укоса есть обработчик fiq и обрабатывается все вроде корректно. глюк только при spurior interrupt
zltigo
Цитата(IV_K @ Nov 25 2006, 12:06) *
...

Какая-то каша :-(....
Для начала попробуйте четко уяснить отличия между FIQ и IRQ.
Цитата
насчет изменений в шедулере - в порте укоса есть обработчик fiq

Я не великий специалист по uCOS но портов с шедулером на FIQ видеть не приходилось, а если кто-то и сваял, то правильность ваяния не гарантировал уж точно.
Вы в своих словах уверены? И (повторяюсь) понимаете различия FIQ и IRQ и то, что шедулер "просто так" не "переключается" с одного на другой.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.