我是ARM使用Keil Microvision V5.12编译器编程的新手.我无法编译一个简单的程序集项目得到此错误:
.\Objects\learn.sct(7): error: L6236E: No section matches selector - no section to be FIRST/LAST.
Run Code Online (Sandbox Code Playgroud)
我试过搜索,找不到任何解决这个问题的方法.
这就是我做的:
Build Target.有人可以帮忙吗?
小智 6
您的源代码中没有'FIRST'对象.您的分散文件可能类似于:
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)
}
}
Run Code Online (Sandbox Code Playgroud)
链接器想要放入图像的_FIRST对象是名为RESET的区域.您的代码中没有RESET区域.添加一些东西
AREA RESET, DATA, READONLY
Run Code Online (Sandbox Code Playgroud)
到您希望执行开始的汇编文件.
使用启动文件创建一个项目,然后查找AREA RESET .....声明并复制它.
对于Cortex,它看起来像:
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
Run Code Online (Sandbox Code Playgroud)
需要声明每个处理程序,但您可以添加堆栈指针和重置处理程序以开始.