SystemInit function ends up at add odd address in Kiel ARM compiler

0

I'm seeing some weird behaviour in the Kiel compiler. This is the reset code, I'm using a generic STM32F103C8 board (which uses an M3 core), and the SystemInit function (which is provided by the Kiel libraries) has somehow ended up at an odd address (0800043D), you can see from the screenshot below that the pointer at 080001F8 contains this value and sure enough, when the instruction at the PC (BLX r0) is executed, a hard fault occurs. Has anyone seen this happen before? How can I get it to put the SystemInit function at an even address?

Also, my main() function seems to have ended up at an odd address as well... Shouldn't the compiler align these for me?

These 2 lines from the map file are interesting:

0x08000000   0x000000ec   Data   RO         1224    RESET               startup_stm32f10x_md.o
0x080000ec   0x00000008   Code   RO         1269  * !!!main             c_w.l(__main.o)

Bug?

arm
stm32
asked on Stack Overflow May 15, 2016 by Charlie Skilbeck • edited May 15, 2016 by Charlie Skilbeck

0 Answers

Nobody has answered this question yet.


User contributions licensed under CC BY-SA 3.0