Eclipse GDB "init" и "run" настройки для ARM LPC1768 с использованием OpenOCD?

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

Я использую набор инструментов: Yagarto + Eclipse (Indigo) (с аппаратным отладчиком GDB) + OpenOCD. Мой JTAG-интерфейс: плата Bus Blaster V2.

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

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

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

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

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

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

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

1 ответ

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

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

второй telnet localhost 4444 или какая-либо другая командная строка Windows (что-то похожее)

В ТЕЧЕНИИ СЕССИИ 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 - это еще один уровень сложности, который усложнит понимание.

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

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

Я только что получил плату el-cheapo lpc1768 из Азии на ebay, которую несколько часов назад я сделал именно так, как я описал выше. Следите за пользователем github dwelch67, возможно, в mbed_samples, если не за lpc1768_samples, если я создам универсальную программу, в которой у меня будут примеры программ и инструкций по использованию openocd для загрузки и запуска из ram, а также для записи во флэш-память.

Другие вопросы по тегам