2015-02-18 3 views
1

Я работал с некоторыми устройствами Cortex-M4 (Freescale K60) с скомпилированным мной GCC (v4.7.2), BinUtils (v2.22), Newlib (v1.20) и GDB (v7.5). Меня всегда раздражало неспособность GDB отказаться от жестких исключений.gdb ARM Cortex-M exception Unwinding

Недавно у меня появилась возможность использовать CodeWarrior FreeScale, где я загрузил свой двоичный файл для отладки (скомпилированный моими инструментами), и он может отключить исключение. Похоже, CodeWarrior работает под управлением GDB v7.4.1 под капотом. Есть ли какой-то патч, который я пропустил для GDB, или какой-нибудь вариант настройки?

Вот скрипт, используемый для построения GDB: ToolChain = GDB-7,5 MkDir -p BUILD/GDB кд BUILD/GDB ../../${TOOLCHAIN}/configure prefix = $ { PREFIX} --target = $ {TARGET} --enable-interwork --enable-multilib --with-expat = yes --with-python - без-авто-load-safe-path 2> & 1 | tee configure.out make all install cd ../../

Спасибо!

ответ

1

GDB может сделать Cortex M профиль исключения разматывания, как только вы сказать это, что цель на самом деле Cortex M профиль с помощью Target Description XML с правильным Feature.

Это можно сделать с помощью команды set target tdesc <filename>, но новые серверы gdb (например, OpenOCD) должны сделать это уже.

+0

Это выглядит то, что мне не хватает, но когда я пытаюсь установить архитектуру вручную в GDB он не понимает armv7m
от БГДА:
(GDB) набор архитектура armv7m
Неопределенного пункт: «armv7m».
(gdb) set architecture
Требуется аргумент. Допустимыми аргументами являются arm, armv2, armv2a, armv3, armv3m, armv4, armv4t, armv5, armv5t, armv5te, xscale, ep9312, iwmmxt, iwmmxt2, auto.
norton256

+0

Извините за ужасное форматирование ... Это похоже на то, чего мне не хватает, но когда я пытаюсь установить архитектуру вручную в gdb, он не понимает armv7m. Может, я пропустил что-то, когда я построил GDB? gdb output: '(gdb) set architecture armv7m Undefined item:" armv7m ". (gdb) set architecture Требуется аргумент. Допустимыми аргументами являются arm, armv2, armv2a, armv3, armv3m, armv4, armv4t, armv5, armv5t, armv5te, xscale, ep9312, iwmmxt, iwmmxt2, auto.' – norton256

+0

, после некоторого большего чтения, похоже, что я должен использовать " arm "с функцией" org.gnu.gdb.arm.m-profile ". Так как кажется, что функция настраивает регистры, которые настраиваются при отладке, тогда появляется, что OpenOCD правильно настраивает GDB. Может быть, что-то путается с переключением стека? – norton256