1

我使用了这个指南模拟 ARM 代码,它展示了如何模拟汇编代码(arm 7 little endian)并且运行良好。我刚刚将设备从 arm 7 little endian 更改为 arm cortex m3,这些是错误:

Build target 'Target 1' 
assembling test.s...
linking...
sa.axf: Error: L6320W: Ignoring --entry command. Cannot find argument 'Reset_Handler'.
sa.axf: Warning: L6320W: Ignoring --first command. Cannot find argument '__Vectors'.
Target not created

我认为问题在于我的项目没有一些启动文件。如果是这种情况,我该如何解决?

4

2 回答 2

1

Cortex-M 系列使用与“经典 ARM”不同的异常模型,因此需要不同的启动。我不确定 Keil 是如何使用它的,但也许可以尝试Reset_Handler在代码的开头添加一个标签。您可能还需要添加带有矢量定义的启动文件。使用他们应该提供的一些示例或新项目向导(如果有的话)可能会更容易。

于 2013-03-18T11:58:30.423 回答
0

显然 main() 函数入口点以前被定义为“Reset_Handler”函数,现在你的项目中没有它,所以链接器会抱怨。这可能只是你的问题的开始。

如果您想将现有示例从 ARM7 架构移植到 Cortex M3,那么使用汇编程序可能不是一个好主意,因为它们是非常不同的架构。

如果您绝对必须这样做,那么至少为新架构找到一些工作示例(不必做您需要的),然后从那里开始以获得工作启动文件、工具集项目文件(s ),以及总体上已知的良好工作环境。然后一步一步开始移植旧的东西。

于 2013-03-18T18:32:44.933 回答