Страница 2 из 3
Re: STM32, IAR и прерывания
Добавлено: Вт июл 30, 2013 12:33:57
Galizin
А таблица прерываний в свою очередь описана в startup файле (что нибудь типа startup_stm32f10x_ld.s). Названия в этом файле и название функции обработчика должны совпадать.
Если попадает в hard fault exeption обработчик, то это и означает что этот самый hard fault exeption случился. Скорее всего название функции прерывания здесь ни при чем.
Нужно почитать документацию на cortex ядро. Там есть регистр(ы). который расшифровывает в каком именно месте этот самый hard fault exeption случился и по какой причине.
STM32F10xxx Cortex-M3 programming manual
PM0056
Programming manual
2.4 Fault handling
Особое внимание нужно обратить на Illegal unaligned load or store. Данные должны быть выравнены на свою длину. То есть адрес перемененной длиной 2 байта должен быть кратен 2. 4 байта - 4. Эта особенность arm не всем известна.
Работающий пример вроде должен лежать в библиотеке в каталоге Project/Examples/EXTI.
http://radiokot.ru/forum/viewtopic.php? ... 56&start=0 - ветка на ту же тему
Re: STM32, IAR и прерывания
Добавлено: Вт июл 30, 2013 13:39:34
Satyr
Galizin писал(а):
Особое внимание нужно обратить на Illegal unaligned load or store. Данные должны быть выравнены на свою длину. То есть адрес перемененной длиной 2 байта должен быть кратен 2. 4 байта - 4. Эта особенность arm не всем известна.
Начиная с ARMv6 не должны.
Re: STM32, IAR и прерывания
Добавлено: Вт июл 30, 2013 13:49:51
Satyr
Обычно хардфаюлт просто - в таблице прерываний мусор или паддинг, разрешается прерывание, по таблицы попадает мимо памяти -)))
Re: STM32, IAR и прерывания
Добавлено: Вт июл 30, 2013 18:04:29
bishop-strip
Товарищи, так почему сий код работает в атоллике, а в IAR нет?!
Скажите как я могу решить проблему?
Может есть какие-нибудь волшебные настройки проекта?

Re: STM32, IAR и прерывания
Добавлено: Вт июл 30, 2013 18:18:07
bishop-strip
Satyr писал(а):Обычно хардфаюлт просто - в таблице прерываний мусор или паддинг, разрешается прерывание, по таблицы попадает мимо памяти -)))
Тогда как мне очистить этот мусор?

Re: STM32, IAR и прерывания
Добавлено: Вт июл 30, 2013 18:44:05
Satyr
Посмотри, что там в самом начале памяти при дебаге ?
Да проще - в мапе линкера посмотри, функция обработки прерывания твоя вобще пошла в бинарник ? ))
Re: STM32, IAR и прерывания
Добавлено: Вт июл 30, 2013 18:44:49
Satyr
bishop-strip писал(а):Товарищи, так почему сий код работает в атоллике, а в IAR нет?!
Не код, а обрывок кода
Хоче, клади тут ИАРный проект, ща заценим
Re: STM32, IAR и прерывания
Добавлено: Вт июл 30, 2013 18:49:27
bishop-strip
Satyr писал(а):bishop-strip писал(а):Товарищи, так почему сий код работает в атоллике, а в IAR нет?!
Не код, а обрывок кода
Хоче, клади тут ИАРный проект, ща заценим
Да дело в том, что пустой проект, есть только маин и эти функции)))
У меня возникла идея
Возможно не хватало файла
startup_stm32f4xx.s, где описана таблица векторов прерываний?
как мне его(файл) подключить в IAR??
возможно нужен какой-то INCLUDE???
Re: STM32, IAR и прерывания
Добавлено: Вт июл 30, 2013 20:30:08
Satyr
добавь в проект.
это обычный файл на асме
Re: STM32, IAR и прерывания
Добавлено: Вт июл 30, 2013 20:37:23
bishop-strip
Satyr писал(а):добавь в проект.
это обычный файл на асме
Добавлял уже, ругается на все строчки, видимо компилятор не понимает АСМ, может есть настройки проекта для асма?
пишет на все строки -
error[40]: Bad instruction
Re: STM32, IAR и прерывания
Добавлено: Вт июл 30, 2013 20:43:18
Satyr
bishop-strip писал(а):Satyr писал(а):добавь в проект.
это обычный файл на асме
Добавлял уже, ругается на все строчки, видимо компилятор не понимает АСМ, может есть настройки проекта для асма?
пишет на все строки -
error[40]: Bad instruction
Конечно.
глянул начало тему - у тебя ж STM32F101V8
этот файл под stm32f4xx
поищи правильный стартап файл под свой процессор.
там вначале в окмментах написано под какие.
Re: STM32, IAR и прерывания
Добавлено: Вт июл 30, 2013 20:55:39
bishop-strip

Всё, решил проблему! ВСЕМ СПАСИБО ОГРОМНОЕ!!!!
Мораль сей басни такова, что ATOLLIC'у хорошо, IAR'у - смерть!
Итак, проблема была такова, не хватало файла
startup_stm32f4xx.s, в котором описаны вектора прерываний.
Из АТОЛЛЛИКовского проекта я взял, который работал там, но он оказался не подходящим для IAR.
Из примеров, arm\examples\ST\STM32F4xx\, я нашел эти файлы, вставил в проект и всё заработало!
Всем еще раз огромное спасибо!

Re: STM32, IAR и прерывания
Добавлено: Ср июл 31, 2013 11:02:14
Satyr
bishop-strip писал(а):
Мораль сей басни такова, что ATOLLIC'у хорошо, IAR'у - смерть!
Не скажу за атоллик, хотя сильно подозреваю -))
Но IAR - выпускает профессиональные компиляторы, дающие абсолютную гибкость в реализации абсолютно любых действий и настроек.
Очевидная обратная сторона медали - он ничего не делает за тебя.
Re: STM32, IAR и прерывания
Добавлено: Ср июл 31, 2013 11:29:21
dosikus
bishop-strip писал(а):
Мораль сей басни такова, что ATOLLIC'у хорошо, IAR'у - смерть!
Если Вы и далее будете совершать ритуальные танцы вместо планомерного изучения , Вас ожидает еще масса удивительных "открытий".
Изначально же ясно что компиляторы у сабжей разные .
Re: STM32, IAR и прерывания
Добавлено: Ср июл 31, 2013 12:06:47
Satyr
Дело не в компиляторах.
Я так понимаю, атоллик он там с визардами и прочей помощью.
IAR - это выгрузка в чистом поле, но с любыми существующими в природе инструментами -))
Еще и открытый насквозь - сам можешь описания, лодеры к любым новым чипам писать. К отладчику плагины и т.д. и т.п. Можно ВСЁ
Re: STM32, IAR и прерывания
Добавлено: Ср июл 31, 2013 12:14:20
dosikus
Satyr писал(а):Дело не в компиляторах.
Я так понимаю, атоллик он там с визардами и прочей помощью.
А толку от этих визардов ?
Вот натыкавшись визардов пациент не может создать проект в IAR , а в поставке IAR есть все что нужно.
И CMSIS и хэдеры периферии и стартап.
Re: STM32, IAR и прерывания
Добавлено: Ср авг 21, 2013 20:11:48
dm#2
Недавно столкнулся с подобной проблемой: прерывание генерируется (флаг прерывания установлен), однако в функцию-обработчик прерывания программа не попадает, застревает в стартап фаиле в строчке с названием этои функции-обработчика (в моем случае "B EXTI0_IRQHandler").
Все необходимые фаилы (стартап, system_stm32f10x), предлагаемые в этои теме были добавлены в проект, но безрезультатно.
Проблема решилась переключением языка компилятора с "C++" на "C" в настройках проекта (Project -> Options... -> C/C++ compiler -> Language 1 -> галочку на "С").
Re: STM32, IAR и прерывания
Добавлено: Вс окт 13, 2013 07:04:17
Chip115
dm#2 писал(а):
Проблема решилась переключением языка компилятора с "C++" на "C" в настройках проекта (Project -> Options... -> C/C++ compiler -> Language 1 -> галочку на "С").
Ай, спасибо тебе за это сообщение! Я вторые сутки голову ломал, почему же ничего не работает! Как вообще это могло повлиять на работу программы?
Re: STM32, IAR и прерывания
Добавлено: Вс окт 13, 2013 11:49:02
Myp3ik
Потому что забыли сказать компилятору, что это Си функция
Код: Выделить всё
extern "C" {
void EXTI0_IRQHandler(void);
}
Re: STM32, IAR и прерывания
Добавлено: Вс окт 13, 2013 13:42:10
Chip115
Myp3ik писал(а):Потому что забыли сказать компилятору, что это Си функция
Код: Выделить всё
extern "C" {
void EXTI0_IRQHandler(void);
}
Спасибо за разъяснение ))