We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
Hello folks,
I wish to view the contents of flash memory on STM32L471 (1MB ROM) MCU using Keil ULINK2 debugger (uVision IDE v5.20.0.0), but when I do so the memory viewer (in Debug mode) displays all 0xFF where I expect to find data. I wonder if someone could suggest what I am doing wrong. Here is some background information.
In my Keil uVision project I have (among other files) a C file gsData.c containing a single initialized array, like this:
uint16_t gs[] = { 38, // 0x0026 217, // 0x00d9 72, // 0x0048 0, // 0x0000 4, // 0x0004 ... }
I use a modified scatter file to divide the flash ROM into a few regions so I can place gsData.o at a specific memory address. I do this because the array gs[] contains data which needs period updating without changing the main program. My scatter file looks like this:
LR_IROM1 0x08000000 0x00100000 { ; load region size_region ER_IROM1 0x08000000 0x00060000 { ; load address = execution address *.o (RESET, +First) *(InRoot$$Sections) .ANY (+RO) } ER_IROM2 0x08060000 0x00004000 { gsData.o (+RO) ; array gs[] will be located at 0x08060000 } ...
I verified from the MAP file that gs[] is placed at the location I expect:
Global Symbols Symbol Name Value Ov Type Size Object(Section) gs 0x08060000 Data 1576 gsData.o(.constdata) ... Execution Region ER_IROM2 (Base: 0x08060000, Size: 0x00000628, Max: 0x00004000, ABSOLUTE) Base Addr Size Type Attr Idx E Section Name Object 0x08060000 0x00000628 Data RO 4583 .constdata gsData.o
Now I compile and download my program to the MCU and enter debug mode in uVision IDE. I press "F5" to run the program to make sure the debugger is connected to the target and in the "Memory 1" window I enter the address 0x08060000 (alternatively the name of the symbol "gs" also works). I find the memory window shows all uninitialized flash at the address I expect to find gs[].
0x08064000: FF FF FF FF FF ...
I don't understand why I am not seeing the contents of the initialized array gs[] as defined in the C file.
Can anyone see what I am doing wrong here?
Thank you!