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

 
 
 
Reply to this topicStart new topic
> знатокам связки арм7 и укоса
IV_K
сообщение Nov 24 2006, 15:31
Сообщение #1


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

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



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

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

PS стеки задач не переполняются, стеки irq fiq не переполняются.. проверено.. никакие переменные в стеки задач тож не лезут..
Go to the top of the page
 
+Quote Post
zltigo
сообщение Nov 24 2006, 18:49
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



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

??? Вот просто так? Разные стеки, разный сохраняемый контекст и повесили вместо штатного для uCOS
IRQ на FIQ без сопутствующих изменений в шедулере? Так тогда глюки чего-то маленькие были :-)


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
IV_K
сообщение Nov 25 2006, 13:06
Сообщение #3


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

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



тут в общем дело такое.. http://caxapa.ru/74627.html
там описан как раз мой случай насчет дефолтного вектора.
но проблема в том, что некорректно обрабатывается дефолтное прерывание. разбираться буду.. насчет изменений в шедулере - в порте укоса есть обработчик fiq и обрабатывается все вроде корректно. глюк только при spurior interrupt
Go to the top of the page
 
+Quote Post
zltigo
сообщение Nov 25 2006, 18:32
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(IV_K @ Nov 25 2006, 12:06) *
...

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

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


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post

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

 


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


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