2011-10-27 7 views
3

Я наконец figured out как получить код работает на this LPC1768 mini board, однако теперь я пытаюсь получить отладочную работу.Eclipse GDB «init» и «run» настройки для ARM LPC1768 с использованием OpenOCD?

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

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

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

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

enter image description here

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

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

UPDATE: Принимая совет dwelch, я все же удалось получить некоторые базовые OpenOCD команды для работы (reset init, mdw, mww, load_image и т.д.). Странная ошибка «JTAG-DP STICKY» была чем-то с моим скриптом компоновщика ram, найденным project template for the LPC1758 с RAM linker script, просто пришлось изменить размеры памяти для LPC1768, а load_image отлично поработал.

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

ответ

2

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

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

второй телнет локальный 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 - это еще один уровень сложности, и это затрудняет определение.

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

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

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

+0

Удалось заставить несколько из этих команд работать, никогда не получив load_image для работы, он просто вернется с ошибкой «JTAG-DP STICKY ERROR MEM_AP_CSW 0x23000052». Я действительно возился с командой flash write_image и как-то удалял загрузчик, а затем возвращал его (но снова потерял, хех). – Craig

+0

Должно быть, что-то не так в моем скрипте компоновщика «ram», потому что я вытащил ваш код mbed_samples/ebay_board/blinker01, и он загрузился нормально и работал нормально с load_image/resume 0x10000001. Мои скрипты компоновщика и Makefile находятся здесь: https://gist.github.com/1322088 – Craig

+0

Мне не повезло с этими другими разделами плунжера, интересно, нужно ли что-то активировать для их работы. используя arm ... objdump, чтобы разобрать файл эльфа, покажет, что находится в 0x23000052 в вашей программе. Глядя на файл конфигурации lpc1768.cfg openocd, он указывает некоторый баран на 0x10000000, но я не вижу записи 0x23000000, поэтому, вероятно, для предупреждения есть жалоба jtag. возможно, jtag отказывается писать там. –