Getting error on building

Hi friends,

I am a beginner. I typed a program and after translating i get no error. But i get an error as shown below, while building hex file for that program.

The error is

filename.sct(7): error: L6236E: No section matches selector - no section to be FIRST/LAST.

Parents
  • Oh,God! l am also a beginner at ARM  programming  and  I can't compile a simple assembly project getting this error too!But finally l found the solution:

    R_IROM1 0x08000000 0x00040000  {    ; load region size_region
      ER_IROM1 0x08000000 0x00040000  {  ; load address = execution address
       *.o (RESET, +First)
       *(InRoot$$Sections)
       .ANY (+RO)
      }
      RW_IRAM1 0x20000000 0x0000A000  {  ; RW data
       .ANY (+RW +ZI)
      }
    }
    

    The _FIRST object that the linker wants to put into the image is the area called RESET. You do not have a RESET region in your code. Add something along the lines of

    AREA    RESET, DATA, READONLY
    

    to your assembly file where you want execution to begin.

    Create a project with the startup file and look for the AREA RESET ..... declaration and copy that.

    For Cortex it looks like:

                    AREA    RESET, DATA, READONLY
                    EXPORT  __Vectors
                    EXPORT  __Vectors_End
                    EXPORT  __Vectors_Size
    
    __Vectors       DCD     __initial_sp               ; Top of Stack
                    DCD     Reset_Handler              ; Reset Handler
                    DCD     NMI_Handler                ; NMI Handler
                    DCD     HardFault_Handler          ; Hard Fault Handler
                    DCD     MemManage_Handler          ; MPU Fault Handler
                    DCD     BusFault_Handler           ; Bus Fault Handler
                    DCD     UsageFault_Handler         ; Usage Fault Handler
                    DCD     0     
    

    Each of those handlers needs to be declared, but you can just add the stack pointer and reset handler to get started.

    Hope it helps as well!

Reply
  • Oh,God! l am also a beginner at ARM  programming  and  I can't compile a simple assembly project getting this error too!But finally l found the solution:

    R_IROM1 0x08000000 0x00040000  {    ; load region size_region
      ER_IROM1 0x08000000 0x00040000  {  ; load address = execution address
       *.o (RESET, +First)
       *(InRoot$$Sections)
       .ANY (+RO)
      }
      RW_IRAM1 0x20000000 0x0000A000  {  ; RW data
       .ANY (+RW +ZI)
      }
    }
    

    The _FIRST object that the linker wants to put into the image is the area called RESET. You do not have a RESET region in your code. Add something along the lines of

    AREA    RESET, DATA, READONLY
    

    to your assembly file where you want execution to begin.

    Create a project with the startup file and look for the AREA RESET ..... declaration and copy that.

    For Cortex it looks like:

                    AREA    RESET, DATA, READONLY
                    EXPORT  __Vectors
                    EXPORT  __Vectors_End
                    EXPORT  __Vectors_Size
    
    __Vectors       DCD     __initial_sp               ; Top of Stack
                    DCD     Reset_Handler              ; Reset Handler
                    DCD     NMI_Handler                ; NMI Handler
                    DCD     HardFault_Handler          ; Hard Fault Handler
                    DCD     MemManage_Handler          ; MPU Fault Handler
                    DCD     BusFault_Handler           ; Bus Fault Handler
                    DCD     UsageFault_Handler         ; Usage Fault Handler
                    DCD     0     
    

    Each of those handlers needs to be declared, but you can just add the stack pointer and reset handler to get started.

    Hope it helps as well!

Children
No data
More questions in this forum