boot leader及uboot简介.docxVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
boot leader及uboot简介

uboot简介u-boot介绍:u-boot(the Universal Boot Loader)是一种普遍用于嵌入式系统中的Bootloader,Bootloader是在操作系统运行之前执行的一小段程序,通过它,我们可以初始化硬件设备、建立内存空间的映射表,从而建立适当的软硬件环境,为最终调用操作系统内核做好准备。Boot Loader的主要运行任务就是将内核映象从硬盘上读到RAM中,然后跳转到内核的入口点去运行,即开始启动操作系统。系统在上电或复位时通常都从地址0开始执行,而在这个地址处安排的通常就是系统的Boot Loader程序。u-boot目录结构:1、board中存放于开发板相关的配置文件,每一个开发板都以子文件夹的形式出现。2、Commom文件夹实现u-boot行下支持的命令,每一个命令对应一个文件。3、cpu中存放特定cpu架构相关的目录,每一款cpu架构都对应了一个子目录。4、Doc是文档目录,有u-boot非常完善的文档。5、Drivers中是u-boot支持的各种设备的驱动程序。6、Fs是支持的文件系统,其中最常用的是JFFS2文件系统。7、Include文件夹是u-boot使用的头文件,还有各种硬件平台支持的汇编文件,系统配置文件和文件系统支持的文件。8、Net是与网络协议相关的代码,bootp协议、TFTP协议、NFS文件系统得实现。9、Tooles是生成U-boot的工具。其中比较重要的目录就是/board、/cpu、/drivers和 /include目录,如果想实现u-boot在一个平台上的移植,就要对这些目录进行深入的分析。?u-boot的启动过程:系统启动的入口点。既然我们现在要分析u-boot的启动过程,就必须先找到u-boot最先实现的是哪些代码,最先完成的是哪些任务。另一方面一个可执行的image必须有一个入口点,并且只能有一个全局入口点,所以要通知编译器这个入口在哪里。由此我们可以找到程序的入口点是在/board /lpc2210/u-boot.lds中指定的,其中ENTRY(_start)说明程序从_start开始运行,而他指向的是cpu /arm7tdmi/start.o文件。因为我们用的是ARM7TDMI的cpu架构,在复位后从地址0它的第一条指令,所以我们将Flash映射到这个地址上,这样在系统加电后,cpu将首先执行u-boot程序。u-boot的启动过程是多阶段实现的,分了两个阶段:第一阶段是用汇编写的,主要任务是:1、CPU 自身初始化:包括MMU,Cache,时钟系统,SDRAM 控制器等的初始化2、重定位:把自己从非易失性存储器搬移到 RAM 中3、分配堆栈空间,设置堆栈指针4、清零 BSS 数据段5、跳转到第二阶段入口函数 start_armboot()第二阶段是用C写的,主要任务是:1、为 U-boot 内部私有数据分配存储空间,并清零2、依次调用函数指针数组 init_sequence 中定义的函数进行一系列的初始化3、如果系统支持 NOR Flash,调用flash_init ()和display_flash_config ()初始化并显示检测到的器件信息4、如果系统支持 LCD 或VFD,调用lcd_setmem()或vfd_setmem()计算帧缓(Framebuffer)大小,然后在BSS 数据段之后为Framebuffer 分配空间,初始化gd-fb_base 为Framebuffer 的起始地址5、调用 mem_malloc_init()进行存储分配系统(类似于C 语言中的堆)的初始化和空间分配6、如果系统支持 NAND Flash,调用nand_init ()进行初始化7、如果系统支持 DataFlash,调用AT91F_DataflashInit()和dataflash_print_info()进行初始化并显示检测到的器件信息8、调用 env_relocate ()进行环境变量的重定位,即从Flash 中搬移到RAM 中9、如果系统支持 VFD,调用drv_vfd_init()进行VFD 设备初始化10、从 环 境 变 量 中 读 取 IP 地址和MAC 地址, 初始化gd-bd- bi_ip_addr 和gd-bd-bi_enetaddr11、调用 jumptable_init ()进行跳转表初始化,跳转表在global_data 中,具体用途尚不清楚12、调用 console_init_r()进行控制台初始化13、如果需要,调用 misc_init_r ()进行杂项初始化14、调用 enable_interrupts ()打开中断15、如果需要,调用board_late_init()进行单板后期初始化

文档评论(0)

yan698698 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档