|
LPC1112FD/102 не входит в режим программирования |
|
|
|
 |
Ответов
(1 - 11)
|
Nov 6 2014, 17:10
|

Местный
  
Группа: Свой
Сообщений: 421
Регистрация: 27-05-05
Из: Энергодар
Пользователь №: 5 480

|
Цитата(Сергей Борщ @ Nov 6 2014, 02:25)  Если вы перенастроили P0.0/RESET в режим порта - то примерно так и должно быть. Можно прижать Reset к земле, .... Что-то там было насчет connect under reset. Сергей, спасибо за ответ. Я сам не перенастраивал, может в софте это имеет место. Особенностей проца вообще не знаю. Да и софт еще изучать и изучать. При первом просмотре не нахожу каких то манипуляций с переферией, да и вывод RESET висит в воздухе. В LPC1112 можно функции альтернативным портам задать программно? При запуске openOcd, RESET пробовал прижимать к земле в разных вариациях нет результата. Хм ну если накосячил, там закрыл проц, переназначил выводы неужели нет способа сделать возврат к состоянию по умолчанию со стиранием флеша. Эти процы вообще чем шьют, так понял пишут их по UART. Только не найду пример программатора. Пока буду читать про конфигурацию сброса в openOcd.
|
|
|
|
|
Nov 7 2014, 18:53
|

Местный
  
Группа: Свой
Сообщений: 421
Регистрация: 27-05-05
Из: Энергодар
Пользователь №: 5 480

|
Цитата(Сергей Борщ @ Nov 6 2014, 20:57)  Вот, из сегодняшней рассылки: Нет не помогло. Я читал, читал и вычитал  . Разобрался однако. Так по порядку. Источник проблеммы был в следующем. Чип был закрыт. Закрываются он прикольно при помощи скрипта линкера. Нужна всего одна строчка в коде вот так __CRP const unsigned int CRP_WORD = CRP_CRP2; // Disables SWD debugging & JTAG, leaves UART ISP with with only full erase // enabled. You must have UART access and FlashMagic before setting this // option. // Don't even try this without these tools; most likely the SWD flash // programming will not even complete. #define CRP_CRP2 0x87654321 Другими словами у меня был отключен SWD и соответсвенно openOcd чип не видел. Интересно следующее, в ходе моих экспирементов я подключился через JLink и JFlashARM чип увидел. Но ничего сделать не смог. Мои заключения закончились когда я выкачал Flash Magiс и через ISP стер LPC1112. Вроде как все заработало. Теперь, следующая проблемма моя связка LPCXpreso->openOcd очень криво работает. Чип вроде как шъется но почему то становится на адрес в boot ROM. Причем это вечный цикл. Но иногда он и нормально отрабатывает. Ладно копаем дальше.
|
|
|
|
|
Nov 7 2014, 21:29
|

Гуру
     
Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095

|
Цитата(Pat @ Nov 7 2014, 20:53)  Чип вроде как шъется но почему то становится на адрес в boot ROM. Так это же просто: Цитата The bootloader code is executed every time the part is powered on or reset. The loader can execute the ISP command handler or the user application code. A LOW level after reset at the PIO0_1 pin is considered as an external hardware request to start the ISP command handler either via UART or C_CAN, if present.
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
Nov 13 2014, 21:38
|

Местный
  
Группа: Свой
Сообщений: 421
Регистрация: 27-05-05
Из: Энергодар
Пользователь №: 5 480

|
Цитата(Сергей Борщ @ Nov 7 2014, 23:29)  Так это же просто: В том то и дело программа там висит и не хочет ... Что то замучился я. ИАР шъет LPC1112 без вопросов. Остальное никак не могу запустить. Особенно связку gdb - openocd. opendocd вроде как подключается вот лог Код C:\openocd>openocd.exe -f debug_lpc1112.cfg Open On-Chip Debugger 0.6.0-dev-00550-g4257cb7-dirty (2012-06-05-17:01) Licensed under GNU GPL v2 For bug reports, read http://openocd.sourceforge.net/doc/doxygen/bugs.html Info : OpenOCD runs in SWD mode 1000 kHz adapter_nsrst_delay: 100 jtag_ntrst_delay: 100 10 kHz adapter_nsrst_delay: 200 cortex_m3 reset_config sysresetreq Info : Versaloon(0x15)by Simon(compiled on Nov 9 2013) Info : USB_TO_XXX abilities: 0x0000176E:0x010001EF:0xC0000007 Info : clock speed 10 kHz Info : lpc1112.cpu: hardware has 4 breakpoints, 2 watchpoints target state: halted target halted due to debug-request, current mode: Thread xPSR: 0xc1000000 pc: 0x1fff0040 msp: 0x10000ffc Тут подключаюсь через адаптер Versaloon. Но это не важно с другими адаптерами та же песня. Причем только смог подключится через openOcd-0.6.0 восьмерка не захотела работать ругаясь на транспорт swd Может есть у кого рабочие файлы скриптов для LPC1112? Дайте если не жалко. И почему openocd-0.8 не работает?
|
|
|
|
|
Nov 14 2014, 11:42
|

Гуру
     
Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095

|
Цитата(Pat @ Nov 13 2014, 23:38)  Код xPSR: 0xc1000000 pc: 0x1fff0040 msp: 0x10000ffc Тут видно, что процессор находится во встроенном загрузчике. Встроенный загрузчик запускается низким уровнем на ноге PIO0_1. Проверьте, не притянута ли эта нога у вас к земле. Это раз. Второе - у LPC есть "фишка" - контроллер при старте проверяет контрольную сумму начального участка области векторов. И если эта сумма не совпала - контроллер считает, что программы нет и уходит во встроенный загрузчик. IAR эту контрольную сумму добавляет на лету во время загрузки. Родная утилита загрузки через ISP тоже добавляет эту сумму. OpenOCD сам ничего не добавляет, значит проблема может быть в том, что ваш файл не содержит контрольной суммы. Если это так, то вариантов решения два: 1) немного изменить стартап-файл и скрипт линкера, чтобы заставить линкер считать эту сумму и вставлять в нужное место. 2) в скрипте OpenOCD добавить функцию, исполняющуюся после сброса и в этой функции сделать принудительный ремап на флеш, считать из таблицы векторов начальное значение стека в MSP, считать адрес вектора сброса и занести его в PC. Цитата(Pat @ Nov 13 2014, 23:38)  Причем только смог подключится через openOcd-0.6.0 восьмерка не захотела работать ругаясь на транспорт swd Там синтаксис этих опций менялся. Я работал с LPC1114 и восьмой версией OpenOCD и девятой. Цитата(Pat @ Nov 13 2014, 23:38)  Может есть у кого рабочие файлы скриптов для LPC1112? Дайте если не жалко. В текущей версии из репозитория уже есть готовые скрипты для LPC11xx в комплекте. Но они заточены именно под эту последнюю версию, поэтому надо брать ее целиком. Отдельно скрипты к старой версии не подойдут. И, кстати, там исправлено множество ошибок (одну с прошивкой именно LPC11xx исправлял я) и недоработок, поэтому я вам очень не советую бороться со старыми версиями. Берите последнюю - в ней все работает. Если захотите считать контрольную сумму линкером, то вот как я делал: 1) В cstartup разбил таблицу векторов на две части (до и после контрольной суммы). Код extern uint32_t _estack[]; typedef void( * const intfunc )( void );
__attribute__ ((section(".isr_vector_part1"))) intfunc g_pfnVectors_part1[] = { /* Core interrupt vectors */ (intfunc)_estack, Reset_Handler, NMI_Handler, HardFault_Handler, MemManage_Handler, BusFault_Handler, UsageFault_Handler };
__attribute__ ((section(".isr_vector_part2"))) intfunc g_pfnVectors_part2[] = { 0, 0, 0, SVC_Handler, DebugMon_Handler, 0, PendSVC_ISR, SystemTimer_ISR, ......... В скрипте линкера разместил эти две секции и сумму между ними: Код .text : { . = ALIGN(4); KEEP(*(.isr_vector_part1)) LONG(0 - (6 + _estack + Reset_Handler + NMI_Handler + HardFault_Handler + MemManage_Handler + BusFault_Handler + UsageFault_Handler)); KEEP(*(.isr_vector_part2))
/* code read protection */ . = 0x2FC; /* LONG(0x87654321);*/ . = ALIGN(4); ..............
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
Nov 16 2014, 14:01
|

Местный
  
Группа: Свой
Сообщений: 421
Регистрация: 27-05-05
Из: Энергодар
Пользователь №: 5 480

|
Цитата(Сергей Борщ @ Nov 14 2014, 13:42)  Тут видно, что процессор находится во встроенном загрузчике. Встроенный загрузчик запускается низким уровнем на ноге PIO0_1. Сергей, спасибо Вам за ответы. Висит в воздухе этот пин. Продолжаю изыскания, что то они у меня затянулись. Выкачал openocd-0.9.0-dev-141103193059 Пытаюсь подключится через ST-Link не получается лог ниже Код C:\openocd-0.9.0-dev-141103193059>debug_stlink_lpc1112.bat C:\openocd-0.9.0-dev-141103193059>bin-x64\openocd-x64-0.9.0-dev-141103193059.exe -f scripts\interface\stlink-v2.cfg -f scripts\target\lpc11xx.cfg Open On-Chip Debugger 0.9.0-dev-00186-g30203b3 (2014-11-13-22:44) Licensed under GNU GPL v2 For bug reports, read http://openocd.sourceforge.net/doc/doxygen/bugs.html Error: session's transport is not selected. Info : session transport was not selected, defaulting to JTAG Error: Debug adapter doesn't support 'swd' transport Runtime Error: embedded:startup.tcl:20: in procedure 'script' at file "embedded:startup.tcl", line 58 at file "scripts\target\lpc11xx.cfg", line 8 at file "C:/openocd-0.9.0-dev-141103193059//scripts/target/lpc1xxx.cfg", line 17 in procedure 'transport' called at file "C:/openocd-0.9.0-dev-141103193059//scripts/target/swj-dp.tcl", line 23 in procedure 'ocd_bouncer' at file "embedded:startup.tcl", line 20 Пишет что транспорт не выбран, пытаюсь выбрать транспорт C:\openocd-0.9.0-dev-141103193059>bin-x64\openocd-x64-0.9.0-dev-141103193059.exe -c "transport select swd" -f scripts\interface\stlink-v2.cfg -f scripts\target\lpc11xx.cfg Код C:\openocd-0.9.0-dev-141103193059>bin-x64\openocd-x64-0.9.0-dev-141103193059.exe -c "transport select swd" -f scripts\interface\stlink-v2.cfg -f scripts\target\lpc11xx.cfg Open On-Chip Debugger 0.9.0-dev-00186-g30203b3 (2014-11-13-22:44) Licensed under GNU GPL v2 For bug reports, read http://openocd.sourceforge.net/doc/doxygen/bugs.html Error: Debug adapter doesn't support any transports? Runtime Error: embedded:startup.tcl:20: in procedure 'transport' in procedure 'ocd_bouncer' at file "embedded:startup.tcl", line 20 Не работает Причем так же не могу подключится и к чипу STM32F в рабочей плате. ИАР сходу заливает что в LPC что STM32. Пробовал на еще одном компе с WinXp результат тот же. Что же я делаю не так. Экспирементов было много, пробовал менять драйвера и прочее. Добавлю Только что собрал из исходников openocd (это я уже от того, что нужно, что то делать делаю) картина таже. Уже обрыл весь интернет у всех вроде просто запускается. Что у меня не так...
|
|
|
|
|
Nov 16 2014, 21:31
|

Местный
  
Группа: Свой
Сообщений: 421
Регистрация: 27-05-05
Из: Энергодар
Пользователь №: 5 480

|
Цитата(Сергей Борщ @ Nov 16 2014, 22:44)  Вы сначала выбираете транспорт, а потом адатер. Попробуйте поменять местами -f scripts\interface\stlink-v2.cfg и -c "transport select swd" Все то же Код C:\openocd-0.9.0-dev-141103193059>bin-x64\openocd-x64-0.9.0-dev-141103193059.exe -d1 -f scripts\interface\stlink-v2-1.cfg -c "transport select swd" -f scripts\target\stm32f1x.cfg Open On-Chip Debugger 0.9.0-dev-00186-g30203b3 (2014-11-13-22:44) Licensed under GNU GPL v2 For bug reports, read http://openocd.sourceforge.net/doc/doxygen/bugs.html debug_level: 1 Error: Debug adapter doesn't support 'swd' transport Runtime Error: embedded:startup.tcl:20: in procedure 'transport' in procedure 'ocd_bouncer' at file "embedded:startup.tcl", line 20 Из всего моего зоопарка отладчиков только один vsllink подключается к LPC, но работать через gdb не хочет. Причем он подключается без сброса. Вот лог Код C:\openocd-0.9.0-dev-141103193059>bin-x64\openocd-x64-0.9.0-dev-141103193059.exe -f scripts\interface\vsllink.cfg -f scripts\target\lpc11xx.cfg Open On-Chip Debugger 0.9.0-dev-00186-g30203b3 (2014-11-13-22:44) Licensed under GNU GPL v2 For bug reports, read http://openocd.sourceforge.net/doc/doxygen/bugs.html Error: session's transport is not selected. Info : session transport was not selected, defaulting to JTAG Info : VSLLink SWD mode enabled adapter speed: 10 kHz adapter_nsrst_delay: 200 cortex_m reset_config sysresetreq Info : Versaloon(0x15)by Simon(compiled on Nov 9 2013) Info : USB_TO_XXX abilities: 0x0000176E:0x010001EF:0xC0000007 Info : clock speed 10 kHz Info : SWD IDCODE 0x0bb11477 Info : lpc11xx.cpu: hardware has 4 breakpoints, 2 watchpoints Ему даже не нужно указывать транспорт. Вернее я его поменял в файле swj-dp.tcl Затем пытаюсь к нему подключится Код Info : accepting 'gdb' connection on tcp/3333 undefined debug reason 7 - target needs reset Error: Fail to receive usb data. Error: usbtoswd command 0x28 failed with 0x28 Error: Invalid length of return data Error: usbtoswd command 0x28 failed with 0x61 Error: Invalid length of return data Error: Failed to write memory at 0x00000fe0 Warn : negative acknowledgment, but no packet pending Warn : negative acknowledgment, but no packet pending Info : dropped 'gdb' connection Я уже (опять таки от нечего делать) собрал openocd под Debian результат тот же. Но в ИАР работает тот же St-Link Да сам софт пересобрал по Вашей рекомендации изменив стартап-файл и скрипт линкера. Его и пытаюсь залить.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|