LPC2368学习笔记(二)、移植ADS工程
最近在维护一个LPC2368的控制板,由于软件是使用ADS开发的,保险起见我也使用ADS进行维护工作,由于兼容性的问题ADS经常在关键时刻卡死,这让我在维护过程中十分痛苦,因此我想将程序移植到MDK中进行维护。
MDK新建工程添加文件,编译的时候没报什么问题,但是在进行链接的时候报了个错误:
linking…
.\Objects\proj.sct(7): error: L6236E: No section matches selector - no section to be FIRST/LAST.
Not enough information to list image symbols.
Not enough information to list the image map.
由于工程使用的不是MDK自带的启动文件,于是我将启动文件更换为MDK自带的启动文件,然后编译通过。
或者可以打开原工程的启动文件找到程序入口的那段汇编代码,例:
CODE32
AREA vectors,CODE,READONLY
ENTRY
将其改为
CODE32
AREA RESET,CODE,READONLY
ENTRY
就可以了。
遇到
..\target\Startup.s(155): warning: A1876W: Use of ‘|’ as a synonym for
the :OR: operator is deprecated.
警报可以定位到那一行,将“|”改成“:OR:”,例:
MSR CPSR_c, #(SVC32Mode|NoFIQ)
改成
MSR CPSR_c, #(SVC32Mode:OR:NoFIQ)
就可以了。
遇到
..\target\Startup.s(219): warning: A1608W: MOV pc, instruction
used, but BX is preferred
可以将MOV pc, 替换成BX
例:
将
MOV PC, R0
替换成
BX R0
不过变成
MOVS PC, R0
好像也不影响编译结果。