So I’ve just got a new desktop PC put together and I wanted to develop with my ARM tools. I figured I’d pull the latest GCC, et cetera and build those, which puts me at gcc 4.3.3 (I was previously at 4.2.0)
I managed to get everything to build (though it was fussy about compiling with interwork enabled) and things even installed. I rebuilt a project I’d previously done on version 4.2.0, and though everything seems ok, my new code load isn’t working. I’m getting software interrupts all over the place and nothing seems to behave.
Looking at my .lss file, it seems that there’s some new stuff linked in right at the beginning of the file. (Presumably some CRT stuff for better interwork support) My old listing file looked like this:
00000000 <_boot>:
// Runtime Interrupt Vectors
// -------------------------
Vectors:
b _start // reset - _start
0: ea000012 b 50 <_mainCRTStartup>
ldr pc,_undf // undefined - _undf
4: e59ff014 ldr pc, [pc, #20] ; 20 <_undf>
ldr pc,_swi // SWI - _swi
8: e59ff014 ldr pc, [pc, #20] ; 24 <_swi>
ldr pc,_pabt // program abort - _pabt
c: e59ff014 ldr pc, [pc, #20] ; 28 <_pabt>
ldr pc,_dabt // data abort - _dabt
10: e59ff014 ldr pc, [pc, #20] ; 2c <_dabt>
nop // reserved
14: e1a00000 nop (mov r0,r0)
Where as my new one looks like this:
00000000 <__disableIRQ_from_thumb>:
0: 4778 bx pc
2: 46c0 nop (mov r8, r8)
4: ea0000c2 b 314 <disableIRQ>
00000008 <__restoreIRQ_from_thumb>:
8: 4778 bx pc
a: 46c0 nop (mov r8, r8)
c: ea0000e5 b 3a8 <restoreIRQ>
00000010 <_boot>:
_boot:
// Runtime Interrupt Vectors
// -------------------------
Vectors:
b _start // reset - _start
10: ea000012 b 60 <_mainCRTStartup>
ldr pc,_undf // undefined - _undf
14: e59ff014 ldr pc, [pc, #20] ; 30 <_undf>
ldr pc,_swi // SWI - _swi
18: e59ff014 ldr pc, [pc, #20] ; 34 <_swi>
What gives? Is that stuff supposed to be there? Do I have to link differently now, or is this the intended behavior? Has anyone else made this migration, and if so… how’s it working out? Are there tricks to getting things working correctly?
I’m completely content to roll back to an older version and just do things that way, but based on http://gcc.gnu.org/gcc-4.3/changes.html … It looks like someone has worked hard to make interworking easier with these things, and if I can take advantage of it, I’d really like to.
Thanks!
-R