Полная версия этой страницы:
ARM-USB-OCD
segment
Mar 27 2009, 20:22
Собсно есть ARM-USB-OCD, есть макетка от Олимекса с LPC2129. Пытаюсь дебажить, точнее залить во флеш программу, но не выходит

Запускаю openOCD с обычным cfg, он видит JTAG, все ок тут.
Открываю свойства проекта в IAR, выбираю GDB Server, localhost, ставлю чтобы Verify after download, и нажимаю залить и отладить. В итоге ошибка что не верный выходной файл проекта - мол
Код
Fri Mar 27 23:21:40 2009: ELF/DWARF Error: Unknown
В пункте Build converter выбираю Intel Extended и генерю hex, но он видимо идет не как основной и дебагер его не цепляет.. помогите, я наверно чтото не так делаю
в IAR flash loader берет файлы simple code (IAR ровский формат). Надо что бы он генерировался
причем этот файл должен быть в дополнение к обычному для IAR (elf для 5ки),
но насколько я помню в 5ке по умолчанию настроено все что бы симплкод генерировался...
segment
Mar 27 2009, 21:15
просто по умолчанию всегда генерируется файл( его имя указывается в Linker ) к примеру project.out и рядом с ним разные форматы которые я могу настроить в Build Conventer.. собсно а как подменить то файлы? чего мне делать то теперь?
Или все это решается покупкой J-Link ?
Цитата(Сега @ Mar 28 2009, 00:15)

просто по умолчанию всегда генерируется файл( его имя указывается в Linker ) к примеру project.out и рядом с ним разные форматы которые я могу настроить в Build Conventer..
правильно!
у IAR flashloader - это специальная прога, которая используя фичи IARовского отладчика с компа счтитывает файл и шьет его. Т.е. запрос и парсирование файла осуществляется в АРМ.
Файл нужен в формате IAR Simple code.
Создайте чистый проект, в настройках по умолчанию для дебаг будут нужные параметры, что бы получить simple code.
я отлаживал разными отладчиками, все ок!
segment
Mar 28 2009, 13:14
Как я отлаживаю сейчас, после пары половых актов с отладчиком и заменой паленого кварца изза которого я мучался в недоумении в течение нескольких дней:
- загружаю программу через lpc21isp.exe
- запускаю openOCD
- Run without downloading
Всетаки не смог понять почему не хочет грузить через жтаг.. сделал новый чистый проект - посмотрел настройки - сделал такие же, не катит..
Конечно по сути я быстро гружу софтину, но вот каждый раз запускать заного openOCD бесит.. хелп
А какая ошибка то?
FlashLoader загружается? он уже ошибку выдает?
Вы лог дебагера вставте сюда.
segment
Mar 28 2009, 21:30
Лог openOCD
Код
Open On-Chip Debugger (2008-06-19 19:00) svn: 717
URL: http://svn.berlios.de/svnroot/repos/openocd/trunk
Info: options.c:50 configuration_output_handler(): jtag_speed: 3, 3
Info: options.c:50 configuration_output_handler(): Open On-Chip Debugger (2008-06-19 19:00) svn: 717
Info: jtag.c:1389 jtag_examine_chain(): JTAG device found: 0x4f1f0f0f (Manufacturer: 0x787, Part: 0xf1f0, Version: 0x4)
Info: jtag.c:1389 jtag_examine_chain(): JTAG device found: 0x4f1f0f0f (Manufacturer: 0x787, Part: 0xf1f0, Version: 0x4)
А лог дебагера
Код
Sun Mar 29 00:28:09 2009: ELF/DWARF Error: Unknown
Sun Mar 29 00:28:09 2009: 0 bytes verified (0.00 Kbytes/sec)
Sun Mar 29 00:28:09 2009: Failed to load debugee: G:\Work\IAR\Debug\Exe\project.out
Если ставлю галку " Use flash loader(s) " в настройках Debuger->Download, а потом жму Download and run то IAR чото виснет, отрубаю ARM-USB-OCD - после этого IAR очухивается ну и само собой говорит что error просто, типа отрубили..
А что лог дебагера всего 3 строчки?
( у меня сейчас IAR нет под рукой, могу только в понедельник посмотреть живьем)
но насколько я помню там побольше всего должно быть.
Flash Loader туда много чего пишет, что он стартанул например....
А у вас с настройках flashloader включен? конфигурация для LPC2129
там еще в параметрах flashloader нужно частоту кварца указатьв khz
(но если 12 Mhz кварц и так работает)
segment
Mar 28 2009, 21:42
Я настройки частоты вообще не увидел.. вот то что есть
а, вот, если поставить так как на скриншоте то лог
Код
Sun Mar 29 00:40:02 2009: Loaded macro file: C:\Program Files\IAR Systems\Embedded Workbench 5.4 Evaluation\arm\config\flashloader\NXP\LPC21xx22xx.mac
Sun Mar 29 00:40:03 2009: 2048 bytes downloaded and verified (3.21 Kbytes/sec)
Sun Mar 29 00:40:03 2009: Loaded debugee: C:\Program Files\IAR Systems\Embedded Workbench 5.4 Evaluation\arm\config\flashloader\NXP\FlashLayout2RAM16K.out
Sun Mar 29 00:40:03 2009: Target reset
Цитата(Сега @ Mar 29 2009, 01:42)

Я настройки частоты вообще не увидел.. вот то что есть
А частота это параметр бутлоадера
там где ,,,,default - это парамтеры бутлоадера, насколько я помню там надо дописать, что то типа clock_freq=xxx ( но точно не помню), обычно и так шьет.
Судя по логу у вас IAR все прошивает!! А дебагер не стартует потому что ему файл не нравится уже основной!
Хотя нет, опять лог дебагера не полный, там должно быть больше строк!
Код
Sun Mar 29 00:40:03 2009: 2048 bytes downloaded and verified (3.21 Kbytes/sec)
вот эта строчка странная к чему она относится не понятно,
вот если бы она после загрузки flashloaderа стояла...
segment
Mar 29 2009, 08:23
То что 2048 прошивает - это фигня какаято, у меня размер всегда меняется и в тот момент был 9кб, так что неизвестно что и куда он заливает...
У кого есть ARM-USB-OCD под рукой и IAR - прошу, проверьте или скажите по пунктам как прошивать( во флеш и в рам ), очень нужно, я уже все перепробовал!
IAR еще сам загрузчик ( FLashLoader) грузит, он может и занимает 2 кб, но почему запись в логе раньше.
Хотя судя по следующей строке, что загружен FlashLoader (Loaded) это относится к нему.
В общем судя пол логу сам FlashLoader у вас загружен и проверен!
Но почему на этом лог обрывается непонятно.
Вам надо посмотреть макро файл флеш лоадера
C:\Program Files\IAR Systems\Embedded Workbench 5.4 Evaluation\arm\config\flashloader\NXP\LPC21xx22xx.mac
мне, когда я шил через wiggler приходилось это файл менять ( я отключал запись в регистры, отключение pll и т.д. но шить можно было только после hardware reset, но это и так делалось).
segment
Mar 29 2009, 08:52
Вот он.. что с ним не так?
Код
execUserFlashInit()
{
// Disable the PLL.
__writeMemory32(0x00000000, 0xE01FC080, "Memory"); // PLLCON = 0
// Qualify the PLL change.
__writeMemory32(0x000000AA, 0xE01FC08C, "Memory"); // PLLFEED = 0xAA
__writeMemory32(0x00000055, 0xE01FC08C, "Memory"); // PLLFEED = 0x55
// Make sure that the flash memory system is correctly setup.
__writeMemory32(0x00000000, 0xE01FC000, "Memory"); // MAMCR = 0
__writeMemory32(0x00000007, 0xE01FC004, "Memory"); // MAMTIM = 7
__writeMemory32(0x00000002, 0xE01FC000, "Memory"); // MAMCR = 2
// If the MAM values was wrong, a dummy read is necessary to get the flash memory in sync.
__writeMemory32(0x00000001, 0xE01FC040, "Memory"); // MEMMAP = 1
__readMemory32(0x00000000, "Memory");
}
А вы закомментируйте там все!
А лучше поставьте вывод сообщений в начале и в конце
типа
Код
__message "-----START flash init";
__message "-----END flash init";
тогда они должны в логе появится!
segment
Mar 29 2009, 16:46
Так, вставил, вот лог. Ошибка выдается такаяже - что неверный формат project.out (см в скриншоте выше)
Код
Sun Mar 29 20:44:51 2009: Loaded macro file: C:\Program Files\IAR Systems\Embedded Workbench 5.4 Evaluation\arm\config\flashloader\NXP\LPC21xx22xx.mac
Sun Mar 29 20:44:51 2009: START flash init
Sun Mar 29 20:44:51 2009: END flash init
Sun Mar 29 20:44:51 2009: 2048 bytes downloaded and verified (3.21 Kbytes/sec)
Sun Mar 29 20:44:51 2009: Loaded debugee: C:\Program Files\IAR Systems\Embedded Workbench 5.4 Evaluation\arm\config\flashloader\NXP\FlashLayout2RAM16K.out
Sun Mar 29 20:44:51 2009: Target reset
segment
Mar 29 2009, 18:27
Так, в каком то варианте у меня проскользнуло что все нормально загружено, но слетел при этом openocd. Тогда я понял что у меня старая версия ocd и скачал 0.1.0 версию, теперь понадежнее и не зависает.. пытаюсь добиться той конфигурации при которой у меня однажды залилась прога
С новым openocd лог выглядит более логичным. Теперь ясно что трабла не в генерируемом коде а в том что принять пакет не может, что это может быть?
Код
Sun Mar 29 22:09:25 2009: Loaded macro file: C:\Program Files\IAR Systems\Embedded Workbench 5.4 Evaluation\arm\config\flashloader\NXP\LPC21xx22xx.mac
Sun Mar 29 22:09:25 2009: START flash init
Sun Mar 29 22:09:25 2009: END flash init
Sun Mar 29 22:09:34 2009: Fatal error: Failed to receive packet
Session aborted!
Sun Mar 29 22:09:35 2009: Failed to load flash loader: C:\Program Files\IAR Systems\Embedded Workbench 5.4 Evaluation\arm\config\flashloader\NXP\FlashLayout2RAM16K.out
Спустя некоторое время вот такой лог я узрел
Код
Sun Mar 29 22:26:26 2009: 9264 bytes with download suppressed
Sun Mar 29 22:26:26 2009: Loaded debugee: G:\Work\IAR\Debug\Exe\project.out
Sun Mar 29 22:26:35 2009: Fatal error: Failed to receive packet
Session aborted!
Sun Mar 29 22:27:08 2009: Target reset
Sun Mar 29 22:27:08 2009: Failed to load debugee: G:\Work\IAR\Debug\Exe\project.out
Вообще у IAR кривая поддержка GDB server! Там ошибки причем их не исправить у них в идеологии ошибки они не правильно понимают GDB протокол, например. И у них похоже прием и отправка данных в разных нитях происходит, что для полудуплексного протокола криво ( обычная ситуация когда они не могут понять на какую посылку пришел ответ). Я об этом говорю потому что я пытался прицепить GDB сервер к IAR. И модифицированный OpenOCD тоже, когда подключал кортекс по SWD. Например по идеологии GDB на приянтый пакет с начала идет подтверждение, а потом, если надо ответ с данными, так вот в IAR если будет задержка между подтверждением и пакетом крыша съезжает! (например они в разных пакетах TCP прийдут).
Да и вообще на сайте IAR написано что GDB сервер только для отладочной платы .... ( не помню точно какой) в общем работает криво!
segment
Mar 30 2009, 04:14
Ясно. Ну я тогда продолжу работать вполне терпимым вариантом - lpc21isp -> openOCD -> Debug without downloading
А OpenOCD вроде можно настроить что бы он Flash шил. ( но это лучше в GNU/OpenSource спросить или посомтреть)
А вообще IAR отлично работает через RDI и с родным для нее JLINK ( но полноценного описания протокола нет, то что есть сильно обрезано).
Предлагаю просто собраться и написать аналог H-JTAG ( к сожалению он не open source ) для устройств на FTDI, а то принтерные порты умирают...
Я проверил у себя, для LPC2129 - примерно та же фигня! В общем не работает IAR нормально с GDB server. Но если пару дней поплясать с бубном, подправить OpenOcd... то... Но лучше RDI написать!
segment
Mar 30 2009, 16:38
Ясно, пасиб что проверил! Да, написать можно, но наверно не раньше лета..
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.