This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

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