Jump to content

    

OpenOCD не видит флешку STM32L

Решил переложить пару проектов с 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 (для последней она не сработала, помимо прочего, все по той же причине: не видит флешку)

Share this post


Link to post
Share on other sites

Свежая! Возможно даже слишком свежая - из гит-репозитория собирал! Я бы был склонен думать, что она даже сырая, но ведь с stm32f103 проблем-то нет...

Да и после гугулежа не нашел, чтобы народ жаловался на работу openocd с stm32l.

Share this post


Link to post
Share on other sites

С STM32L я не работал. Выглядит странно - ID кристалла читается, значит связь есть. А вот эти странные нули... Вход сброса процессора случайно не притянут к земле? Возможно стоит написать в рассылку openocs-users, приложив лог, полученный с ключем --debug.

Share this post


Link to post
Share on other sites
Свежая! Возможно даже слишком свежая - из гит-репозитория собирал!

Я то же собирал из репозитория, проблем не возникло. Вот лог прошивки 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. Всё прошиваеться.

Share this post


Link to post
Share on other sites

мне давече тоже выдади на эльке платку - попробывал, вроде работает - флеш стираю заодно с записью . оосd также самый свежий из репо, есть опасения что действительно как предположил коллега есть проблемы с ресетом.

Share this post


Link to post
Share on other sites

Руки никак не доходили отписаться...

Проблема была в том, как написал Спенсер Оливер, что не все кристаллов при чтении адреса 0x1ff8004c возвращают размер флеши.

Он эту ситуацию учел (коммиты 055abd... и 531fbf...)!

Теперь действительно, "полет нормальный"....

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this