`
helloyesyes
  • 浏览: 1305153 次
  • 性别: Icon_minigender_2
  • 来自: 武汉
文章分类
社区版块
存档分类
最新评论

关于ADS下bootloader之MMU的深入研究

阅读更多

哈尔滨理工大学软件工程专业08-7李万鹏原创作品,转载请标明出处

http://blog.csdn.net/woshixingaaa/archive/2011/03/17/6255870.aspx

如下是ADS下的bootMMU.cMMU初始化代码。在2440init.S中跳入Main,这个Main函数在U2440mom.c中实现,这个Main函数包括了对端口,中断服务,MMUVGA等的初始化函数的调用。MMU.c中进行了MMU的初始化,其中调用了很多初始化函数,使用汇编写的,确切的说是用协处理指令写的。这些函数的声明部分在2440slib.h,实现在2440slib.c中。在MMU的初始化程序MMU_Init中,首先禁止了Dcache,Icache,清除了DcacheIcache。禁止了MMUTLB。然后对存储系统进行了虚拟地址到物理地址的映射。然后设置了转化表的基地址,设置了域,开启了MMUIcache,Dcache

这里是因为ARM920T有64路,每路有8个组。所以。。。为什么要i<<26,j<<5呢,看下图便知

这是一个MMU的虚拟地址向物理地址映射的函数。通过上边的调用可以看到物理地址和虚拟地址的地址是相同的,那为什么还要开MMU呢,不是多此一举吗,Dcache的开启必须在MMU开启后才能开启,Icache不受MMU影响。开启Cache对系统性能会有很大提升。所以,哈哈。这里_MMUTT_STARTADDRESS是转换表的基址,因为没有使用复杂的操作系统,所以只使用了一级页表,每个页表项对应的是一个1MB的段。pTT=(U32 *)_MMUTT_STARTADDRESS+(vaddrStart>>20);相当于获得相应的页表项。看一下下图就会明白。nSec=(vaddrEnd>>20)-(vaddrStart>>20);这句是计算有几个段。for(i=0;i<=nSec;i++)*pTT++=attr |(((paddrStart>>20)+i)<<20);分别映射每段。Attr是域。

这里就不列出那些被调用的汇编代码,这个是飞凌的boot,网上好多人说没开MMU,真是误人子弟啊。

分享到:
评论

相关推荐

    深入理解BOOTLOADER pdf

    - 在某些情况下,BOOTLOADER还可以用来恢复被破坏的系统,例如通过网络更新或从外部设备恢复内核。 总之,"深入理解BOOTLOADER"这本书对于想要深入学习嵌入式系统和操作系统启动过程的人来说是一本宝贵的资源。它...

    嵌入式系统的 BootLoader的深入研究

    最后,了解BootLoader的深入研究不仅仅是对技术的探索,同样对提高嵌入式系统的稳定性和性能至关重要。随着物联网和智能设备的发展,对嵌入式系统的BootLoader的研究也将不断深化,以满足新的技术需求和应用挑战。

    通过vivi研究bootloader

    Vivi是一个针对特定平台,如S3C2410的Bootloader,深入研究Vivi源代码能帮助开发者深入了解C语言、ARM体系结构以及嵌入式Bootloader的相关技术。 首先,Vivi的研究不仅限于代码本身,还包括它所依赖的硬件平台——S...

    WinCE系统下BootLoader的开发

    本文将深入探讨WinCE BootLoader的开发,包括其重要性、功能需求、开发流程和具体实现。 1. BootLoader的角色与功能 BootLoader是嵌入式系统中的一个重要组件,它位于板级支持包(BSP)中,主要职责是启动硬件、...

    深入理解BOOTLOADER.7z

    深入理解BOOTLOADER对于理解和优化系统启动流程至关重要。在本文中,我们将详细探讨BOOTLOADER的工作原理、类型以及其在不同平台上的实现。 1. **BOOTLOADER的基本概念** BOOTLOADER是计算机启动时运行的第一段...

    深入浅出话单片机Bootloader

    **深入浅出话单片机Bootloader** Bootloader是单片机系统中的关键软件模块,它的主要任务是在系统上电或复位后初始化硬件环境,加载操作系统或应用程序到内存,并控制程序执行的启动流程。本篇文章将从Bootloader的...

    Bootloader详解(源码+实验)研究BOOT必读

    ### Bootloader详解(源码+实验)研究BOOT必读 #### Bootloader基本概念与框架结构 Bootloader在嵌入式系统开发中扮演着至关重要的角色,它是系统启动过程中的第一个程序,负责系统的初始化并引导操作系统运行。对于...

    STM32例程之Bootloader

    在串口Bootloader的场景下,通常选择SYSBOOT模式,即通过串口进行固件更新。这需要微控制器的配置引脚设置为从串口接收程序数据。 Xmodem协议是文件传输协议的一种,常用于低速通信或资源有限的环境中。在本例中,...

    BootLoader+APP测试程序

    BootLoader和APP测试程序是嵌入式系统开发中的重要组成部分,尤其在进行串口IAP(In-Application Programming)...通过深入研究"bootloaderOTA升级"文件,开发者可以更好地理解如何实现这些功能,并应用于实际项目中。

    Bootloader_S12-updatedS12GN.rar_Bootloader_S12 BootLoader_mc9s12

    描述中的"mc9s12 bootloader各单片机芯片开发bootloader说明文档和代码"表明这个压缩包包含了关于mc9s12系列单片机Bootloader开发的详细文档以及相关的源代码。这将对开发者理解如何为这些芯片编写自定义Bootloader...

    blob_bootloader

    4. **设置MMU**:对于支持MMU的处理器,Bootloader会设置MMU页表,为内核映象分配适当的内存空间,并开启MMU。 5. **加载设备树**:Bootloader也可能加载设备树 blob,这是一个描述硬件配置的数据结构,供Linux内核...

    [原创]自己动手编写嵌入式Bootloader之(1)

    标题所提及的"自己动手编写嵌入式Bootloader之(1)",是作者分享的一篇关于自编Bootloader的学习过程,旨在简化复杂的U-Boot,让初学者更容易理解和掌握Bootloader的基本原理。作者创建的Bootloader名为S-Boot,意...

    Bootloader_S32K144_CAN_S32K144bootloader_s32K144_Bootloader

    开发者可以通过这些文件来研究和修改Bootloader的功能,比如添加身份验证机制、优化CAN通信的效率或者调整固件更新策略。 总的来说,这个项目涉及了嵌入式系统的Bootloader设计、CAN总线通信协议的实现以及使用S32...

    C51 Bootloader 的实现

    本篇文章将深入探讨C51 Bootloader的实现,通过解析给定的文件列表,揭示其背后的技术原理和实现细节。 C51 Bootloader是基于8051微控制器的Bootloader程序,通常用于8位微控制器的应用。8051系列是Philips(现NXP...

Global site tag (gtag.js) - Google Analytics