源代码中没有“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)
}
}
的_First对象链接要放入图像被称为RESET区域。您的代码中没有RESET区域。 沿您要开始执行的
AREA RESET, DATA, READONLY
行到你的汇编文件添加一些东西。
使用启动文件创建一个项目并查找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
这些处理器的
每个要声明,但你可以添加堆栈指针和复位处理程序上手。
非常感谢!我有另一个问题。在您提供的代码中,如何从代码访问导出的数据(即__Vectors)? – Javid 2014-12-07 09:29:10
在C?外部“C”值例如 extern“C”unsigned int __Vectors; 然后使用它(它将可能只读,如果在真实目标上使用) – SilverCode 2014-12-08 22:03:55
不是C.看看这个问题: http://stackoverflow.com/questions/27371905/how-to-write-在-至少-两个区域合臂组件 – Javid 2014-12-09 05:16:04