21.核心初始化之svc模式

发布者:PeacefulOasis最新更新时间:2024-10-30 来源: cnblogs关键字:核心初始化  svc模式  特权模式 手机看文章 扫描二维码
随时随地手机看文章

要设置系统工作svc特权模式,从前面的学习知道这需要设置CPSR程序状态寄存器

在ARM Architecture Reference Manual.pdf文档中,2.Programmers' Model的2.5.Program status register。

可以看到CPSR的最后五位:M[4:0],就是来设置系统工作的系统模式。

接下来就是把CPSR的最后五位设置为0b10011,就是完成了设置系统的SVC模式。

实现的思路是:

  1. 取得这五位

  2. 清零,使用bic位清零指令。

  3. 置第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


关键字:核心初始化  svc模式  特权模式 引用地址:21.核心初始化之svc模式

上一篇:22.核心初始化之看门狗
下一篇:20.核心初始化之异常向量表

小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved