关闭中断和关闭MMU

xiaoxiao2021-02-28  24

一、关闭中断 ①CPSR 中的I位和F位,置1(关闭IRQ和FIQ) ②中断屏蔽寄存器 S3C2440->14 Interrupt controller #define pINTMSK 0x4a000008            定义宏地址 disable_interrupt:     ldr r0, = pINTMSK                   伪指令,取pINITMSK所指向的值     mvn r1, #0x0                        长度小于8位,可以用mov     str r1, [r0]                        将r1的值存到r0的值指向的地址     mov pc, lr                           跳回bl disable_interrupt 二、关闭MMU 1、ARM存储体系 处理速度:从上到下依次放慢 存储数量:从上到下依次增加 2、Cache 容量小、存取速度非常快的存储器,用于保存最近用到的存储器中数据的拷贝。对于程序员来说,Cache是透明的。它自动决定保存哪些数据、覆盖哪些数据。按照功能划分: I-Cache:指令Cache,用于存放指令 D-Cache:数据Cache,用于存放数据 3、虚拟地址 虚拟地址:程序中使用的地址 物理地址:物理存储单元实际的地址 如果没有虚拟地址:①不同软件之间,地址访问会冲突 ②范围较小 4、MMU的作用 软件-->虚拟地址--MMU-->物理地址 5、关闭MMU ARM920T(核手册)-->CP15-->control register(CP15中有一个控制寄存器) 关闭MMU:①使I-Cache + D-Cache失效  CP15-->Register 7 ②关闭i/d-Cache MMU CP15-->Register 1 disable_mmu:     mcr p15,0,r0,c7,c7,0                    ; Invalidate ICache and DCache   这里Rd可以是任意,因为这里什么值对该命令是没有影响的。     mrc p15,0,r0,c1,c0,0                    ; read control register 从CP15控制寄存器中读取到r0     bic r0, r0, #0x00000007                 ; 将0、1、2三位清0(关闭D-cache和MMU,第二位是什么顺带了)     mcr p15,0,r0,c1,c0,0                    ; 再写进寄存器     mov pc, lr                             ;跳转到bl disable_mmu <script>window._bd_share_config={"common":{"bdSnsKey":{},"bdText":"","bdMini":"2","bdMiniList":false,"bdPic":"","bdStyle":"0","bdSize":"16"},"share":{}};with(document)0[(getElementsByTagName('head')[0]||body).appendChild(createElement('script')).src='http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion='+~(-new Date()/36e5)];</script> 阅读(37) | 评论(0) | 转发(0) | 0

上一篇:Error: invalid constant (6bf) after fixup

下一篇:点亮指路灯

相关热门文章 SHTML是什么_SSI有什么用...查看linux中某个端口(port)...卡尔曼滤波的原理说明...shell中字符串操作关于java中的“错误:找不到或... 给主人留下些什么吧!~~ 评论热议
转载请注明原文地址: https://www.6miu.com/read-450107.html

最新回复(0)