Alf256
Jul 21 2010, 17:18
Дело было с IAR 5.41. Беру готовый проект 3-Channal и прикручиваю к нему простейшие дрова для обмена по порту USART1 в асинхронном режиме (буквально считать порт и кинуть в переменную). До использования ОС дрова работали прекрасно и всего навсего вводили один байт по прерыванию RX. Все остальные прерывания запрещены. Пытаюсь запустить то же прерывание с ОС и ничего не работает. ось виснет, а обработчик даже не вызывается. Проверил на чистом проекте в симуляторе - обработчик на месте. Какие могут быть косяки? Я юзаю ось 2-3 дня но уже теряюсь в догадках куда улетает прерывание.
P.S. был бы JTAG наверное не спрашивал бы, хотя...
igorenja
Jul 22 2010, 02:30
Цитата(Alf256 @ Jul 22 2010, 00:18)

.....Какие могут быть косяки?....
Вот это читали? Там всё подробно описано о том как оформляется обработчики прерываний
Alf256
Jul 22 2010, 04:01
Это я читал, но наверно не внимательно. Обнаружил что область векторов в загрузочном коде где-то с адреса вектора чуть выше системного таймера (начиная с 40h по EBh) забивается FF. А при компиляции линкер сообщает что не знает что такое __vector_table. Я использовал стандартный набор библиотек в комплекте с иаром только для инициализации. наверно попробую заново создать на базе рабочего примера, постепенно по шагам отслеживая работоспособность - написал ещё не много, а разбираться долго.
Нашёл косяк но не знаю как его теперь исправить.
Я создал вручную копию проекта демки из 1-EventFlag, т.е.скопировал все исходники и вручную поставил такие же опции.
В результате в оригинальном проекте вектора берутся из файла stm32f10x_vector, а в созданном из cstartup_M.
строки мап файла оригинала:
__vector_table 0x08000000 0xec Data Gb stm32f10x_vector.o [1]
и созданного
__vector_table 0x08000000 Data Gb cstartup_M.o [4]
состав проктов одинаковый все файлы нового проекта просто копии - я ничего абсолютно не менял - я так понимаю что где то не указал галку в настройках но не пойму где, вроде опции все полностью аналогичны.