CMSIS2000
0.0.7
|
Для отладки вам понадобятся:
Схема работы отладчика проста:
Следуюшие разделы описывают работы представленной схемы с низу вверх.
Сначала следует присоединить к плате все необходимые узлы и отладчик с помощью разъёма JTAG. Следует помнить о некоторых электрических особенностях данного процесса:
Далее следует включить отладчик, соединив его USB кабелем с ПК, и в последнюю очередь можно подавать питание на плату. Аппаратный сброс отладчика можно производить путём отключения его от шины USB.
С точки зрения OC ПК отладчик представляет из себя устройство с COM портом. Драйвера для отладчика реализуют интерфейс ком порта. Есть две программные реализации драйверов:
После включения отладчика в компьютере должно появится соответствующее устройство. Далее необходимо запустить сервер отладки.
OpenOCD является сервером отладки. Сервер ждёт gdb TCP/IP соединение на порту 3333, и telnet соединение на порту 4444 (см рисунок). Однако сервер отладки может быть запущен в других режимах которые в данном руководстве не рассматриваются (com порт, stdio). Команды для сервера могут быть переданы с gdb если они начинаются со слова monitor, а также с консоли отладки.
В основном необходимости работать непосредственно с самим сервером OpenOCD нет, всё нужно делать через клиента отладки, тем не менее, в CodeBlocks например отсутствует кнопка сброса, также в консоли удобно наблюдать за появлением некоторых других сообщений, которые могут возникнуть в случае обрыва питания и прочего.
Запуск OpenOCD осуществляется командой:
где,
Пример запуска openOCD:
>openocd -d2 -f interface/olimex-arm-usb-ocd.cfg -f target/lpc2478.cfg Open On-Chip Debugger 0.4.0 (2010-02-22-19:05) Licensed under GNU GPL v2 For bug reports, read http://openocd.berlios.de/doc/doxygen/bugs.html debug_level: 2 jtag_nsrst_delay: 100 jtag_ntrst_delay: 100 trst_and_srst srst_pulls_trst srst_gates_jtag trst_push_pull srst_open_drain RCLK - adaptive Info : RCLK (adaptive clock speed) not supported - fallback to 500 kHz Info : JTAG tap: lpc2478.cpu tap/device found: 0x4f1f0f0f (mfg: 0x787, part: 0xf 1f0, ver: 0x4) Info : Embedded ICE version 7 Error: EmbeddedICE v7 handling might be broken Info : lpc2478.cpu: hardware has 2 breakpoint/watchpoint units
По умолчанию, на 4444 порту openOCD ожидает telnet соединение. Если к нему подключится с помощью любого telnet клиента, то можно командовать сервером.
Подойдут putty или Realterm.
справка по всем используемым командам доступна в консоли
например:
> help speed jtag_khz [khz] With an argument, change to the specified maximum jtag speed. Pass 0 to require adaptive clocking. With or without argument, display current setting. (command valid any time) jtag_rclk [fallback_speed_khz] With an argument, change to to use adaptive clocking if possible; else to use the fallback speed. With or without argument, display current setting. (command valid any time)
Например, чтобы искусственно перейти к нужному участку кода необходимо в регистр pc занести значение адреса инструкции – пишем reg pc 0x40000000, если работаем в CodeBlocks-е пишем monitor reg pc 0x40000000
Отладка приложений в SDRAM самая быстрая и удобная, однако она может не запуститься с первого раза, из-за того что SDRAM не активирована. Для активизации SDRAM загружаете что нибудь работающее с SDRAM в ПЗУ – например U-Boot или пример работы с SDRAM от NXP, далее подключаете отладчик, загружаете проект с вашей программой с помощью CODEBLOCKS, но вместо обычной комбинации пишете в консоли
monitor reg pc 0
Далее жмёте Start/Continue , ждёте пару секунд пока приложение с ПЗУ активизирует память SDRAM, далее снова грузите своё приложение в SDRAM
load
Теперь оно в SDRAM делаете запуск его командой
monitor reg pc ADRESS вашей программы в SDRAM
Дальнешая актвизация SDRAM не требуется, можно сколько угодно раз загружать и останваливать процесс отладки. Работа с RAM позволяет устанавливать любое число точек останова так как они программные, в отличие от аппаратных точек останова во FLASH.
Тише едешь – дальше будешь. Следует поиграть с со следующими опциями OpenOCD для увеличения стабильности или увеличения скорости работы.
Сначала необходимо установить Codebloks версии 10.2 при установке следует выбрать все плагины, чтобы он не ''ругался'', что их нет. Далее следует установить последнюю версию Codeblocks из ветки Debug поверх установленной, например файл CB_20100912_rev6583_DEBUGGER_BRANCH_win32.7z надо распаковать поверх существующей директории. Версии из ветки Debug собираются автоматически несколько раз в месяц и выкладываются на форуме CodeBlocks.
необходимо установить ещё две настройки в CodeBlocks, настройки находятся в Settings-> Compiler and Debugger -> Debugger Settings
Если проект в CodeBlocks настроен как проект под ARM, то запуск GNU DEBUGER происходит автоматически.
Запус GDB осуществляется CODEBLOCKS. При запуске CODEBLOCKS передаёт GDB параметры настройки. Основные параметры:
Дополнительные команды(ADDITINAL GDB COMMANDS): здесь следует указать команды связанные со спецификой отладчика и платы. Команды следует поместить в файл .gdbinit. А в поле ``After Connection'' ввести ``source .gdbinit''.
Например рабочие параметры для GDB под LPC для отладки в RAM такие:
Также содержимое файла .gdbinit можно ввести прямо в поле ``After Connection'' как на рисунке.
Параметры начинающиеся на monitor передаются серверу отладки то есть команда monitor reset init передаётся как reset init
Для запуска отладки в CodeBlocks через GDB необходимо чтобы:
После открытия проекта нужно запустить Debug\Start and Continue, что приведёт к запуску процесса компиляции и отладки.