问题
I'm new to ARM
programming using Keil Microvision V5.12
compiler.
I can't compile a simple assembly project getting this error:
.\Objects\learn.sct(7): error: L6236E: No section matches selector - no section to be FIRST/LAST.
I've tried searching and couldn't find any solution for this problem.
This is what I do:
- Create a project (without the startup file)
- Add a new assembly file (learn.s)
- Click
Build Target
.
Can anybody help?
回答1:
I Added this answer for newbies,
So, After create new project do same as picture:
回答2:
There is no 'FIRST' object in your source code. Your scatter file likely looks something like:
LR_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.
回答3:
For ARM LPC the startup assembly file Startup.s is something like this:
AREA MyStacks, DATA, NOINIT, ALIGN=2
IrqStackSpace SPACE IRQ_STACK_LEGTH * 4
FiqStackSpace SPACE FIQ_STACK_LEGTH * 4
AbtStackSpace SPACE ABT_STACK_LEGTH * 4
UndtStackSpace SPACE UND_STACK_LEGTH * 4
AREA RESET, DATA, READONLY
bottom_of_heap SPACE 1
AREA RESET, DATA, READONLY
StackUsr SPACE 1
Just replacing does the trick.
来源:https://stackoverflow.com/questions/27075807/error-l6236e-no-section-matches-selector-no-section-to-be-first-last