I'm attempting to set up the GNU ARM Eclipse Plug-ins. I've created a few managed-build projects. I'm attempting to reproduce the results of the makefile in the hrs example that comes with the SDK. In my attempts, I've noticed my interrupt handlers shifting locations in my map file from project to project. Here's an excerpt from one project:
.text 0x0000000000016000 0x3b8
*(.Vectors)
.Vectors 0x0000000000016000 0xc0 ./src/gcc_startup_nrf51.o
0x0000000000016000 __Vectors
*(.text*)
.text 0x00000000000160c0 0x78 /usr/local/gcc-arm-none-eabi-4_8-2014q2/bin/../lib/gcc/arm-none-eabi/4.8.4/../../../../arm-none-eabi/lib/armv6-m/crt0.o
0x00000000000160c0 _mainCRTStartup
0x00000000000160c0 _start
.text 0x0000000000016138 0x48 ./src/gcc_startup_nrf51.o
0x0000000000016138 Reset_Handler
0x0000000000016174 NMI_Handler
0x0000000000016176 HardFault_Handler
0x0000000000016178 SVC_Handler
0x000000000001617a PendSV_Handler
Here's an example from another project:
.text 0x0000000000016000 0x3c4
*(.Vectors)
.Vectors 0x0000000000016000 0xc0 ./system/src/nrf51/Device/gcc/startup_nrf51.o
0x0000000000016000 __Vectors
*(.text*)
.text 0x00000000000160c0 0x78 /usr/local/gcc-arm-none-eabi-4_8-2014q2/bin/../lib/gcc/arm-none-eabi/4.8.4/../../../../arm-none-eabi/lib/armv6-m/crt0.o
0x00000000000160c0 _mainCRTStartup
0x00000000000160c0 _start
.text.is_disabled_in_debug_needed.4143.4034
0x0000000000016138 0x48 /var/folders/d8/4h5d65cd7wv75f2ym27dmtkc0000gn/T//cci5FuZh.ltrans0.ltrans.o
.text.is_manual_peripheral_setup_needed.4139.4037
0x0000000000016180 0x6c /var/folders/d8/4h5d65cd7wv75f2ym27dmtkc0000gn/T//cci5FuZh.ltrans0.ltrans.o
.text.nrf_delay_ms.4039
0x00000000000161ec 0x40 /var/folders/d8/4h5d65cd7wv75f2ym27dmtkc0000gn/T//cci5FuZh.ltrans0.ltrans.o
.text.main 0x000000000001622c 0x70 /var/folders/d8/4h5d65cd7wv75f2ym27dmtkc0000gn/T//cci5FuZh.ltrans0.ltrans.o
0x000000000001622c main
.text.SystemInit
0x000000000001629c 0x3c /var/folders/d8/4h5d65cd7wv75f2ym27dmtkc0000gn/T//cci5FuZh.ltrans0.ltrans.o
0x000000000001629c SystemInit
.text._exit 0x00000000000162d8 0x4 /var/folders/d8/4h5d65cd7wv75f2ym27dmtkc0000gn/T//cci5FuZh.ltrans0.ltrans.o
0x00000000000162d8 _exit
.text 0x00000000000162dc 0x54 ./system/src/nrf51/Device/gcc/startup_nrf51.o
0x00000000000162dc Reset_Handler
0x0000000000016324 NMI_Handler
0x0000000000016326 HardFault_Handler
0x0000000000016328 SVC_Handler
Notice how Reset_Handler
is at different locations. Is this OK? Also, in the second example, main
comes before any of the interrupt handlers even though the __Vectors
section starts at the same location.