关于 LPC24XX 的程序移植近来单片机升级了, 一下子进入 32 位时代, 有点措手不及! 还好, 网络互相的现代, 工程师不必从头开始, 充分利用网络资源, 加快开发进程。由于以前一直使用 KEIL 开发 51 单片机,使用方便,便于调试仿真。值得庆幸的是现在 ARM 型单片机也可以在 KEIL 中调试。可是网上大部分 ARM 实例是基于 ADS 的。直接移植过来就会一警告和错误。为了加快开发进程,还是选择移植借鉴部分实用例程。具体解决问题方法如下: 新推出的 KEIL 版开发工具 RVMDK 与老版 ADS 在工具架构组成上有以下不同: ARM 编译器版本、调试器、软件仿真、以及调试单元。出现如下提示: (128): warning: #1-D: last line of file ends without a piling ... (40): warning: #1-D: last line of file ends without a newline (128): warning: #1-D: last line of file ends without a newline 提示:" 文件结束了但没有空行" 这个警告, 这是由 RVMDK 编译器产生的警告, 所有程序文件最后一行必须有空行, 也可不去理它。在提示处按一下回车就行了。 (214): warning: A1608W: MOV pc,<rn> instruction used, but BX <rn> is preferred (258): warning: A1608W: MOV pc,<rn> instruction used, but BX <rn> is preferred 由于编译器版本的变化,对应的编译选项也有所变化。将 options for target 中 asm 标签页里面的 Eenable ARM/Thumb interworking 复选框去掉,就不产生这样的告警信息啦,不过不知道这样做会影响什么! 也可以根据提示改为 BX 跳转。如果您的程序中存在 ARM/Thumb 指令相互调用的情况,那么使用 BX 指令能够返回到正确的处理器状态。而使用 MOV 指令则不能实现处理器状态的切换。所以 keil 编译器建议您使用 BX 指令。例如把 MOV PC, LR 改为 BX LR。 : Error: L6238E: (vectors) contains invalid call from '~PRES8' function to 'REQ8' function FIQ_E xception. : Error: L6238E: (vectors) contains invalid call from '~PRES8' function to 'REQ8' function Targe tResetInit. 这是由于对目标文件进行链接时, ARM 工具的连接器会严格检查各个文件( objects ),判断它们是否复合 ARM 体系结构的 ABI 表准。由于 RV
LPCXX的程序移植 来自淘豆网www.taodocs.com转载请标明出处.