求助]这本书在讲解MMU的时候,构造段描述符地址的语句是否有误~!?
我指的是例子代码那里,例如:
*(mmu_tlb_base+virtuladdr>>20)
书上就是这样构造一级页表的段描述符存储地址,但是此处的virtual address在向右移动了20位之后并没有再向左移动4位~!
virtual address右移8位的意思应该是要找出地址所在的段,然后再向左移4位应该是使得最后构造的段描述符存储地址的低两位为0,从而提取段描述符,但是书上例子并没有这样做,可是我看Linux内核的启动代码的时候发现了在构造一级页表的时候这个virtual address只移动了18位,就因为这两者的不同,我困惑了很久,望高手解答~!
解答:由这个式子:段描述符的地址=Translation base(高18位)+Table index(低12位)+00(低两位)不少人会以为
*(mmu_tlb_base+virtuladdr>>18)才是正确的。
其实不然,这其实是指针操作的问题,主要是要注意到(mmu_tlb_base+1)的正确含义。结合者汇编的知识理解,它不是指移动了一个字节,而是移动了一个存储单元,即4个字节。所以原式中virtuladdr>>20多移了2位,即缩小了4倍,而在进行(mmu_tlb_base+virtuladdr>>2)时会将这4倍补回来,正好符合va向右移动18的要求。
分享到:
相关推荐
教程名称:《嵌入式Linux应用开发完全手册》配套视频教程(42集)课程目录:【】第01课 环境搭建及工具、概念介绍【】第02课 GPIO实验【】第03课 存储管理器实验【】第04课 MMU实验【】第05课 NAND FLASH控制器【】...
第4课 MMU实验 第5课 NAND FLASH控制器 第6课 中断控制器 第7课 系统时钟和UART实验 第8课 LCD实验 第9课第1节 u-boot分析之编译体验 第9课第2节 u-boot分析之Makefile结构分析 第9课第3节 u-boot分析之源码...
《嵌入式Linux应用开发完全手册》从最简单的点亮一个LED开始,由浅入深地讲解,使读者最终可以配置、移植、裁剪内核,编写驱动程序,移植GUI系统,掌握整个嵌入式Linux系统的开发方法。 《嵌入式Linux应用开发完全...
第1篇 嵌入式Linux开发环境构建篇 第1章 嵌入式Linux开发概述 第2章 嵌入式Linux开发环境构建 ...第5篇 嵌入式Linux系统应用开发篇 第25章 嵌入式GUI开发 第26章 基于X的GUI开发 第27章 Linux应用程序调试技术 参考文献
韦东山视频目录+链接整合-1 : 第1课 环境搭建及工具、概念介绍 第2课 GPIO实验 第3课 存储管理器实验 第4课 MMU实验 第5课 NAND FLASH控制器 第6课 中断控制器 第7课 系统时钟和UART实验 第8课 LCD实验 第9...
申延超_嵌入式Linux应用开发完全手册笔记_内存管理单元MMU
第1篇 嵌入式Linux开发环境构建篇 第1章 嵌入式Linux开发概述 第2章 嵌入式Linux开发... 第5篇 嵌入式Linux系统应用开发篇 第25章 嵌入式GUI开发 第26章 基于X的GUI开发 第27章 Linux应用程序调试技
第1篇 嵌入式Linux开发环境构建篇 第1章 嵌入式Linux开发概述 第2章 嵌入式Linux开发... 第5篇 嵌入式Linux系统应用开发篇 第25章 嵌入式GUI开发 第26章 基于X的GUI开发 第27章 Linux应用程序调试技术
将韦东山老师MMU那一节的内容移植到了MINI2440上面运行,正常运行时,可以看到四个LED灯在循环闪烁。
本书是根据相关的博客做的PDF格式的电子书,欢迎到原作者的博客去看看。 这个是目录: ·嵌入式Linux之我行——虚拟机中安装Linux ·嵌入式Linux之我行...·嵌入式Linux之我行——S3C2440上Flash驱动实例开发讲解(一)
介绍嵌入式Linux文件系统的目录结构,然后构造嵌入式Linux文件系统。 嵌入式Linux驱动程序开发和移植。 嵌入式系统中的GUI介绍。 MiniGUI图形界面开发。 Qt/Embedded嵌入式GUI开发基础和实例开发
uClinux是专为那些没有MMU(内存管理单元)的嵌入式处理器开发的,和主流的Linux相比,uClinux有以下的特点:简化了内核加载方式,uClinux的内核可以在Flash上直接运行:就是把uClinux的内核的可执行映象烧写到flash上...
现在这块开发板mini2440用的LCD是x35,跟韦老师讲课用的LCD不同。所以韦老师给的程序不能直接用。但是修改之后成功!注意触摸屏驱动跟韦老师的也应该是不一样的,所以只能显示图像,触摸屏没有反应。
Linux 正在嵌入式开发领域稳步发展。...它们包括RTLinux(实时Linux)、μCLinux(用于非 MMU 设备的Linux)、Montavista Linux(用于ARM、MIPS、PPC的Linux分发版)、ARM-Linux(ARM上的Linux)和其他Linux系统。
├<2 Linux应用系统开发> │ ├001 - GNU开发环境基础1.mp4 │ ├002 - GNU开发环境基础2.mp4 │ ├003 - GNU开发环境基础3.mp4 │ ├004 - GNU开发环境基础4.mp4 │ ├005 - GNU开发环境基础_gcc编译1.mp4 │ ├006...
更重要的是,Linux采用模块化设计,实际应用中可以定制,因此Linux也适用于嵌入式领域。uClinux正是Linux 的一个嵌入式版本,其内核的二进制映像文件可以做到小于512KB。uClinux针对无内存管理单元MMU的处理器设计,...
该程序源码是韦东山JZ2440开发版新一期的MMU_cache源码
我通过修改 韦东山《嵌入式LINUX应用开发完全手册》关于MMU那一张的代码,想在ADS环境下,裸跑MMU虚拟地址点灯,但没有成功,不知道错在哪,请高手指点。。。 思路是这样: 在韦东山书中: 1. 原来在书中用的是...