要设置系统工作svc特权模式,从前面的学习知道这需要设置CPSR程序状态寄存器。
在ARM Architecture Reference Manual.pdf文档中,2.Programmers' Model的2.5.Program status register。
可以看到CPSR的最后五位:M[4:0],就是来设置系统工作的系统模式。
接下来就是把CPSR的最后五位设置为0b10011,就是完成了设置系统的SVC模式。
实现的思路是:
取得这五位
清零,使用bic位清零指令。
置第0,1,4位为1,即可,使用orr位或指令。
要取得CPSR的后五位,由于是操作CPSR/SPSR,不能像操作一般的寄存器一样,直接操作,需要将CPSR/SPSR寄存器的值取出再进行相应的操作。取出的指令:mrs。最后是存入:msr。这样就完成了修改操作。
修改的代码:
上面的操作就能够实现把cpsr的末尾5位设置为0b10011。完成了设置系统工作在SVC模式。
我们做这些操作的时候,一般都是参考uboot里的设置来操作的。看看uboot里是怎么设置的:
可以看到OK6410的uboot里是设置为0xd3的,0xd3的二进制:
看到uboot里,还把[6][7]位设置为了1,看看这两位的功能,是设置中断的,uboot把中断和快中断都关闭了。
由于uboot是老大,所以,这里也改为了0xd3,2440,6410,210都是一样的操作。最后start.S的代码是:
.text
.global _start
_start:
b reset
ldr pc, _undefined_instruction
ldr pc, _software_interrupt
ldr pc, _prefetch_abort
ldr pc, _data_abort
ldr pc, _not_used
ldr pc, _irq
ldr pc, _fiq
_undefined_instruction: .word undefined_instruction
_software_interrupt: .word software_interrupt
_prefetch_abort: .word prefetch_abort
_data_abort: .word data_abort
_not_used: .word not_used
_irq: .word irq
_fiq: .word fiq
undefined_instruction:
nop
software_interrupt:
nop
prefetch_abort:
nop
data_abort:
nop
not_used:
nop
irq:
nop
fiq:
nop
reset:
bl set_svc
set_svc:
mrs r1,cpsr
bic r1,#0x1f @clear r1的后五位,
@即是清除cpsr的后五位
orr r1,r1,#0xd3 @0b10011=0x13
msr cpsr,r1
上一篇:22.核心初始化之看门狗
下一篇:20.核心初始化之异常向量表
设计资源 培训 开发板 精华推荐
- NCP133AMX105TCGEVB:NCP133 XDFN-4 评估板 1V05
- 使用 Infineon Technologies AG 的 TLE6251G 的参考设计
- LT3970IDDB-3.3 5V 降压转换器的典型应用
- 使用 Cypress Semiconductor 的 MB3789 的参考设计
- 适用于工业电机控制应用的5kW低压大电流逆变器
- 2022年蓝桥杯EDA设计组-国赛
- NCV33072DR2G低压峰值检测器的典型应用
- 使用 Cypress Semiconductor 的 CY7C9689 的参考设计
- MC33074ADR2G 直流耦合反相放大器最大输出摆幅的典型应用
- 使用 Analog Devices 的 AD7985BCPZ 的参考设计
- 大联大品佳集团推出以复旦微和ams OSRAM产品为主的汽车氛围灯方案
- 为啥车载操作系统(Vehicle OS)越来越重要了呢?
- 车载传感器 — 一文详解激光雷达
- 汽车(超声波、毫米波、激光)雷达之间的简单区别
- 汽车电路相关知识大全
- Bourns 推出两款厚膜电阻系列,具备高功率耗散能力, 采用紧凑型 TO-220 和 DPAK 封装设计
- SABIC进一步深化与博鳌亚洲论坛的战略合作伙伴关系
- 使用 3.3V CAN 收发器在工业系统中实现可靠的数据传输
- 凌华智能推出AmITX Mini-ITX 主板,助力边缘人工智能和物联网创新
- 英飞凌携手马瑞利采用AURIX™ TC4x MCU系列推动区域控制单元创新