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.
I'm using Keil V4.72.10.0
Tools version (including fromelf hex file generator) is V5.03.0.76
My product has a memory mapped Flash and RAM. Part of the flash is used for code and part of the flash is used for nonvolatile data.
Obviously, when updating Flash, the code cannot be running from Flash. So, I located the flash routines in RAM with the rest of the code in Flash. I used a scatter load file. Flash is located at 0x0. RAM starts at 0x20000000.
However, the intel hex file simply moves the Flash Driver code to the end of the hex file without an intervening "Extended Linear Address Record" record type to change the upper 16 bits of the address.
Obviously, I do not want to go hand modifying hex files every time I build my project.
I checked the map file, and sure enough the Flash Driver code is located in Flash (part of map file included below).
This seems like an obvious bug with fromelf. How would I go about fixing this issue? Is there a newer version of fromelf with this bug fixed?
--------------------------------------------------------------------------------------------- 0x00012504 0x00000094 Code RO 2220 i.main main.o 0x00012598 0x00000078 Code RO 2524 i.setupEbi_initEBISettings setupebi.o 0x00012610 0x00000004 Data RO 2851 .constdata rtosinit_cmsis_cm0.o 0x00012614 0x00000010 Data RO 4996 .constdata drvsys.o 0x00012624 0x00000030 Data RO 6047 Region$$Table anon$$obj.o
Execution Region ER_FMC (Base: 0x20000000, Size: 0x0000026c, Max: 0xffffffff, ABSOLUTE)
Base Addr Size Type Attr Idx E Section Name Object
0x20000000 0x00000254 Code RO 3445 DrvFMCCode drvfmc.o 0x20000254 0x0000000c Ven RO 6057 Veneer$$Code anon$$obj.o 0x20000260 0x0000000c Ven RO 6058 Veneer$$Code anon$$obj.o
---------------------------------------------------------------------------------------------
Thanks in advance