嵌入式学习-uboot-lesson4.4-关闭MMU和cache
来源:互联网 发布:羊毛刷批发淘宝网 编辑:程序博客网 时间:2024/05/20 11:21
一.cache
cache里面存放的是存储器数据的拷贝
Cache是一种容量小但存取速度非常快的存储器,它保存最近用到的存储器中数据的拷贝。对于程序员来说,Cache是透明的。它自动决定保存哪些数据、覆盖哪些数据。按照功能划分:
I-Cache(16KB): 指令Cache,用于存放指令
D-Cache(16kb): 数据Cache,用于存放数据
二
mmu和cache都是通过CP15协处理器来控制的
在Arm1176jzfs.pdf中
1.首先需要使ICACHE和dcache无效
2.然后将cp15寄存器里面的数据读取出来
3.将MMU和Dcace置为0,Icache则不是必需的
disable_mmu: mcr p15,0,r0,c7,c7,0 @使ICACHE 和DCACHE 无效 mrc p15,0,r0,c1,c0,0 @read control register bic r0,r0,#0x00000007 @mmu 和 dcache置零 mcr p15,0,r0,c1,c0,0 @write control register mov pc,lr
@****************************@name: start.S@by : stone@time: 2016.6.23@function: 关闭mmu@****************************.text.global _start @将_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: @处理未定义指令异常 nopsoftware_interrupt: @软中断 nopprefetch_abort: @预取指令异常 nopdata_abort: @数据访问异常 nopnot_used: @空位 nopirq: @中断 nopfiq: @快速中断 nopreset: @reset bl set_svc @设置为SVC模式 bl disable_watchdog @关闭看门狗 bl disable_interrupt @关闭中断 bl disable_mmu @关闭mmuset_svc: mrs r0, cpsr @将值取出cpsr寄存器 bic r0, r0, #0x1f @将后5位 即M[4:0]清零 orr r0, r0, #0xd3 @0b10011 转化为16进制为0x13 同时为了屏蔽irq和fiq,可以将其设置为0b11010011即0xd3 msr cpsr, r0 @将值送回cpsr寄存器 mov pc, lr @返回#define pwTCON 0x7E004000 @WTCON寄存器disable_watchdog: ldr r0, =pwTCON @把地址装载到R0 mov r1, #0x0 @置0,关闭看门狗 str r1,[r0] mov pc,lrdisable_interrupt: mvn r1,#0x0 @0x0 取反,给r1 ldr r0,=0x71200014 str r1,[r0] ldr r0,=0x71300014 str r1,[r0] mov pc,lrdisable_mmu: mcr p15,0,r0,c7,c7,0 @使ICACHE 和DCACHE 无效 mrc p15,0,r0,c1,c0,0 @read control register bic r0,r0,#0x00000007 @mmu 和 dcache置零 mcr p15,0,r0,c1,c0,0 @write control register mov pc,lr
菜鸟一枚,如有错误,多多指教。。。
0 0
- 嵌入式学习-uboot-lesson4.4-关闭MMU和cache
- 嵌入式学习-uboot-lesson4.3-关闭看门狗和中断
- OK6410的uboot关闭mmu和cache---嵌入式回归第九篇
- 关闭mmu和cache
- tiny6410关闭mmu和cache
- MMU和cache学习
- MMU和cache学习
- MMU和cache学习
- MMU和cache学习
- 嵌入式学习-uboot-lesson4.1-异常向量表
- 嵌入式学习-uboot-lesson4.2-设置SVC模式
- 嵌入式学习-uboot-lesson4.5-外设基地址初始化
- 嵌入式学习-uboot-lesson10-MMU初始化
- u-boot关闭CACHE和MMU
- uboot中的mmu和cache开启(基本协处理器操作)
- 基于S3C6410的ARM11学习(七) 核心初始化之关闭MMU和CACHE
- (6)uboot详解——关闭缓存和mmu
- uboot详解——关闭缓存和mmu
- jqgrid
- ZooKeeper架构学习(一)
- linux openjdk java命令不能用 解决方法
- C语言基础 关系运算符 与或非
- xCode 使用快捷键a
- 嵌入式学习-uboot-lesson4.4-关闭MMU和cache
- Java编程思想18.3 - 序列化技术
- Linux三种通配符
- px、pt、em与rem的区别(结尾不容错过哦)
- 求最长公共子序列
- 整数划分
- 最近不知道怎么了、老是因为莘县天气头疼。
- maven 不能加载ojdbc14.jar解决方法
- Elasticsearch java API (6) index API