第7章-嵌入式BootLoard技术及Linux根文件系统.ppt_第1页
第7章-嵌入式BootLoard技术及Linux根文件系统.ppt_第2页
第7章-嵌入式BootLoard技术及Linux根文件系统.ppt_第3页
第7章-嵌入式BootLoard技术及Linux根文件系统.ppt_第4页
第7章-嵌入式BootLoard技术及Linux根文件系统.ppt_第5页
免费预览已结束,剩余69页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第7章引导板和根文件系统,第1节嵌入式引导板技术,引导加载器概念引导加载器操作模式的主要任务和典型结构框架嵌入式Linux引导加载器(vivi)BLOB简介,7.1引导加载器概念,引导加载器是一个在操作系统内核运行之前运行的小程序。通过它,我们可以初始化硬件设备并建立内存空间的映射图,从而使系统的软件和硬件环境处于一个合适的状态,以便为最终调用操作系统内核准备正确的环境。一般来说,引导加载程序主要在硬件上实现,尤其是在嵌入式领域。因此,在嵌入式世界中构建一个通用的引导程序几乎是不可能的。尽管如此,我们仍然可以归纳一些关于引导加载程序的一般概念,以指导特定于用户的引导加载程序的设计和实现。7 . 1 . 1引导加载程序支持中央处理器和嵌入式板。通常,每个中央处理器架构都有一个不同的引导加载程序。有些引导加载程序还支持多种体系结构的中央处理器,例如,引导同时支持ARM体系结构和MIPS体系结构。移植工作,引导加载程序的板级移植,以及7 . 1 . 2引导加载程序的安装介质。系统通电或复位后,所有处理器通常从一个预置地址获取指令。例如,在复位期间,ARM指的是地址0 x0。嵌入式系统通常有某种类型的固态存储设备(如只读存储器、可编程只读存储器或闪存等)。)映射到这个预先安排的地址。因此,系统通电后,处理器将首先执行引导加载程序。引导程序是系统首先执行的程序。7.1.3固态存储设备的典型空间分配结构,以及7 . 1 . 4引导加载程序的控制模式,主机和目标计算机通常通过串口连接,引导加载程序软件在执行时通常通过串口通信。例如,将打印信息输出到串行端口,从串行端口读取用户控制字符,以及通过JTAG和其他接口进行通信。7.2引导加载程序的操作模式,大多数引导加载程序包括两种不同的操作模式:启动加载模式下载模式。从最终用户的角度来看,引导加载程序用于加载操作系统。然而,所谓的引导加载模式和下载操作模式之间没有区别。7.2.1引导加载模式和引导加载模式被称为“自主”模式。引导加载程序将操作系统从目标机器上的固态存储设备加载到内存中,以便在整个过程中无需用户干预即可运行。这种模式是引导加载程序的正常工作模式,所以当嵌入式产品发布时,引导加载程序显然必须在这种模式下工作。7.2.2下载模式。在下载模式下,目标机器上的引导加载程序将通过串行端口连接或网络连接以及其他通信方式从主机下载文件,例如下载内核映像和根文件系统映像。从主机下载的文件通常首先由引导加载程序保存到目标机器的内存中,然后由引导加载程序写入目标机器上的闪存型固态存储设备中。首次安装内核和根文件系统时,通常使用此模式。此外,未来的系统更新也将使用引导加载程序的这种工作模式。在这种模式下工作的引导加载程序通常为其最终用户提供一个简单的命令行界面。7 . 2 . 3引导加载程序与主机通信,并通过串行端口传输。传输协议通常是xmodem/ymodem/zmodem/zmmodem。程序简单,传输速度相对较慢。通过以太网传输115200bps是一种很好的方法。TFTP议定书是最常见的方法。7.3BL的主要任务和典型的结构框架,大多数引导加载程序分为阶段1和阶段2。依赖于处理器体系结构和板级初始化的代码通常放置在阶段1中,用汇编语言实现,而阶段2通常用C语言实现,这可以实现更复杂的功能,并且代码将具有更好的可读性和可移植性。引导加载程序的阶段1通常包括以下步骤(按执行顺序):硬件设备初始化。为阶段2准备内存空间以加载引导加载程序。将引导加载程序的第2阶段复制到内存空间。设置堆栈。跳转到阶段2入口点c。引导加载程序的阶段2(1/2)通常包括以下步骤(按执行顺序):初始化要在此阶段使用的硬件设备。检测系统内存映射。将内核映像和根文件系统映像从闪存读取到内存空间。为内核设置启动参数。调用内核。7.3.2引导加载程序的阶段2为真(2/2)。第二阶段的代码通常用C语言实现,以便实现更复杂的功能,实现更好的代码可读性和可移植性。与普通的C语言应用程序不同,在编译和链接引导程序等程序时,我们不能使用glibc库中的任何支持函数。7.4 Linux引导加载程序、系统配置、中断接管、引导加载内核、根文件系统、参数传递、内核调试、内核和根文件系统下载等。uClinux(Linux)的通用引导加载程序:redbootblobvivootarmboot.7.4.1 vivi (1/2),UP-NETARM2410-S平台的引导程序具有简单的结构和基本功能:xmodem,闪存(Nand,Nor)坏块管理和存储参数,7.4.1vivi(2/2),Linux内核引导支持,内核参数转移,分区(bon)命令行支持,引导加载器详细设计7.4.2,阶段1代码设计阶段2进入代码设计闪存驱动程序设计串口驱动程序设计XMODEM协议设计内存空间分布设计编译,连接脚本设计网络用于配置锁相环、软件无线电、输入输出、中断等。查看连接文件。vivi/arch/vivi.lds程序位于0 x33f00000ARM指令的特征。它跳转到内存上的第二级,即7.4.5李美慧的第二级流。为复位模式板上的其他外设初始化设置内存映射,MMU初始化系统堆空间初始化MTD设备(分区)初始化vivi命令进入命令行或引导系统,7.4.6vivi启动过程-加载主要组件,初始化文件系统加载组件:boot _ kernel . c : copy _ kernel _ img(to,(char *) from,size,media _ type);运行加载的文件:loader,vivi的内存映射,7.4.7vivi的命令,lib/command.c文件中的命令处理,添加_ CommandFind _ CMdexeccmdCommand _ Help,1。昕薇的命令用法,vivihelpccpu cmds -Managecpuclocksbon cmds -ManageThebonfilesystempramaset | show | save | reset-set/getparameter partadd | del | show | reset-Managemtdpartitionmem cmds -ManageMemoryload .-LoadAfileToram/Flashgo-jumptodump-Display(hex dump)arageofmemory . call-jump _ with _ returntoboot cmds -Bootinglinuxkernelbootucos cmds -Bootingucosystemhelp cmds -Helpauthelp?2。添加vivi命令,命令初始化过程。/arch/s3c2410/smdk2410 _ test.c,/lib/my _ test.c编辑。/lib/Config _ cmd . inboolbuild-inmytestcommmandconfig _ my _ test edit。/lib/makefileobj-$(config _ test)=my _ test . o edit my _ test . c file init _ builtin _ cmds add命令:extern user _ command _ tmy _ test _ cmd。add _ command(add _ command的配置(make menuconfig*build-inmytest command,下载7.4.7 viviboot加载程序,1。loadflashucosx(注意:不是LoadFlashuvivix,下载3,带x调制解调器协议,bootucos4,帮助命令:MyTest CMDS-TestFunctions 5,MyTest命令:vivimyTestusage : testsleep-testslepmode(pwbtiseint0)test-testtexternalinkterrupt0 testled-Testleds,7.4.8当跳转到内核时要满足的条件,1。中央处理器寄存器设置:r0=0;R1=机器类型id;对于机器类型号,请参见Linux/arch/arm/tools/mach-type。R2=启动参数标记列表在公羊中起始基地址;2.中央处理器模式:必须禁止中断(IRQs和金融情报机构);中央处理器必须为监督者的保护模式;3.躲藏和公共管理股的设置*货币管理股必须关闭;指令躲藏可以打开也可以关闭;数据躲藏必须关闭;7.4.9各种模式下的可见寄存器,7。4 .10分钟内核的引导,lib/boot_kernel.c中的启动内核函数传递启动参数退出薇薇,处理缓存器_ Linux(longa 0、longa1、longa2)函数负责启动,7.5BLOB简介,BootLoaderOBject缩写结构简单功能完整:xmodem、tftp、flash等支持Linuxkernel引导,可以传递内核参数支持分区,7。5 .1斑点从哪里开始?正常的启动是从src/blob/start .S开始xlli接口,则和平台相关xlli : LowLevelInitializationxlli的优点:增强了平台的移植性,XLLI示例,EXPORTxlli _ GPIO _ initializepioppinsforthisplatformexportxlli _ MFPR _ init;initializetheMultiFunctionPinRegisterSexPortxlli _ MFPR _ offset _ table;P1;DynamicMemoryControllerInitializationPart # 1EXPORTxlli _ r compap;HCAL;hardwaredelaylancalcalcalcalcalcalibrationroutineexportxlli _ DDR _ SCAL;软件延迟校准路由导出_ Dmem _ Initp2DynamicMemoryControllerinitializationPart # 2 export xlli _ Smem _ init;StaticMemoryControllerInitializationEXPORTxlli _ intr _ init;中断初始化(masksallinterrupts)Exportxlli _ freq _ change;frequencyChangeSequenceExportxlli _ icache _ enable;启用缓存、数字缓存和RanchoTargetBufferExportxlli _ SetTB;setthegetbebaseAddress(useforsleepresets)Exportxlli _ InitPageTable;InitializePageTableforMMUunitEXPORTxlli _ InitPageTable _ var;InitializePageTableFormMuunit(baseaddrin 1)Exportxlli _ MMU _ init;InitializetheMemoryManagementUnitEXPORTxlli _ goVirtual;maketttransitionfrophysicaladdresstovirtualaddress,从XLLI接口启动,src/blob/xlli/main stone/start。s区分上电复位和休眠信息作战初始化内存初始化配置锁频环相关包括文件xlli _ Mainstone _ defs。incxlli _ Bulvede _ defs。公司。标准的一滴启动,从src/blob/start-pxa .S开始信息作战初始化内存初始化,正常启动完成的工作,正常启动在src/blob/start.s中定义复制一滴后半部到内存为什么要复制?斑点的两个连接配置脚本开始-LD-脚本,启动部分的定位。入口是_startrest-ld-script,后半部的定位。入口是蹦床负责初始化C代码空间,跳转到C代码中运行斑点的C代码中的初始化工作,init _ subsystems完成的任务,初始化initlist中的函数驱动程

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论