cancel
Showing results for 
Search instead for 
Did you mean: 

NACK using STM32G071 or F072 UART System Bootloader from STM32G071

mth
Associate

Initially a comment on the How to program an STM32 with another STM32 using an embedded bootloader Knowledge Base article.

Moved to the forum for better visibility & discussion.


STM32G071 --> STM32F072STM32G071 --> STM32F072 Hello Mr Montanari,

Thanks a lot for your article.

I carried out the following test with Host: STM32G071KBT6 and devices: STM32G071KBT6 or STM32F072RBT6. In both cases, I encounter a problem when reading the Flash (0x4002200); the response is NACK (STM32G071) or ACK followed by NACK (STM32F072). Could you indicate potential solutions to resolve this problem? Thank you in advance.

1 ACCEPTED SOLUTION

Accepted Solutions
LScarlassare
ST Employee

Hello, mth.

From the address mentioned, as TDK also pointed out, the address 0x4002200 is not within the addresses in the Flash memory.

The address you informed shows information about the Flash control registers, as per Table 6, RM0444 (STM32G0x1 advanced Arm<Sup>®</Sup>-based 32-bit MCUs - Reference manual).

imagem.jpg

The NACK result comes from trying to read said registers using the Read Memory command on something that is not a memory, but a register. To read the Flash memory, you should use the following address range: 0x0800 0000 - 0x0803 FFFF, according to Table 9 of the same Reference Manual.

LScarlassare_0-1768915169931.png

 

View solution in original post

2 REPLIES 2
TDK
Super User

> 0x4002200

This isn't an address within flash.

 

If you feel a post has answered your question, please click "Accept as Solution".
LScarlassare
ST Employee

Hello, mth.

From the address mentioned, as TDK also pointed out, the address 0x4002200 is not within the addresses in the Flash memory.

The address you informed shows information about the Flash control registers, as per Table 6, RM0444 (STM32G0x1 advanced Arm<Sup>®</Sup>-based 32-bit MCUs - Reference manual).

imagem.jpg

The NACK result comes from trying to read said registers using the Read Memory command on something that is not a memory, but a register. To read the Flash memory, you should use the following address range: 0x0800 0000 - 0x0803 FFFF, according to Table 9 of the same Reference Manual.

LScarlassare_0-1768915169931.png