Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: OpenOCD не видит флешку STM32L
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Cредства разработки для МК > GNU/OpenSource средства разработки
dimay192
Решил переложить пару проектов с 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 (для последней она не сработала, помимо прочего, все по той же причине: не видит флешку)
Сергей Борщ
Там еще один странный результат есть:

QUOTE (dimay192 @ Jul 2 2012, 06:23) *
xPSR: 00000000 pc: 00000000 msp: 00000000


Версия OpenOCD свежая?
dimay192
Свежая! Возможно даже слишком свежая - из гит-репозитория собирал! Я бы был склонен думать, что она даже сырая, но ведь с stm32f103 проблем-то нет...
Да и после гугулежа не нашел, чтобы народ жаловался на работу openocd с stm32l.
Сергей Борщ
С STM32L я не работал. Выглядит странно - ID кристалла читается, значит связь есть. А вот эти странные нули... Вход сброса процессора случайно не притянут к земле? Возможно стоит написать в рассылку openocs-users, приложив лог, полученный с ключем --debug.
ek74
Цитата(dimay192 @ Jul 2 2012, 10:15) *
Свежая! Возможно даже слишком свежая - из гит-репозитория собирал!

Я то же собирал из репозитория, проблем не возникло. Вот лог прошивки STM32L151RBT6
CODE

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


Цитата(dimay192 @ Jul 2 2012, 07:23) *
Второй вопрос возник из-за того, что для stm32f1 есть отдельный набор команд (stm32f1x unlock 0, stm32f1x mass_erase 0,...), а для stm32lx подобного нет.
Для этого, я использую по-секторное стирание.
Код
flash erase_sector 0 0 31

Вообщем полёт нормальный, с учетом того, что у меня в JTAG chain сидят ещё STM32F405RGT6 и MAX5M240ZT100ISN. Всё прошиваеться.
klen
мне давече тоже выдади на эльке платку - попробывал, вроде работает - флеш стираю заодно с записью . оосd также самый свежий из репо, есть опасения что действительно как предположил коллега есть проблемы с ресетом.
dimay192
Руки никак не доходили отписаться...
Проблема была в том, как написал Спенсер Оливер, что не все кристаллов при чтении адреса 0x1ff8004c возвращают размер флеши.
Он эту ситуацию учел (коммиты 055abd... и 531fbf...)!
Теперь действительно, "полет нормальный"....
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.