ARM学习笔记020之_asm_、CPSR、SPSR、位置无关码等问题
2014-01-10 16:49
399 查看
2014-01-05
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<<n)“,“|=(1<<n)”(这两个没有先后顺序)
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<<n)“,“|=(1<<n)”(这两个没有先后顺序)
相关文章推荐
- 【学习笔记】NGUI中实例化预设物体的位置问题
- 强化学习笔记01,02——强化学习问题和Multi-arm Bandits
- ARM学习笔记014之jlink连不上和tftp权限不够的问题
- ARM学习笔记010之Gcc编译新问题
- PE结构学习笔记--关于AddressOfEntryPoint位置在文件中怎么确定问题
- arm学习笔记020之mov pc,lr的解释
- PE结构学习笔记--关于AddressOfEntryPoint位置在文件中怎么确定问题
- 嵌入式学习笔记--关于ARM中SWP指令的执行顺序问题【待验证】
- R语言学习笔记之<在Linux上遇到的问题集锦>
- cocos2d-x 【小菜在学习】锚点与位置个人理解笔记
- C++学习笔记第一天:熟悉C++,解决“Cannot find or open the PDB file”问题
- ARM&LINUX学习笔记(3)---安装交叉编译器
- scratch学习笔记1——动作积木及角色位置关系
- debian学习笔记--解决挂载分区中出现乱码问题
- 【Linux学习笔记】28:位置参数变量
- MatLab建模学习笔记7——线性规划问题求解
- python学习笔记8——公约数与公倍数问题
- canvas学习笔记——关于css设置canvas画布大小的问题
- 黑马程序员_学习笔记5多线程在的应用遇到的主要问题及解决方法。