This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

Should interrupt handlers be at fixed locations?

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.

Parents Reply Children
No Data
Related