First to say, I have read the documentation about the linker and explored some of the xml files, but I am still befuddled about what I am trying to do here! Next to say I have never even looked at a linker file before so am rather unsure of what I have read up in the Crossworks reference manual.
I have FreeRTOS running in an STM32F103RB. I need to shift where that starts executing from 0x8000000 to 0x8000800 freeing up space in the first 2k to have my little boot loader which will read a new image FreeRTOS has placed in external SPI flash and programme it into internal flash, starting at 0x8000800.(I might need a little more than 2k, but let's assume that's all I need for the time being!)
The reference manual talks about the xml files and specifically the Section Placement file. In my project manager in Linker Options this is claimed to be $(StudioDir)/targets/section_placement.xml but this file does not exist!
I found a memory map file: $(TargetsDir)/ST_STM32F10x/ST_STM32F103RB_MemoryMap.xml which is here:
.rowley_associates_limited/CrossWorks for ARM/packages/targets/STM32/STM32F103RB_MemoryMap.xml
And this does seem to partially indicate it is defining flash here:
<MemorySegment size="0x20000" access="ReadOnly" name="FLASH" start="0x08000000"/>
The size is wrong though.
Also talks about this section placement file.
One other thing that I am unclear of: when I have sorted the above and my boot loader has finished either upgrading the code or jumping straight out because there is no software to upgrade, how do you get it to jump to 0x8000400 to start the FreeRTOS application?
Please sign in to leave a comment.