首页 第6课嵌入式系统的BootLoader技术ppt-开发

第6课嵌入式系统的BootLoader技术ppt-开发

举报
开通vip

第6课嵌入式系统的BootLoader技术ppt-开发嵌入式系统的BootLoader技术陈文智浙江大学计算机学院2009年5月1内容提要1.BootLoader程序的基本概念2.BootLoader的典型结构框架3.BootLoader实验实验一BootLoader应用实验实验二U-BOOT的分析和移植21.BootLoader程序的基本概念BootLoader就是在操作系统内核运行之前运行的一段小程序初始化硬件设备和建立内存空间的映射图将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境系统的BootLoader程序通常安排在地址0x0...

第6课嵌入式系统的BootLoader技术ppt-开发
嵌入式系统的BootLoader技术陈文智浙江大学计算机学院2009年5月1内容提要1.BootLoader程序的基本概念2.BootLoader的典型结构框架3.BootLoader实验实验一BootLoader应用实验实验二U-BOOT的 分析 定性数据统计分析pdf销售业绩分析模板建筑结构震害分析销售进度分析表京东商城竞争战略分析 和移植21.BootLoader程序的基本概念BootLoader就是在操作系统内核运行之前运行的一段小程序初始化硬件设备和建立内存空间的映射图将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境系统的BootLoader程序通常安排在地址0x00000000处3BootLoader所支持的硬件环境每种不同的CPU体系结构都有不同的BootLoaderBootLoader的安装地址BootLoader相关的设备和机制主机和目标机之间一般通过串口建立连接BootLoader的启动过程4BootLoader的操作模式启动加载模式下载模式BootLoader与主机之间的通信设备及 协议 离婚协议模板下载合伙人协议 下载渠道分销协议免费下载敬业协议下载授课协议下载 52.BootLoader的典型结构框架操作系统的角度看,BootLoader的总目标就是正确地调用内核来执行大多数BootLoader都分为阶段1和阶段2两大部分阶段1实现依赖于CPU体系结构的代码阶段2实现一些复杂的功能62.1BootLoader阶段1介绍BootLoader的阶段1通常包括以下步骤:1)硬件设备初始化。屏蔽所有的中断设置CPU的速度和时钟频率RAM初始化初始化LED关闭CPU内部指令/数据Cache72)为加载阶段2准备RAM空间除了阶段2可执行映象的大小外,还必须把堆栈空间也考虑进来必须确保所安排的地址范围的的确确是可读写的RAM空间83)拷贝阶段2到RAM中4)设置堆栈指针sp5)跳转到阶段2的C入口点BootLoader的阶段2可执行映象刚被拷贝到RAM空间时的系统内存布局,如下图:9102.2BootLoader阶段2介绍1)初始化本阶段要使用到的硬件设备初始化至少一个串口,以便和终端用户进行I/O输出信息初始化计时器等112)检测系统的内存映射内存映射的描述可以用如下数据结构来描述RAM地址空间中的一段连续的地址范围:内存映射的检测typedefstructmemory_area_struct{u32start;/*内存空间的基址*/u32size;/*内存空间的大小*/intused;}memory_area_t;123)加载内核映像和根文件系统映像规划内存占用的布局内核映像所占用的内存范围MEM_START+0X8000根文件系统所占用的内存范围MEM_START+0X00100000从Flash上拷贝While循环134)设置内核的启动参数标记列 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf (taggedlist)的形式来传递启动参数,启动参数标记列表以标记ATAG_CORE开始,以标记ATAG_NONE结束嵌入式Linux系统中,通常需要由BootLoader设置的常见启动参数有:ATAG_CORE、ATAG_MEM、ATAG_CMDLINE、ATAG_RAMDISK、ATAG_INITRD14例:设置ATAG_CORE的代码如下:params=(structtag*)BOOT_PARAMS;params->hdr.tag=ATAG_CORE;params->hdr.size=tag_size(tag_core);params->u.core.flags=0;params->u.core.pagesize=0;params->u.core.rootdev=0;params=tag_next(params);BOOT_PARAMS表示内核启动参数在内存中的起始基地址,指针params是一个structtag类型的指针。宏tag_next()将以指向当前标记的指针为参数,计算出当前标记的下一个标记的起始地址155)调用内核CPU寄存器的设置:R0=0;R1=机器类型ID;关于机器类型号,可以参见:linux/arch/arm/tools/mach-types。R2=启动参数标记列表在RAM中起始基地址;CPU模式:必须禁止中断(IRQs和FIQs);CPU必须SVC模式;Cache和MMU的设置:MMU必须关闭;指令Cache可以打开也可以关闭;数据Cache必须关闭;HOWTOCALL?162.3关于串口终端向串口终端打印信息也是一个非常重要而又有效的调试手段如果碰到串口终端显示乱码或根本没有显示的问题,可能是因为:BootLoader对串口的初始化设置不正确运行在host端的终端仿真程序对串口的设置不正确17BootLoader启动内核后却无法看到内核的启动输出信息:确认内核在编译时是否配置了对串口终端的支持,并配置了正确的串口驱动程序BootLoader对串口的初始化设置是否和内核对串口的初始化设置一致还要确认BootLoader所用的内核基地址必须和内核映像在编译时所用的运行基地址一致183.BootLoader实验实验一BootLoader应用实验实验二U-BOOT的分析和移植19实验一BootLoader应用实验(1)烧写XsBase255的BootLoader编译生成XsBase255专用的JTAG程序Jflash-XSBase255编译生成XSBase的BootLoaderx-boot255正确连线利用JTAG烧写BootLoader[root@XSBaseJTAG]#./Jflash-XSBase255x-boot25520实验一BootLoader应用实验(2)熟悉使用Bootloader指令,执行各个指令后将其结果与下表的description进行比较UsageHelpDescription对各个指令的简单的说明。ArgumentsNoneExampleX-HYPER255>Help21UsageReload[kernel/ramdisk]Description将Flash中纪录的image复制到SDRAM为了复制kernelimage到SDRAM,Autoboot时自动执行ArgumentsKernel–将flash的kernelimage复制到SDRAM0xa0008000Ramdisk–将flash的ramdisk复制到SDRAM0xa0800000ExampleX-HYPER255>reloadkernel22UsageTftp[file][loader/kernel/root/ramdisk]Tftp[file][addr]Description通过Ethernet将Host的映像文件下载到SDRAM中ArgumentsLoader–将接收到的文件储存到loader的SDRAM0xa0000000Kernel–将接收到的文件储存到kernel的SDRAM0xa0008000Root–将接收到的文件储存到0xa0000000Ramdisk–将接收到的文件储存到0xA0800000。Addr–SDRAM上纪录接收到的文件的地址ExampleX-HYPER255>tftpzImagekernelX-HYPER255>tftpzImage0xa000000023UsageFlash[loader/kernel/root/ramdisk]Flash[dest][src][len]Description将SDRAM上的数据储存到flash的相应地址ArgumentsLoader-将SDRAM的loader0xa00000000储存到flash的0x0地址Kernel-将SDRAM的Kernel0xa00080000储存到flash的0xc0000地址Root-将SDRAM的root0xa0000000储存到flash的0x1c0000地址Ramdisk-将SDRAM的ramdisk0xA0800000储存到Flash的0x1c0000地址Dest-储存到flash上的地址Src-原来的数据所在地址Len-复制的长度ExampleXSBASE255>flashkernelXSBASE255>flash0xc00000xa00000000x10000024UsageBootBoot[opt1][opt2]Boot[addr][opt1][opt2]Description驱动SDRAM上的kernel通过相应arguments驱动或者驱动相应地址的kernel。ArgumentsOpt1–kerneloption(Only0)Opt2–machinetype(X-Hyer255:200)Addr–kernelimageaddressExampleXSBASE255>bootXSBASE255>boot0200XSBASE255>boot0xa0008000020025实验二U-BOOT的分析和移植(1)U-BOOT的特点在线读写Flash、DOC、IDE、IIC、EEROM、RTC。其他一般的BOOT-LOADER不支持IDE和DOC的在线读写。支持串行口kermit和S-record下载代码识别二进制、ELF32、uImage格式的Image,对Linux引导有特别的支持单任务软件运行环境26脚本语言支持(类似BASH脚本)支持WatchDog、LCDlogo和状态指示功能支持MTD和文件系统支持中断详细的开发文档27实验二U-BOOT的分析和移植(2)U-BOOT源代码结构/board:和一些已有开发板相关的文件/common:与体系结构无关的文件,实现各种命令的C文件/cpu:CPU相关文件/disk:disk驱动的分区处理代码/doc:文档/drivers:通用设备驱动程序,如网卡串口USB等28/fs:支持文件系统的文件/net:与网络有关的代码/lib_arm:与ARM体系结构相关的代码/tools:创建S-Record格式文件和U-BOOTimages的工具29实验二U-BOOT的分析和移植(3)对U-BOOT的移植建立自己开发板的 目录 工贸企业有限空间作业目录特种设备作业人员作业种类与目录特种设备作业人员目录1类医疗器械目录高值医用耗材参考目录 和相关文件在include/configs目录中添加头文件xsbase.h在board/目录下新建xsbase目录,创建如下文件:flash.c、memsetup.S、xsbase.c、Makefile和u-boot.lds添加网口设备控制程序,cs8900网口设备的控制程序cs8900.c和cs8900.h30实验二U-BOOT的分析和移植(4)修改Makefile在u-boot-1.1.2/Makefile中加入:xsbase_config:unconfig@./mkconfig$(@:_config=)armpxaxsbase31实验二U-BOOT的分析和移植(5)生成目标文件先运行makeclean然后运行makexsbase_config再运行makeall生成三个文件:u-boot——ELF格式的文件,可以被大多数Debug程序识别。u-boot.bin——二进制bin文件,这个文件一般用于烧录到用户开发板中。u-boot.srec——MotorolaS-Record格式,可以通过串行口下载到开发板中32实验二U-BOOT的分析和移植(6)通过JTAG口将u-boot.bin烧写到Flash的零地址,复位后执行u-boot输入help得到所有命令列表33演讲完毕,谢谢观看!
本文档为【第6课嵌入式系统的BootLoader技术ppt-开发】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
言言无悔一生
暂无简介~
格式:ppt
大小:291KB
软件:PowerPoint
页数:34
分类:
上传时间:2022-01-21
浏览量:0