1、_asm_:warning: implicit declaration of function '_asm_'
如果asm两边都是两个下划线就没有错误了:__asm__
2、 makefile中-O -S必须大写
3、lds文件中:SECTIONS必须大写
4、ARM920T 包含了一个当前程序状态寄存器(Current Program Status Register-CPSR),另外还有5 个用于异
常程序处理的程序状态保存寄存器(Saved Program Status Registers-SPSR)。这些寄存器的功能为:
● 保存最近已处理的ALU 操作的信息
● 控制中断的使能与禁止
● 设置处理器的运行模式
CPSR是指这个寄存器的整个32位,而CPSR_C是指其【7:0】这8个控制位
5、如果memsetup中各寄存器的值不设置为位置无关码,就会出现如下连接错误:
原因是这样的,我们先看一下s汇编文件:
存储管理器都没有设置好,memsetup后面的函数编译器自然不认识。
在链接脚本lds中,全部代码的起始运行地址都被设为0x30000000,但在memsetup中代码还在内部SRAM(steppingstone)中,为了能够在steppingstone运行这个函数,memsetup中的寄存器就应该位置无关,手动赋值。如果赋值时使用了数组,就是位置相关了,因为数组是局部变量或者全局变量,在调用它时会涉及到地址。
6、在设置一些寄存器时,如果某些位为1,某些位为0,我们最好使用直接给寄存器赋值的方法。如果用位操作,就需要使用两条语句:”&=~(1<
『本文转载自网络,版权归原作者所有,如有侵权请联系删除』