u-boot关闭MMU和I/D Cach

ARM存储体系

u-boot关闭MMU和I/D <wbr>Cach

处理器内部处理器:速度快,数量少

紧耦合存储器:速度慢,容量大(例:210512MB的主存储器)

辅助存储器:速度更慢,容量大。

 

虚拟地址的作用:1、解决了地址冲突

                2、可以让进程使用更大的空间

 

虚拟地址到物理地址是通过MMU来转化的。

 

ARM11之前 CachMMU之前。

ARM11(包括ARM11CachMMU之后

不管CachMMU之前还是之后,都不影响MMU的作用


Cach存储的是主存储器的数据拷贝。

 

Cach的类型有I-Cachinstruction cach)指令Cach

            D-CachData)数据Cach


2440 : 16KI/D Cach

6410 : 16KI/D Cach

210 : 32KI/D Cach

 

 

 

问题:MMU这么好,为什么要关闭呢?

         因为在系统上电后,并没有配置MMU,所以关闭MMUCach.

问题:为什么可以不用关闭I-CAch,而必须关闭D-Cach

         因为在在copy内核的时候,假如D-Cach没有关闭,会发生数据copy 的错误。

     I-Cach不是那么严格,所以不用一定要关闭

 

ARM11210CP15寄存器基本是一样的,操作也一样,所以代码可以互用。

和MMU。Cach有关系的寄存器  CAP15、Register 1, control register 和 Register 7, cache operations registe

.text

.global _start

_start:

         b rest

         ldr pc ,  _undefine_instruction

         ldr pc , _software_interrrupt

         ldr pc , _prefetch_aport

         ldr pc , _data_abort

         ldr pc , _not_use

         ldr pc , _irq

         ldr pc , _fiq

 

 

 

_undefine_instruction: .word undefine_instruction

_software_interrrupt: .word software_interrrupt

_prefetch_aport: .word prefetch_aport

_data_abort:.word data_abort

_not_use: .word not_use

_irq: .word irq

_fiq: .word fiq

 

 

undefine_instruction:

         nop

software_interrrupt:

         nop

prefetch_aport:

         nop

data_abort:

         nop

not_use:

         nop

irq:

         nop

fiq:

         nop

rest:

         bl set_svc

         bl disable_watchdog

         bl disable_interrupt

         bl disable_mmu

set_svc:

         mrs r0 , cpsr

         bic r0 , r0 , #0x1f

         orr r0 , r0 , #0xd3

         msr cpsr , r0   

         mov pc , lr

        

        

#define pWTCON 0xE2700000

disable_watchdog:

         ldr r0 , =pWTCON

         mov r1 , #0x0

         str r1 , [r0]     

         mov pc , lr

        

        

  

disable_interrupt:

         mvn r1 , #0

         ldr r0 , =0xf2000014

         str r1 , [r0]

         ldr r0,=0xf2100014

         str r1,[r0]

 

         ldr r0,=0xf2200014

         str r1,[r0]

 

         ldr r0,=0xf2300014

         str r1,[r0]

         mov pc, lr

        

        

disable_mmu:

         mcr p15,0,r0,c7,c7,0

         mrc p15, 0, r0, c1, c0, 0  //读取寄存器

         bic r0 , r0 , #0x00000007 //顺便disable了第一位 ,因为可以不用disable I-cach,所以在这里没有disable I-cach(12),

         mcr p15, 0, r0, c1, c0, 0  //写寄存器

         mov pc , lr

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值