在register 1寄存器中最后3位定义如下:
第0位可以关闭MMU
第1位可以关闭Data address check
第2位可以关闭Cache
当然你会说这里只关闭了Dcache,没有关闭Icache,
在register 1寄存器中第12位定义如下:
第12位可以关闭Icache,通常情况下,不对这一位做设定。
代码如下:
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
关键字:TQ2440 国嵌学院 gboot- MMU Cache
引用地址:
TQ2440国嵌学院gboot-关闭MMU和Cache
推荐阅读最新更新时间:2024-03-16 14:34
ov7670的移植(寄存器的配置)——基于tq2440
前言 前几天分析了ov9650的驱动,觉得还看得懂吧。于是开始移植代码,驱动ov7670。其实那个ov9650的驱动程序架构并不好。没有使用v4l2的驱动架构,这样应用就不能用完美使用v4l2的接口了。还有,他只是采集了p-path。并没有对c-path进行任何处理,也没开放什么接口。本文主要想讲讲s3c2440的camera接口和ov7670的寄存器配置。 一、开发环境 1.开发板:tq2440(s3c2440) 2.摄像头: ov7670 二、接口电路 下面是我买来的ov7670的摄像头的pcb图,重点是它的引脚图。为了与tq2440的camera接口更好的做比较,我把他们放在一起吧。 我选的是3
[单片机]
Eclipse开发调试ARM裸机程序(五)MMU调试
代码如下: @* @ File:head.S @ 功能:设置SDRAM,将第二部分代码到SDRAM,设置页表,启动MMU, @ 然后跳到SDRAM继续执行 @* @head.S .text .global _start _start: ldr sp, =4096 @ 设置栈指针,以下都是C函数,调用前需要设好栈 bl disable_watch_dog @ 关闭WATCHDOG,否则CPU会不断重启 bl memsetup @ 设置存储控制器以使用SDRAM bl copy_2th_to_sdram @ 将第二部分代码到SDRA
[单片机]
s3c2440之cache
cache高速缓冲存储器注意与块设备页高速缓存进行区别,一个是硬件的实现一个是软件的实现,块设备页高速缓存。 s3c2440/s3c2410里面主要有一个arm920t的核,但同时包含几个协处理器,协处理器相当于一个处理器,帮助主CPU完成如浮点数运算,这儿讨论的cache及MMU、TLB就会用到协处理器CP15。CPU与协处理器之间传递数据通过两个指令MCR、MRC。
[单片机]
tq2440触摸屏学习笔记
硬件平台:TQ2440 触摸屏检测方法可以分两种: 1.检测按下、弹起两个状态时的x y坐标值; 以检测按下状态是读取x y坐标值为例 实现代码如下 void Init_Touchpanel(void) { ClearPending(BIT_ADC); rSUBSRCPND|=BIT_SUB_TC ; //清adc中断 触摸屏中断 rADCDLY=40000; //ADC转换间隔 (1/3.6864M)*50000=13.56ms //Normal conversion mode:ADC Start or interval delay 0~65
[单片机]
S3C2440存储控制器和MMU浅析
一、S3C2440存储控制器 如果大家写过S3C2440的ARM裸机程序都应该知道通常SDRAM的起始地址是0X30000000,但是大家有没有想过为什么呢?下面我将给大家做一个简要的介绍。 查S3C2440的手册可知S3C2440可寻址1G的地址范围,但是S3C2440的地址线只有27根,理论上只能寻址2的27次方等于128M的地址范围。于是S3C2440通过一个叫BANK的东东解决了这个问题。S3C2440引出了8根BANK线(对应nGCS0~ nGCS7),通过这个8根线来选通和关闭不同的存储器,这样S3C2440最多就可以连接8个128M的存储器,只要在某一时刻只选通一个BANK就可以实现1G的寻址空间每个
[单片机]
【2440裸机】虚拟地址MMU
head.s文件 @************************************************************************* @ File:head.S @ 功能:设置SDRAM,将第二部分代码复制到SDRAM,设置页表,启动MMU, @ 然后跳到SDRAM继续执行 @************************************************************************* .text .global _start _start: ldr sp, =4096 @ 设置栈指针,以下都是C函数,调用前需要设好
[单片机]
TQ2440启动代码分析(三)
初始化程序中必须指明入口地址,因为处理器复位(仿真时,装载image)后PC 要找到入口开始执行代码,当各种异常或是中断产生的时候也要找到各个异常的入口开始执行代 码。从这里开始就是真正的代码入口了! AREA 伪指令用于定义一个代码段或数据段.ARM 汇编程序设计采用分段式设计,一 个 ARM 源程序至少需要一个代码段,大的程序可以包含多少个代码段及数据段. CODE 为定义代码段.默认属性为 READONLY; READONLY 指定本段为只读,代码段的默认属性为READONLY; ;========================================================== ;板子上
[单片机]
ARM核920T性能优化之MMU
一.虚存的工作原理 为了使任务有各自的虚拟存储映射,MMU硬件采用地址重定位(address relocation),即在地址访问主存之前,转换由处理器核输出的存储器地址。可认为在介于内核和主存间的MMU中有一个重定位寄存器,这样就能很容易理解这个转换过程。 当处理器核产生一个虚拟地址时,MMU取出这个虚拟地址的高位,并用重定位寄存器中的值来替换它,从而形成一个物理地址。虚拟地址的低位是一个偏移量,它转换成物理存储器的一个特定地址。一个重定位寄存器只能转换一块存储空间,这块存储空间的大小由虚拟地址的偏移量部分所占的位数所决定。这样的一块虚拟存储空间称为一页(page),而转换过程中所对应的那块物理存储空间称为一个页帧(pa
[单片机]