`
yidongkaifa
  • 浏览: 4052155 次
文章分类
社区版块
存档分类
最新评论

[嵌入式Linux应用开发完全手册][韦东山]讲解MMU的时候,构造段描述符地址的语句是否有误

 
阅读更多

求助]这本书在讲解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集)

    教程名称:《嵌入式Linux应用开发完全手册》配套视频教程(42集)课程目录:【】第01课 环境搭建及工具、概念介绍【】第02课 GPIO实验【】第03课 存储管理器实验【】第04课 MMU实验【】第05课 NAND FLASH控制器【】...

    韦东山Linux视频第1期_裸板_UBoot_文件系统_驱动初步

    第4课 MMU实验 第5课 NAND FLASH控制器 第6课 中断控制器 第7课 系统时钟和UART实验 第8课 LCD实验 第9课第1节 u-boot分析之编译体验 第9课第2节 u-boot分析之Makefile结构分析 第9课第3节 u-boot分析之源码...

    嵌入式Linux应用开发完全手册.pdf

    《嵌入式Linux应用开发完全手册》从最简单的点亮一个LED开始,由浅入深地讲解,使读者最终可以配置、移植、裁剪内核,编写驱动程序,移植GUI系统,掌握整个嵌入式Linux系统的开发方法。 《嵌入式Linux应用开发完全...

    嵌入式Linux应用开发完全手册

    第1篇 嵌入式Linux开发环境构建篇 第1章 嵌入式Linux开发概述 第2章 嵌入式Linux开发环境构建 ...第5篇 嵌入式Linux系统应用开发篇 第25章 嵌入式GUI开发 第26章 基于X的GUI开发 第27章 Linux应用程序调试技术 参考文献

    韦东山视频目录+链接整合-1 视频目录

    韦东山视频目录+链接整合-1 : 第1课 环境搭建及工具、概念介绍 第2课 GPIO实验 第3课 存储管理器实验 第4课 MMU实验 第5课 NAND FLASH控制器 第6课 中断控制器 第7课 系统时钟和UART实验 第8课 LCD实验 第9...

    申延超_嵌入式Linux应用开发完全手册笔记_内存管理单元MMU

    申延超_嵌入式Linux应用开发完全手册笔记_内存管理单元MMU

    嵌入式Linux应用开发完全手册有目录2

    第1篇 嵌入式Linux开发环境构建篇 第1章 嵌入式Linux开发概述  第2章 嵌入式Linux开发... 第5篇 嵌入式Linux系统应用开发篇  第25章 嵌入式GUI开发 第26章 基于X的GUI开发  第27章 Linux应用程序调试技

    嵌入式Linux应用开发完全手册有目录1(共2个)

    第1篇 嵌入式Linux开发环境构建篇 第1章 嵌入式Linux开发概述  第2章 嵌入式Linux开发... 第5篇 嵌入式Linux系统应用开发篇  第25章 嵌入式GUI开发 第26章 基于X的GUI开发  第27章 Linux应用程序调试技术

    韦东山老师视频在MINI2440上运行的程序-MMU

    将韦东山老师MMU那一节的内容移植到了MINI2440上面运行,正常运行时,可以看到四个LED灯在循环闪烁。

    嵌入式Linux之我行系列

    本书是根据相关的博客做的PDF格式的电子书,欢迎到原作者的博客去看看。 这个是目录: ·嵌入式Linux之我行——虚拟机中安装Linux ·嵌入式Linux之我行...·嵌入式Linux之我行——S3C2440上Flash驱动实例开发讲解(一)

    ARM9嵌入式Linux开发 ppt——周卫老师

     介绍嵌入式Linux文件系统的目录结构,然后构造嵌入式Linux文件系统。  嵌入式Linux驱动程序开发和移植。 嵌入式系统中的GUI介绍。  MiniGUI图形界面开发。  Qt/Embedded嵌入式GUI开发基础和实例开发

    嵌入式Linux软硬件开发环境

    uClinux是专为那些没有MMU(内存管理单元)的嵌入式处理器开发的,和主流的Linux相比,uClinux有以下的特点:简化了内核加载方式,uClinux的内核可以在Flash上直接运行:就是把uClinux的内核的可执行映象烧写到flash上...

    在mini2440裸板上韦东山lcd裸板实验

    现在这块开发板mini2440用的LCD是x35,跟韦老师讲课用的LCD不同。所以韦老师给的程序不能直接用。但是修改之后成功!注意触摸屏驱动跟韦老师的也应该是不一样的,所以只能显示图像,触摸屏没有反应。

    Linux嵌入式开发基础1.doc

    Linux 正在嵌入式开发领域稳步发展。...它们包括RTLinux(实时Linux)、μCLinux(用于非 MMU 设备的Linux)、Montavista Linux(用于ARM、MIPS、PPC的Linux分发版)、ARM-Linux(ARM上的Linux)和其他Linux系统。

    史上最强的嵌入式底层驱动开发课程 Linux系统开发+Linux高级程序+主板开发+ARM等

    ├<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采用模块化设计,实际应用中可以定制,因此Linux也适用于嵌入式领域。uClinux正是Linux 的一个嵌入式版本,其内核的二进制映像文件可以做到小于512KB。uClinux针对无内存管理单元MMU的处理器设计,...

    韦东山JZ2440_MMU_cache源码

    该程序源码是韦东山JZ2440开发版新一期的MMU_cache源码

    3C2440 ARM裸机 MMU代码(有bug)

    我通过修改 韦东山《嵌入式LINUX应用开发完全手册》关于MMU那一张的代码,想在ADS环境下,裸跑MMU虚拟地址点灯,但没有成功,不知道错在哪,请高手指点。。。 思路是这样: 在韦东山书中: 1. 原来在书中用的是...

Global site tag (gtag.js) - Google Analytics