您的位置:首页 > 其它

各种问题解决

2017-01-08 20:44 295 查看
linker–control

–entry Reset_Handler

scopy.s(13): warning: A1608W: MOV pc, instruction used, but BX is preferred

warning: A1876W: Use of ‘|’ 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: MOV pc, instruction used, but BX is preferred

解决方法:把MOV pc, 替换为 BX

Error: L6238E: os_cpu_a.o(subr) contains invalid call from ‘~PRES8 (The user did not require code to preserve 8-byte aligment of 8-byte data objects)’ function to ‘REQ8 (Code was permitted to depend on the 8-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 banked R8-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 section matches selector - no section to be FIRST/LAST.

部分源代码:

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

改为

AREA RESET,CODE,READONLY
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: