Hi, I am using Keil uVision V5.37.0.0. free version with uC STM32G041C8T6 and ULINK-ME programmer/debugger. Flash memory starts at 0x08000.00000. I would like the application to get stored into flash memory address 0x0800.1000. So I changed the Linker R/O Base to 0x0800.1000 and build and download it without any error saying 'Application running...'. If I look in the .map file I see the program resides in 0x0800.1000. But, it does not start. (Blinking Led)
An idea could be to compare the STM32G0 Blinky example project
Related:
µVision User's Guide (arm.com) Configure Startup Code
Arm Compiler for Embedded User Guide Application startup
ARMCC: Placing Code at an Absolute Address Using the Keil uVision IDE
Presuming that MCUs internal bootloader checks if there is anything valid at address 0x0800 0000 and if it finds valid first 2 32-bit entries 1-st initial stack pointer (address in RAM), 2-nd valid reset handler address (address in flash) it will then continue by loading SP and jumping to reset handler. If 0x0800 0000 contains erased value (0xFF) or some other invalid values then internal bootloader will probably stay in a loop forever.
You should consult documentation on STM32G0 internal bootloader to understand how the excution of your application starts.
HenkvW said: I would like the application to get stored into flash memory address 0x0800.1000.
And did your plan include any technique by which you were going to inform the CPU about this decision?