ads工程移植到KeilMDK编译出现的警告和错误解决 keil mdk 5.21a

warning:A1876W: Useof '|' as a synonym for the :OR: operator is deprecated.

部分源代码:

MSR CPSR_c, #(NoInt|IRQ32Mode) ;进入IRQ模式。

解决方法:把"|"修改为":OR:", 如下

MSR CPSR_c, #NoInt:OR:IRQ32Mode ;进入IRQ模式。

warning:A1608W: MOVpc, instruction used, but BX is preferred
解决方法:把MOV pc,替换为 BX


Error:L6238E:os_cpu_a.o(subr) contains invalid call from '~PRES8 (The user didnot require code to preserve 8-byte aligment of 8-byte dataobjects)' function to 'REQ8 (Code was permitted to depend on the8-byte aligment of 8-byte data items)' function OSIntExit.
解决方法:在汇编程序前面加上PRESERVE8

PRESERVE8
AREA |subr|, CODE, READONLY
IMPORT OSIntNesting
IMPORT OSTCBCur
IMPORT IsrIRQ

…………


warning:A1085W:Forced user-mode LDM/STM must not be followed by use of bankedR8-R14
部分源代码:
STMFD SP,{R3,SP,LR}^ ;系统模式SP→|R0 |

SUB SP,SP,#12 ;系统模式SP→|SPSR|
解决方法:在两行语句中间加nop,即可解决warning

STMFD SP,{R3,SP,LR}^ ;系统模式SP→|R0 |
nop
SUB SP,SP,#12 ;系统模式SP→|SPSR|

error:L6236E: No sectionmatches selector - no section to be FIRST/LAST.
ads工程移植到KeilMDK编译出现的警告和错误解决 keil mdk 5.21a
部分源代码:
RuninFlash.sct
LR_ROM1 0x00000000
{ ; load region
ER_ROM1 0x00000000 0x0200000
{ ; load address = execution address
*.o (RESET, +First);报错的地方
*(InRoot$$Sections)
.ANY (+RO)
}
RW_RAM1 0x0C000000 0x800000
{ ; RW data
.ANY (+RW +ZI)
}
}
解决方法:
在启动文件,我的是44binit.s 中找到
AREA Init,CODE,READONLY
改为
AREARESET,CODE,READONLY

  

爱华网本文地址 » http://www.413yy.cn/a/25101010/31593.html

更多阅读

声明:《ads工程移植到KeilMDK编译出现的警告和错误解决 keil mdk 5.21a》为网友蓝褶裙的姑娘分享!如侵犯到您的合法权益请联系我们删除