LPC11xx Cortex-M0 FreeRTOS Hardfault

Я работал над проектом на устройстве NXP LPC11XX и FreeRTOS. Проблема в том, что демонстрационный проект для этого использует некоторую IDE на основе Eclipse, и у меня не будет ничего из этого. Я преобразовал его для компиляции в Linux, и я могу программировать без каких-либо проблем. Проблема, которую я вижу, заключается в том, что когда демонстрационный проект попадает в memset(), в ЦП генерируется серьезная ошибка. Это не мой код, но у меня есть ощущение, что он связан с чем-то, что я сделал. Я использую компилятор codesourcery "gcc version 4.4.1 (Sourcery G++ Lite 2010q1-188)" (который я без проблем использовал на устройствах Cortex-M3). Я вижу аппаратную ошибку, сгенерированную чертовой инструкцией «lsls», которая ничего не трогает в памяти, см. этот массивный pastebin вывода GDB: http://pastebin.com/3pg0puSe (я не знаю, какая здесь обычная практика для таких больших блоков текста.)

Есть мысли, кто-нибудь? Спасибо за помощь!


person Kris Bahnsen    schedule 13.02.2012    source источник
comment
Почему бы не использовать официальные форумы поддержки FreeRTOS?   -  person Igor Skochinsky    schedule 13.02.2012
comment
Это похоже на более глубокую проблему ARM, где-то между memset(), gcc и, возможно, моим make-файлом. Насколько я могу судить, это не имеет ничего общего с ядром freeRTOS.   -  person Kris Bahnsen    schedule 13.02.2012


Ответы (1)


Плохо видно, но последняя инструкция была blx r3. Похоже, у R3 не установлен последний бит (для режима Thumb), его значение равно 0x481c. Это приведет к тому, что IIRC вызовет исключение недопустимой инструкции. В этом случае ваш отладчик обманывает вас, так как значение, загруженное в ПК blx, вероятно, было недействительным.

Возможно, вы просто забыли параметр компоновщика, который устанавливает режим инструкций/модель ЦП (и набор используемых библиотек), поэтому он связан с библиотекой режима ARM.

person Turbo J    schedule 13.02.2012
comment
Компилятор определенно указывает -mthumb, но вы совершенно правы, я не уловил этот недостающий бит. Когда я вернусь домой позже, я проверю это. Спасибо за отзыв! - person Kris Bahnsen; 14.02.2012