dimay192 0 2 июля, 2012 Опубликовано 2 июля, 2012 · Жалоба Решил переложить пару проектов с STM32F103CB на STM32L151CB. Столкнулся с проблемой: openocd не определяет размер флеш-памяти и ID чипа. Вот лог на команду flash info 0: Open On-Chip Debugger 0.6.0-dev-00610-gedf0c33 (2012-06-29-11:59) Licensed under GNU GPL v2 For bug reports, read http://openocd.sourceforge.net/doc/doxygen/bugs.html Info : only one transport option; autoselect 'jtag' 100 kHz adapter_nsrst_delay: 100 jtag_ntrst_delay: 100 cortex_m3 reset_config sysresetreq 150 kHz Info : max TCK change to: 30000 kHz Info : clock speed 150 kHz Info : JTAG tap: stm32l.cpu tap/device found: 0x4ba00477 (mfg: 0x23b, part: 0xba00, ver: 0x4) Info : JTAG tap: stm32l.bs tap/device found: 0x06416041 (mfg: 0x020, part: 0x6416, ver: 0x0) Info : stm32l.cpu: hardware has 6 breakpoints, 4 watchpoints Info : JTAG tap: stm32l.cpu tap/device found: 0x4ba00477 (mfg: 0x23b, part: 0xba00, ver: 0x4) Info : JTAG tap: stm32l.bs tap/device found: 0x06416041 (mfg: 0x020, part: 0x6416, ver: 0x0) target state: halted target halted due to debug-request, current mode: Thread xPSR: 00000000 pc: 00000000 msp: 00000000 Info : flash size = 0kbytes #0 : stm32lx at 0x08000000, size 0x00000000, buswidth 0, chipwidth 0 stm32lx - Rev: Y Info : JTAG tap: stm32l.cpu tap/device found: 0x4ba00477 (mfg: 0x23b, part: 0xba00, ver: 0x4) Info : JTAG tap: stm32l.bs tap/device found: 0x06416041 (mfg: 0x020, part: 0x6416, ver: 0x0) Error: stm32l.cpu -- clearing lockup after double fault target state: halted target halted due to debug-request, current mode: Handler HardFault xPSR: 0x00000003 pc: 00000000 msp: 0xffffffe0 Polling target failed, GDB will be halted. Polling again in 100ms shutdown command invoked Polling succeeded again Три платы - один результат! Думал может из-за того, что флешка заблокирована, но stm32f1xx при тех же условиях по-прежнему определяет объем флешки и выдает ID. так что, полагаю, дело не в этом... Тут собственно два вопроса: 1. из-за чего это может происходить 2. каким наборам команд использовать для управления Второй вопрос возник из-за того, что для stm32f1 есть отдельный набор команд (stm32f1x unlock 0, stm32f1x mass_erase 0,...), а для stm32lx подобного нет. Для стирания флеши попробовал такую команду: flash erase_address pad unlock 0x08000000 0x0001ffff но она не сработала ни для stm32f1x, ни для stm32lx (для последней она не сработала, помимо прочего, все по той же причине: не видит флешку) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 119 2 июля, 2012 Опубликовано 2 июля, 2012 · Жалоба Там еще один странный результат есть: xPSR: 00000000 pc: 00000000 msp: 00000000 Версия OpenOCD свежая? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimay192 0 2 июля, 2012 Опубликовано 2 июля, 2012 · Жалоба Свежая! Возможно даже слишком свежая - из гит-репозитория собирал! Я бы был склонен думать, что она даже сырая, но ведь с stm32f103 проблем-то нет... Да и после гугулежа не нашел, чтобы народ жаловался на работу openocd с stm32l. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 119 2 июля, 2012 Опубликовано 2 июля, 2012 · Жалоба С STM32L я не работал. Выглядит странно - ID кристалла читается, значит связь есть. А вот эти странные нули... Вход сброса процессора случайно не притянут к земле? Возможно стоит написать в рассылку openocs-users, приложив лог, полученный с ключем --debug. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ek74 0 3 июля, 2012 Опубликовано 3 июля, 2012 · Жалоба Свежая! Возможно даже слишком свежая - из гит-репозитория собирал! Я то же собирал из репозитория, проблем не возникло. Вот лог прошивки STM32L151RBT6 Open On-Chip Debugger 0.6.0-dev-ga21affa-dirty (2012-06-22-11:08) Licensed under GNU GPL v2 For bug reports, read http://openocd.sourceforge.net/doc/doxygen/bugs.html Info : only one transport option; autoselect 'jtag' 400 kHz adapter_nsrst_delay: 100 jtag_ntrst_delay: 100 cortex_m3 reset_config sysresetreq Info : device: 4 "2232C" Info : deviceID: 364511235 Info : SerialNumber: FTP6QG5WA Info : Description: Olimex OpenOCD JTAG A Info : clock speed 400 kHz Info : JTAG tap: cpld.tap tap/device found: 0x020a50dd (mfg: 0x06e, part: 0x20a5, ver: 0x0) Info : JTAG tap: slave.cpu tap/device found: 0x4ba00477 (mfg: 0x23b, part: 0xba00, ver: 0x4) Info : JTAG tap: slave.bs tap/device found: 0x06413041 (mfg: 0x020, part: 0x6413, ver: 0x0) Info : JTAG tap: STM32L151RBT6.cpu tap/device found: 0x4ba00477 (mfg: 0x23b, part: 0xba00, ver: 0x4) Info : JTAG tap: STM32L151RBT6.bs tap/device found: 0x06416041 (mfg: 0x020, part: 0x6416, ver: 0x0) Info : STM32L151RBT6.cpu: hardware has 6 breakpoints, 4 watchpoints Info : JTAG tap: cpld.tap tap/device found: 0x020a50dd (mfg: 0x06e, part: 0x20a5, ver: 0x0) Info : JTAG tap: slave.cpu tap/device found: 0x4ba00477 (mfg: 0x23b, part: 0xba00, ver: 0x4) Info : JTAG tap: slave.bs tap/device found: 0x06413041 (mfg: 0x020, part: 0x6413, ver: 0x0) Info : JTAG tap: STM32L151RBT6.cpu tap/device found: 0x4ba00477 (mfg: 0x23b, part: 0xba00, ver: 0x4) Info : JTAG tap: STM32L151RBT6.bs tap/device found: 0x06416041 (mfg: 0x020, part: 0x6416, ver: 0x0) target state: halted target halted due to debug-request, current mode: Thread xPSR: 0x01000000 pc: 0x080009cc msp: 0x20004000 Info : flash size = 128kbytes erased sectors 0 through 31 on flash bank 0 in 8.578125s wrote 7224 bytes from file ../../build/mcu_master/exe/us_classic_master.elf in 0.843750s (8.361 KiB/s) Info : JTAG tap: cpld.tap tap/device found: 0x020a50dd (mfg: 0x06e, part: 0x20a5, ver: 0x0) Info : JTAG tap: slave.cpu tap/device found: 0x4ba00477 (mfg: 0x23b, part: 0xba00, ver: 0x4) Info : JTAG tap: slave.bs tap/device found: 0x06413041 (mfg: 0x020, part: 0x6413, ver: 0x0) Info : JTAG tap: STM32L151RBT6.cpu tap/device found: 0x4ba00477 (mfg: 0x23b, part: 0xba00, ver: 0x4) Info : JTAG tap: STM32L151RBT6.bs tap/device found: 0x06416041 (mfg: 0x020, part: 0x6416, ver: 0x0) shutdown command invoked Второй вопрос возник из-за того, что для stm32f1 есть отдельный набор команд (stm32f1x unlock 0, stm32f1x mass_erase 0,...), а для stm32lx подобного нет.Для этого, я использую по-секторное стирание. flash erase_sector 0 0 31 Вообщем полёт нормальный, с учетом того, что у меня в JTAG chain сидят ещё STM32F405RGT6 и MAX5M240ZT100ISN. Всё прошиваеться. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
klen 1 27 июля, 2012 Опубликовано 27 июля, 2012 · Жалоба мне давече тоже выдади на эльке платку - попробывал, вроде работает - флеш стираю заодно с записью . оосd также самый свежий из репо, есть опасения что действительно как предположил коллега есть проблемы с ресетом. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimay192 0 11 октября, 2012 Опубликовано 11 октября, 2012 · Жалоба Руки никак не доходили отписаться... Проблема была в том, как написал Спенсер Оливер, что не все кристаллов при чтении адреса 0x1ff8004c возвращают размер флеши. Он эту ситуацию учел (коммиты 055abd... и 531fbf...)! Теперь действительно, "полет нормальный".... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться