2012-06-11 04:45 AM
Hello,
I’m trying to get the uID from a STM32F207 microcontroller using the integrated bootloader connected through the USART1 (as described in AN3155). I’ve already implemented this feature for other microcontrollers of family F101, F103 and F105 without any problem. Now I’m encountering some difficulties. My idea is to use the command “read� to get the content of the 12 bytes (96 bit) located in the registers starting at 0x1FFF7A10 (as specified in section 33 of RM0033) and containing the uID. The result is a NAK from the bootloader just after the number of bytes to be read have been sent (please, refer to figure 8 of AN3155). I post the sequence sniffed on the USART line. PC: 11 EE BL: 79 PC: 1F FF 7A 10 8A BL: 79 PC: 03 FC BL: 1F I tried to read more or less bytes than the 12 expected (e.g. this sequence tries to read 3 bytes), and I get a successful execution with 1 or 2 bytes only. Any other attempt to read to the address 0x1FFF7A10 fails. By reading table 21 in AN2606, I noticed that the address 0x1FFF7A10 seems to be placed outside of the system memory (where I thought to fund the uID registers) that ends at 0x1FF77DF. Moreover, from RM0033 it seems that the uID registers (33.1) are located at the same address than the flash size register (33.2). My questions are: - What is the right address of the uID registers? - Is it possible to access it through the integrated bootloader with my approach? Thanks. -- P.S.: this discussion could have been posted twice. Sorry.2012-06-11 09:33 AM
Regions supported by the system loader (address, length in hex)
; 08000000 100000 ; 1FFF0000 007800 ; 1FFF7800 000210 (ie to 1FFF7A0F) ; 1FFFC000 00000F ; 20002000 01E000 ; FFFF0000 000004 This would not preclude you from uploading software into RAM and executing that to achieve any functionality you wanted.2012-06-12 05:31 AM
Thank-you clive1.
I'll look for a workaround in my application.2012-06-13 01:24 AM
Oh my fucking god, ST get your shit together and fix this crappy forum. By now I've spent 15 minutes trying to post this reply.
Flash size info in the datasheet is definitely wrong. We have stm32f207ich6 (256K) parts with different data in that position. Not that any make sense as flash size. Even the docs don't make sense, 0x0400 should equal 1024K, not 0x4000.Example of contents at 0x1fff7a10:0x0024 0x0033 0x4709 0x3430 0x3836 0x034380xfcc0 0xc000 0xc000 0x04002012-06-13 05:43 AM
I'm using 256K devices, they have 1MB of viable FLASH, and 128KB of viable RAM.
Will dump out the memory shortly.1FFF7A10 : 32 00 34 00 0A 47 30 35 - 31 36 36 34 C0 FC 00 C0 2.4..G0516...
1FFF7A20 : 00 C0 00 04 FF FF FF FF - FF FF FF FF FF FF FF FF ................
1FFF7A30 : FF FF FF FF FF FF FF FF - FF FF FF FF 3A C5 39 C6 ............:.9.
2012-06-21 03:10 PM
The document (RM0033 Rev 4 section 33.2) claims that the Flash Size register is at 0x1FFF 7A10, but that is the same as the unique id. My FAE claims that it is a 16 bit value located at 0x1FFF 7A22.
2012-06-21 04:10 PM
They ALL have 1MB (1024 KB, ie 0x0400)