Параметры инициализации и запуска Eclipse GDB для ARM LPC1768 с использованием OpenOCD? - PullRequest
3 голосов
/ 27 октября 2011

Я наконец понял , как заставить код работать на этой мини-плате LPC1768 , однако теперь я пытаюсь заставить работать отладку.

Используемая мной цепочка инструментов: Yagarto + Eclipse (Indigo) (с аппаратным отладчиком GDB) + OpenOCD . Мой интерфейс JTAG: Шина Blaster V2 плата.

Я нашел одно руководство , которое проходит через аналогичную настройку, но для другого интерфейса JTAG, поэтому не очень полезно. Также есть этот пост относительно примера LPC1768 , но команды gdb не для OpenOCD.

На данный момент единственная известная мне команда (для init) - это target remote localhost:3333 (для подключения к серверу OpenOCD gdb).

Какие настройки и команды GDB мне следует использовать в этом диалоговом окне?

enter image description here

(игнорируйте «SAM7X256», просто повторно используйте скриншот из одной из приведенных выше ссылок. Я использую ARM LPC1768)

Кроме того, влияет ли тот факт, что моя плата использует вторичный загрузчик (код пользователя начинается с 0x2000), какие-либо из этих параметров отладки?

ОБНОВЛЕНИЕ: Следуя советам dwelch, мне удалось заставить работать некоторые основные команды OpenOCD (reset init, mdw, mww, load_image и т. Д.). Странная ошибка «JTAG-DP STICKY» была связана с моим сценарием компоновщика ram, нашел шаблон проекта для LPC1758 с помощью сценария компоновщика RAM , просто пришлось изменить размеры LPC1768 и load_image работали отлично.

Я все еще хотел бы знать, как правильно настроить eclipse для отладки GDB.

1 Ответ

2 голосов
/ 28 октября 2011

Возможно, попробуйте один шаг за раз.

Запустите openocd, возможно, что-то вроде -f interface / jlink.cfg -f target / lpc1768.cfg или что-то еще, похоже, у вас это работает.

второй локальный хост telnet 4444 или что-то из оконкомандная строка (что-то похожее)

В СЕССИИ TELNET:

> halt
> mdw 0x0000

и тому подобное, чтобы увидеть, что вы говорите с этой частью.

, если у вас естьУже скомпилировав некоторые программы, вы можете просто загрузить их и запустить, например, если вы создаете программу только для оперативной памяти (скажите, что компоновщик .text, .data и т. д. все в 0x10000000), тогда

> load_image /path/to/myprog.elf
> resume 0x10000001

(дадобавьте 1, чтобы сделать его странным, этот процессор большого пальца не будет запускать инструкции ARM (lsbit = 0 в режиме охраны lsbit = 1 в режиме большого пальца).

Для повторного запуска после перекомпиляции:

> halt
> load_image /path/to/myprog.elf
> resume 0x10000001

затем беспокойтесь о перепрошивке и т. Д. После того, как у вас есть основанные на ОЗУ программы, показывающие признаки жизни.

Если ничего из этого не работает, то gdb - это просто еще один уровень сложности поверх этого и собираетсясделать сложнее понятьut.

Что касается загрузчика, ответ на этот вопрос зависит от того, пытаетесь ли вы запустить из оперативной памяти или из программы в ром.Если вы работаете с оперативной памяти, вы можете взять на себя систему и взять на себя всю оперативную память, некоторые микросхемы (stm32) имеют некоторые подпрограммы, которые вы можете вызвать, и те требуют, чтобы некоторые оперативные памяти были не тронуты, но если вы принимаете чип, вы можете иметь все оперативные памяти, речь идет о том, чтобы сообщить компоновщику и, возможно, отладчику, если он не знает об этом из двоичного файла (использование файлов elf или ihex или srec или почти всего, что не является .bin, хорошо, если инструмент поддерживает его).

если вы собираетесь писать на флэш-память, вам лучше точно знать, какая часть флэш-памяти может содержать загрузчик, что этот загрузчик делает для передачи вашему коду и т. Д., И снова сообщить компоновщику и отладчикуэта информация.Вы можете легко стереть / очистить загрузчик в зависимости от того, где он находится и что вы делаете (многие из этих частей lpc и st имеют загрузчики, последовательные или usb, которые в некоторой степени защищены от случайных ошибок, но вы все равно обычно можете удалить их изамените их, если вы не осторожны).

...