嵌入式系统的Boot Loader技术.pptx

上传人:莉*** 文档编号:73011280 上传时间:2023-02-15 格式:PPTX 页数:33 大小:185.67KB
返回 下载 相关 举报
嵌入式系统的Boot Loader技术.pptx_第1页
第1页 / 共33页
嵌入式系统的Boot Loader技术.pptx_第2页
第2页 / 共33页
点击查看更多>>
资源描述

《嵌入式系统的Boot Loader技术.pptx》由会员分享,可在线阅读,更多相关《嵌入式系统的Boot Loader技术.pptx(33页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、嵌入式系统的嵌入式系统的Boot Loader技术技术2 21.Boot Loader程序的基本概念Boot Loader就是在操作系统内核运行之前运行的一段小程序 l l初始化硬件设备和建立内存空间的映射图初始化硬件设备和建立内存空间的映射图 l l将系统的软硬件环境带到一个合适的状态,以将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境便为最终调用操作系统内核准备好正确的环境 系统的Boot Loader程序通常安排在地址0 x00000000 处 第1页/共32页3 3Boot Loader所支持的硬件环境 l l每种不同的每种不同的CPUCPU体系结构都有

2、不同的体系结构都有不同的Boot Boot Loader Loader Boot Loader的安装地址 Boot Loader相关的设备和机制 l l主机和目标机之间一般通过串口建立连接主机和目标机之间一般通过串口建立连接 Boot Loader的启动过程 第2页/共32页4 4Boot Loader的操作模式 l l启动加载模式启动加载模式 l l下载模式下载模式 Boot Loader与主机之间的通信设备及协议 第3页/共32页5 52.Boot Loader的典型结构框架操作系统的角度看,Boot Loader的总目标就是正确地调用内核来执行 大多数Boot Loader都分为阶段1和

3、阶段2两大部分 l l阶段阶段1 1实现依赖于实现依赖于CPUCPU体系结构的代码体系结构的代码 l l阶段阶段2 2实现一些复杂的功能实现一些复杂的功能 第4页/共32页6 62.1 Boot Loader阶段1介绍Boot Loader 的阶段1通常包括以下步骤:1)硬件设备初始化。l l屏蔽所有的中断屏蔽所有的中断 l l设置设置CPUCPU的速度和时钟频率的速度和时钟频率 l lRAMRAM初始化初始化 l l初始化初始化LED LED l l关闭关闭CPUCPU内部指令数据内部指令数据CacheCache 第5页/共32页7 72)为加载阶段2准备RAM空间 l l除了阶段除了阶段2

4、 2可执行映象的大小外,还必须把堆可执行映象的大小外,还必须把堆栈空间也考虑进来栈空间也考虑进来 l l必须确保所安排的地址范围的的确确是可读写必须确保所安排的地址范围的的确确是可读写的的RAMRAM空间空间第6页/共32页8 83)拷贝阶段2到RAM中 4)设置堆栈指针sp 5)跳转到阶段2的C入口点 Boot Loader 的 阶段2 可执行映象刚被拷贝到 RAM 空间时的系统内存布局,如下图:第7页/共32页9 9第8页/共32页10102.2 Boot Loader阶段2介绍1)初始化本阶段要使用到的硬件设备l l初始化至少一个串口,以便和终端用户进行初始化至少一个串口,以便和终端用户

5、进行I/OI/O输出信息输出信息 l l初始化计时器等初始化计时器等第9页/共32页11112)检测系统的内存映射 l l内存映射的描述内存映射的描述 l l可以用如下数据结构来描述可以用如下数据结构来描述RAMRAM地址空间中的地址空间中的一段连续的地址范围:一段连续的地址范围:l l内存映射的检测内存映射的检测 typedef struct memory_area_struct u32 start;/*内存空间的基址*/u32 size;/*内存空间的大小*/int used;memory_area_t;第10页/共32页12123)加载内核映像和根文件系统映像 l l 规划内存占用的布局

6、规划内存占用的布局 内核映像所占用的内存范围内核映像所占用的内存范围 根文件系统所占用的内存范围根文件系统所占用的内存范围 l l从从FlashFlash上拷贝上拷贝 第11页/共32页13134)设置内核的启动参数 l l标记列表标记列表(tagged list)(tagged list)的形式来传递启动参数,启动参数标记列表以标记的形式来传递启动参数,启动参数标记列表以标记ATAG_COREATAG_CORE开始,以标记开始,以标记ATAG_NONEATAG_NONE结束结束 l l嵌入式嵌入式LinuxLinux系统中,通常需要由系统中,通常需要由Boot LoaderBoot Load

7、er设置的常见启动参数有:设置的常见启动参数有:ATAG_COREATAG_CORE、ATAG_MEMATAG_MEM、ATAG_CMDLINEATAG_CMDLINE、ATAG_RAMDISKATAG_RAMDISK、ATAG_INITRD ATAG_INITRD 第12页/共32页1414例:设置例:设置ATAG_COREATAG_CORE的代码如下:的代码如下:params=(struct tag*)BOOT_PARAMS;params-hdr.tag=ATAG_CORE;params-hdr.size=tag_size(tag_core);params-u.core.flags=0;p

8、arams-u.core.pagesize=0;params-u.core.rootdev=0;params=tag_next(params);BOOT_PARAMS 表示内核启动参数在内存中的起始基地址,指针params是一个struct tag类型的指针。宏tag_next()将以指向当前标记的指针为参数,计算出当前标记的下一个标记的起始地址 第13页/共32页15155 5)调用内核)调用内核 l l CPUCPU寄存器的设置:寄存器的设置:R0R00 0;R1R1机器类型机器类型IDID;关于机器类型号,可以参见:;关于机器类型号,可以参见:linux/arch/arm/tools/m

9、ach-typeslinux/arch/arm/tools/mach-types。R2R2启动参数标记列表在启动参数标记列表在RAMRAM中起始基地址;中起始基地址;l l CPU CPU 模式:模式:必须禁止中断(必须禁止中断(IRQsIRQs和和FIQsFIQs););CPUCPU必须必须SVCSVC模式;模式;l lCacheCache和和MMUMMU的设置:的设置:MMUMMU必须关闭;必须关闭;指令指令CacheCache可以打开也可以关闭;可以打开也可以关闭;数据数据CacheCache必须关闭;必须关闭;第14页/共32页16162.3 关于串口终端 向串口终端打印信息也是一个非

10、常重要而又有效的调试手段如果碰到串口终端显示乱码或根本没有显示的问题,可能是因为:l lBoot Loader Boot Loader 对串口的初始化设置不正确对串口的初始化设置不正确 l l运行在运行在host host 端的终端仿真程序对串口的设置不正确端的终端仿真程序对串口的设置不正确 第15页/共32页1717Boot Loader 启动内核后却无法看到内核的启动输出信息:l l确认内核在编译时是否配置了对串口终端的支持,并配置了正确的串口确认内核在编译时是否配置了对串口终端的支持,并配置了正确的串口驱动程序驱动程序 l lBoot Loader Boot Loader 对串口的初始化

11、设置是否和内核对串口的初始化设置一致对串口的初始化设置是否和内核对串口的初始化设置一致 l l还要确认还要确认 Boot Loader Boot Loader 所用的内核基地址必须和内核映像在编译时所用所用的内核基地址必须和内核映像在编译时所用的运行基地址一致的运行基地址一致 第16页/共32页18183.Boot Loader实验实验 实验一 Boot Loader应用实验实验二 U-BOOT的分析和移植第17页/共32页1919实验一 Boot Loader应用实验(1)烧写XsBase255的BootLoader l l编译生成编译生成XsBase255XsBase255专用的专用的JT

12、AGJTAG程序程序 Jflash-Jflash-XSBase255XSBase255l l编译生成编译生成XSBaseXSBase的的Boot Loader x-boot255 Boot Loader x-boot255 l l正确连线正确连线l l利用利用JTAGJTAG烧写烧写BootLoaderBootLoader rootXSBase JTAG#./Jflash-XSBase255 x-boot255第18页/共32页2020实验一 Boot Loader应用实验(2)熟悉使用熟悉使用 Bootloader Bootloader 指令,执行各个指指令,执行各个指令后将其结果与下表的令

13、后将其结果与下表的 descriptiondescription进行比进行比较较 UsageHelpDescription对各个指令的简单的说明。ArgumentsNoneExampleX-HYPER255 Help第19页/共32页2121UsageReload kernel/ramdiskDescription将Flash中纪录的image复制到SDRAM为了复制 kernel image到 SDRAM,Autoboot时自动执行Arguments将Kernel flash的 kernel image复制到 SDRAM 0 xa0008000将Ramdisk flash的 ramdisk复

14、制到 SDRAM 0 xa0800000ExampleX-HYPER255 reload kernel第20页/共32页2222UsageTftp file loader/kernel/root/ramdiskTftp file addrDescription通过Ethernet将 Host的映像文件下载到SDRAM中ArgumentsLoader将接收到的文件储存到loader的SDRAM 0 xa0000000Kernel将接收到的文件储存到kernel的 SDRAM 0 xa0008000Root 将接收到的文件储存到 0 xa0000000Ramdisk 将接收到的文件储存到 0 xA

15、0800000。Addr SDRAM上纪录接收到的文件的地址ExampleX-HYPER255 tftp zImage kernelX-HYPER255 tftp zImage 0 xa0000000第21页/共32页2323UsageFlash loader/kernel/root/ramdiskFlash dest src lenDescription将SDRAM上的数据储存到flash的相应地址ArgumentsLoader-将SDRAM的loader 0 xa00000000储存到flash的0 x0地址Kernel-将SDRAM的Kernel 0 xa00080000储存到flash

16、的0 xc0000 地址Root-将SDRAM的root 0 xa0000000储存到flash的0 x1c0000地址Ramdisk-将SDRAM的ramdisk 0 xA0800000储存到Flash的0 x1c00 00地址Dest-储存到flash上的地址Src-原来的数据所在地址Len-复制的长度ExampleXSBASE255 flash kernelXSBASE255 flash 0 xc0000 0 xa0000000 0 x100000第22页/共32页2424UsageBootBoot opt1 opt2Boot addr opt1 opt2Description驱动SDR

17、AM上的 kernel通过相应 arguments 驱动 或者驱动相应地指的kernel。ArgumentsOpt1 kernel option(Only 0)Opt2 machine type(X-Hyer255:200)Addr kernel image addressExampleXSBASE255 bootXSBASE255 boot 0 200XSBASE255 boot 0 xa0008000 0 200第23页/共32页2525实验二 U-BOOT的分析和移植(1)U-BOOT的特点 l l在线读写在线读写FlashFlash、DOCDOC、IDEIDE、IICIIC、EEROM

18、EEROM、RTC RTC l l支持串行口支持串行口kermitkermit和和S-recordS-record下载代码下载代码l l识别二进制、识别二进制、ELF32ELF32、uImageuImage格式的格式的ImageImage,对对LinuxLinux引导有特别的支持引导有特别的支持l l单任务软件运行环境单任务软件运行环境 第24页/共32页2626l l脚本语言支持脚本语言支持(类似类似BASHBASH脚本脚本)l l支持支持WatchDogWatchDog、LCD logoLCD logo和状态指示功能等和状态指示功能等 l l支持支持MTDMTD和文件系统和文件系统 l l

19、支持中断支持中断 l l详细的开发文档详细的开发文档 第25页/共32页2727实验二 U-BOOT的分析和移植(2)U-BOOT源代码结构l lboardboard:和一些已有开发板相关的文件:和一些已有开发板相关的文件 l lcommoncommon:与体系结构无关的文件,实现各种:与体系结构无关的文件,实现各种命令的命令的C C文件文件 l lcpucpu:CPUCPU相关文件相关文件 l ldiskdisk:diskdisk驱动的分区处理代码驱动的分区处理代码l ldocdoc:文档:文档 l ldriversdrivers:通用设备驱动程序:通用设备驱动程序 第26页/共32页282

20、8l lfs:fs:支持文件系统的文件支持文件系统的文件 l lnetnet:与网络有关的代码:与网络有关的代码 l llib_armlib_arm:与:与ARMARM体系结构相关的代码体系结构相关的代码l ltoolstools:创建:创建S-RecordS-Record格式文件格式文件 和和U-BOOT U-BOOT imagesimages的工具的工具 第27页/共32页2929实验二 U-BOOT的分析和移植(3)对U-BOOT的移植l l建立自己开发板的目录和相关文件建立自己开发板的目录和相关文件 在在include/configsinclude/configs目录中添加头文件目录中

21、添加头文件xsbase.h xsbase.h 在在board/board/目录下新建目录下新建xsbasexsbase目录,创建如下文件:目录,创建如下文件:flash.cflash.c、memsetup.Smemsetup.S、xsbase.cxsbase.c、MakefileMakefile和和u-u-boot.ldsboot.ldsl l添加网口设备控制程序,添加网口设备控制程序,cs8900cs8900网口设备的控网口设备的控制程序制程序cs8900.c cs8900.c 和和cs8900.h cs8900.h 第28页/共32页3030实验二 U-BOOT的分析和移植(4)l l修改

22、修改Makefile Makefile 在在u-boot-1.1.2/Makefileu-boot-1.1.2/Makefile中加入:中加入:xsbase_config:unconfigxsbase_config:unconfig./mkconfig$(:_config=)arm pxa xsbase./mkconfig$(:_config=)arm pxa xsbase第29页/共32页3131实验二 U-BOOT的分析和移植(5)l l生成目标文件生成目标文件 先运行先运行make clean make clean 然后运行然后运行make xsbase_config make xsba

23、se_config 再运行再运行make allmake all 生成三个文件:生成三个文件:l lu-bootELFu-bootELF格式的文件,可以被大多数格式的文件,可以被大多数DebugDebug程序识程序识别。别。l lu-boot.binu-boot.bin二进制二进制binbin文件,这个文件一般用于烧录到文件,这个文件一般用于烧录到用户开发板中。用户开发板中。l lu-boot.srecMotorola S-Recordu-boot.srecMotorola S-Record格式,可以通过串行格式,可以通过串行口下载到开发板中口下载到开发板中 第30页/共32页3232实验二 U-BOOT的分析和移植(6)l l通过通过JTAGJTAG口将口将u-boot.binu-boot.bin烧写到烧写到FlashFlash的零地址,的零地址,复位后执行复位后执行u-boot u-boot l l输入输入helphelp得到所有命令列表得到所有命令列表 第31页/共32页3333感谢您的观看。感谢您的观看。第32页/共32页

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > PPT文档

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁