关闭mmu和cache

Posted 三石居士

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关闭mmu和cache相关的知识,希望对你有一定的参考价值。

处理器内部寄存器,访问速度最快,但是数量少

TCM:紧耦合存储器(Cache、主存储器)

辅助存储器(Flash、SD等)

 

Cache是一种容量小但是存取速度非常快的存储器

它保存最近用到的存储器中的数据的拷贝,对于程

序员来说,Cache是透明的,他自动决定保存哪些

数据、覆盖哪些数据。按照功能划分:

I-cache:指令Cache

D-cache:数据Cache

虚拟地址:程序中使用的地址

物理地址:物理存储单元的实际的地址

虚拟地址可以解决地址冲突,可以是进程使用更大的空间

1、使Icache+Dcache无效

2、关闭I/D-Cache

.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
    bl disable_watchdog    
    bl diasble_interrupt
    bl disable_mmu
    mov pc, lr
    
set_svc:
    mrs r0, cpsr
    bic r0, r0, #0x1f
    orr r0, r0, #0xd3
    msr cpsr, r0
    mov pc, lr

#define pwTCON 0x53000000
disable_watchdog:
    ldr r0, =pwTCON
    mov r1, #0x0
    str r1, [r0]
    mov pc, lr

disable_interrupt
    mvn r1, #0x0
    ldr r0, =0x4a000008
    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
    mcr p15,0,r0,c1,c0,0
    mov pc, lr

 

以上是关于关闭mmu和cache的主要内容,如果未能解决你的问题,请参考以下文章

第21课.cache和MMU

cache mmu

SDRAM和重定位---icache的开启和关闭

"arch/arm/kernel/head.S"里面一点片段的理解

PowerPC E500 MMU详解

MMU