Sysprogs forums › Forums › VisualGDB › Reprogram error after clear sector 11 of flash in runtime
- This topic has 3 replies, 2 voices, and was last updated 5 years, 4 months ago by support.
-
AuthorPosts
-
July 20, 2019 at 19:35 #25408ExtSolParticipant
Dear Support,
I try to write my FLASH driver to write my setting to FLASH memory.
I select the sector 11 (0x080E0000 – 0x080FFFF) for storage my datas.
Before i writing new datas to the area, the flash is need to erase the sector.
Here is my erase function, based on ST reference manual: https://pastebin.com/dxcSr0NX
After this function run, the VisualGDB can not reprogram the device. I get a following error while i starting debugging:
VisualGDB is licensed to ………………….
Error erasing flash with vFlashErase packetAfter this issue, the device is need to mass erase with STlinkUtility and VisualGDB can reprogram the device.
VisualGDB why not erase the flash after my code?
Best Regards:
ExtSol
July 20, 2019 at 20:19 #25411supportKeymasterIt is hard to say what exactly is going on, as VisualGDB uses an external tool (OpenOCD to program the FLASH memory and manage debugging), but most likely you set some FLASH attributes (e.g. sector protection) to a state that would prevent OpenOCD from reprogramming it.
Unfortunately, we are not able to review your projects as a part of our regular product support, however we can suggest some relevant documentation:
- You can read about OpenOCD’s commands for managing FLASH memory on this page.
- You can build OpenOCD from source code and step through it as shown in this tutorial.
Please also feel free to check on the ST’s forum. The OpenOCD’s FLASH memory driver for most of the STM32 devices was contributed by ST engineers, so they might be able to explain what is going on.
July 20, 2019 at 21:35 #25414ExtSolParticipantDear Support,
After your answer, i generate code with STM32CubeMx and imported to Visual Studio with VisualGDB.
Now, the code is using the original ST engineers driver, name is HAL.
I only call functions:
HAL_FLASH_Unlock();
FLASH_Erase_Sector(FLASH_SECTOR_11, VOLTAGE_RANGE_3);
HAL_FLASH_Lock();in main, before loop while(1).
First start of debugging is ok, when i restart the debugging, i get the some error:
GDB Session window:
VisualGDB is licensed to …………………….
Error erasing flash with vFlashErase packetOpenOCD window:
Open On-Chip Debugger 0.10.0 (2019-07-15) [https://github.com/sysprogs/openocd]
Licensed under GNU GPL v2
For bug reports, read
http://openocd.org/doc/doxygen/bugs.html
WARNING: interface/stlink-v2-1.cfg is deprecated, please switch to interface/stlink.cfg
Info : auto-selecting first available session transport “hla_swd”. To override use ‘transport select <transport>’.
Info : The selected transport took over low-level target control. The results might differ compared to plain JTAG/SWD
Info : clock speed 2000 kHz
Info : STLINK V2J32S7 (API v2) VID:PID 0483:3748
Info : Target voltage: 3.243329
Info : stm32f4x.cpu: hardware has 6 breakpoints, 4 watchpoints
Info : Listening on port 54327 for gdb connections
Info : Unable to match requested speed 2000 kHz, using 1800 kHz
Info : Unable to match requested speed 2000 kHz, using 1800 kHz
target halted due to debug-request, current mode: Thread
xPSR: 0x01000000 pc: 0x08001348 msp: 0x20020000
Info : Unable to match requested speed 8000 kHz, using 4000 kHz
Info : Unable to match requested speed 8000 kHz, using 4000 kHz
VisualGDB_OpenOCD_Ready
Info : Listening on port 6666 for tcl connections
Info : Listening on port 54328 for telnet connections
Info : accepting ‘gdb’ connection on tcp/54327
Info : device id = 0x10036413
Info : flash size = 1024 kbytes
Info : flash size = 512 bytes
Info : Unable to match requested speed 2000 kHz, using 1800 kHz
Info : Unable to match requested speed 2000 kHz, using 1800 kHz
Error: timed out while waiting for target halted
TARGET: stm32f4x.cpu – Not halted
Info : device id = 0x10036413
Warn : STM32 flash size failed, probe inaccurate – assuming 1024k flash
Info : flash size = 1024 kbytes
Info : flash size = 512 bytes
flash_bank_summary:0x8000000|0x100000|stm32f4x.flash
flash_bank_summary:0x1fff7800|0x200|stm32f4x.otp
FLASH progress reporting is now onError: jtag status contains invalid mode value – communication failure
Polling target stm32f4x.cpu failed, trying to reexamine
Examination failed, GDB will be halted. Polling again in 100ms
Info : Unable to match requested speed 2000 kHz, using 1800 kHz
Info : Unable to match requested speed 2000 kHz, using 1800 kHz
Error: mem2array: Read @ 0xe0042004, w=4, cnt=1, failed
Error executing event examine-end on target stm32f4x.cpu:
mem_helper.tcl:6: Error:
in procedure ‘ocd_process_reset’
in procedure ‘ocd_process_reset_inner’ called at file “embedded:startup.tcl”, line 214
in procedure ‘mmw’ called at file “target/stm32f4x.cfg”, line 79
in procedure ‘mrw’ called at file “mem_helper.tcl”, line 36
at file “mem_helper.tcl”, line 6
Error executing event gdb-flash-erase-start on target stm32f4x.cpu:Info : Erasing FLASH: 0x08000000-0x08004000…
Error: Target not halted
Error: failed erasing sectors 0 to 0
Error: flash_erase returned -304
Info : Previous state query failed, trying to reconnect
target halted due to debug-request, current mode: Thread
xPSR: 0x01000000 pc: 0x08001348 msp: 0x20020000
Polling target stm32f4x.cpu failed, trying to reexamine
Info : stm32f4x.cpu: hardware has 6 breakpoints, 4 watchpointsJuly 20, 2019 at 21:37 #25415supportKeymasterAs mentioned above, this looks like an incompatibility between the OpenOCD FLASH driver and the custom FLASH programming code you are using.
As both of those components are external to VisualGDB, unfortunately is it not covered by our product support. Please consider contacting ST support for further help on this.
-
AuthorPosts
- You must be logged in to reply to this topic.