




已阅读5页,还剩56页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
电子技术进展专题报告指导老师:丁 家 峰 前言Bootloader是嵌入式系统的引导加载程序,它是系统上电后运行的第一段程序,其作用类似于 PC 机上的 BIOS。在完成对系统的初始化任务之后,它会将非易失性存储器(通常是 Flash或 DOC 等)中的Linux 内核拷贝到 RAM 中去,然后跳转到内核的第一条指令处继续执行,从而启动 Linux 内核。由此可见,bootloader 和 Linux 内核有着密不可分的联系,要想清楚的了解 Linux内核的启动过程,我们必须先得认识 bootloader的执行过程,这样才能对嵌入式系统的整个启过程有清晰的掌握。 因此, 先介绍BIOS,后对常用bootloader进行讨论。分别是uboot,redboot,blob,armboot和ppcboot。 其中uboot,redboot资料比较详细。 目录BIOS11 .BIOS历史12 .BIOS类别13 .BIOS功能2 自检及初始化2程序服务处理3硬件中断处理3BIOS一些小功能34 .BIOS主要程序4 中断例程4系统设置程序4POST上电自检4系统启动自检程序5与CMOS区别和联系55 .BIOS功能设置6 标准CMOS6属性设置6电源管理76 .新一代BIOS10UBOOT121.uboot简介121.1 uboot的介绍121.2 uboot的体系结构132.uboot的运行过程分析132.1 启动模式介绍132.2 运行过程142.3 运行代码分析143.U-Boot支持的主要功能164.移植前的准备175.U-Boot移植过程186. U-Boot移植方法 197. U-Boot移植主要修改的文件198. U-Boot移植要点20Redboot241.介绍242.RedBoot 配置 253.RedBoot 启动模式 254.RedBoot资源使用 265.命令详解一般命令26armboot431.介绍432.特性43PPCBOOT441PPCBOOT原理442PPCBOOT使用与设置443. PPCBOOT针对BCNG主板有关的设置51Blob54555BIOS BIOS是英文Basic Input Output System的缩略语,直译过来后中文名称就是基本输入输出系统。其实,它是一组固化到计算机内主板上一个ROM芯片上的程序,它保存着计算机最重要的基本输入输出的程序、系统设置信息、开机后自检程序和系统自启动程序。 其主要功能是为计算机提供最底层的、最直接的硬件设置和控制。(1)、BIOS历史: BIOS技术源于IBMPC/AT机器的流行以及第一台由康柏公司研制生产的“克隆”PC。在PC启动的过程中,BIOS担负着初始化硬件,检测硬件功能,以及引导操作系统的责任。在早期,BIOS还提供一套运行时的服务程序给操作系统及应用程序使用。BIOS程序存放于一个断电后内容不会丢失的只读 内存中;系统过电或被重置 (reset) 时,处理器第一条指令的位址会被定位到 BIOS 的内存中,让初始化程序开始执行。英特尔公司从2000年开始,发明了可扩展固件接口(Extensible Firmware Interface),用以规范BIOS的开发。而支持EFI规范的BIOS也被称为EFI BIOS。之后为了推广EFI,业界多家著名公司共同成立了统一可扩展固件接口论坛(UEFI Forum),英特尔公司将EFI 1.1规范贡献给业界,用以制订新的国际标准UEFI规范。目前UEFI规范的最新版本是2.3.1,英特尔公司曾经预测,2010年,全世界或有有60%以上的个人电脑使用支持UEFI规范的BIOS产品。(2) 、BIOS类别: 市面上较流行的主板BIOS主要有 Award BIOS、AMI BIOS、Phoenix BIOS三种类型,此外还有台湾出的Insyde BIOS。AwardAward BIOS是由Award Software公司开发的BIOS产品,在目前的主板中使用最为广泛。Award BIOS功能较为齐全,支持许多新硬件,市面上多数主机板都采用了这种BIOS。AMIAMI BIOS是AMI公司(全称:American Megatrends Incorporated)出品的BIOS系统软件,开发于80年代中期,早期的286、386大多采用AMI BIOS,它对各种软、硬件的适应性好,能保证系统性能的稳定,到90年代后,绿色节能电脑开始普及,AMI却没能及时推出新版本来适应市场,使得Award BIOS占领了大半壁江山。当然ami也有非常不错的表现,新推出的版本依然功能强劲。PhoenixPhoenix BIOS是Phoenix公司产品,Phoenix意为凤凰或埃及神话中的长生鸟,有完美之物的含义。Phoenix BIOS 多用于高档的586原装品牌机和笔记本电脑上,其画面简洁,便于操作。InsydeInsyde bios 是台湾的一家软件厂商的产品,是一种新兴的BIOS类型,被某些基于英特尔芯片的笔记本电脑采用,如神舟、联想。(3) 、BIOS功能:从功能上看,BIOS分为三个部分:自检及初始化这部分负责启动电脑,具体有三个部分:第一个部分是用于电脑刚接通电源时对硬件部分的检测,也叫做加电自检(Power On Self Test,简称POST),功能是检查电脑是否良好,通常完整的POST自检将包括对CPU,640K基本内存,1M以上的扩展内存,ROM,主板,CMOS存储器,串并口,显示卡,软硬盘子系统及键盘进行测试,一旦在自检中发现问题,系统将给出提示信息或鸣笛警告。自检中如发现有错误,将按两种情况处理:对于严重故障(致命性故障)则停机,此时由于各种初始化操作还没完成,不能给出任何提示或信号;对于非严重故障则给出提示或声音报警信号,等待用户处理。第二个部分是初始化,包括创建中断向量、设置寄存器、对一些外部设备进行初始化和检测等,其中很重要的一部分是BIOS设置,主要是对硬件设置的一些参数,当电脑启动时会读取这些参数,并和实际硬件设置进行比较,如果不符合,会影响系统的启动。第三个部分是引导程序,功能是引导DOS或其他操作系统。BIOS先从软盘或硬盘的开始扇区读取引导记录,如果没有找到,则会在显示器上显示没有引导设备,如果找到引导记录会把电脑的控制权转给引导记录,由引导记录把操作系统装入电脑,在电脑启动成功后,BIOS的这部分任务就完成了。程序服务处理程序服务处理程序主要是为应用程序和操作系统服务,这些服务主要与输入输出设备有关,例如读磁盘、文件输出到打印机等。为了完成这些操作,BIOS必须直接与计算机的I/O设备打交道,它通过端口发出命令,向各种外部设备传送数据以及从它们那儿接收数据,使程序能够脱离具体的硬件操作。硬件中断处理硬件中断处理则分别处理PC机硬件的需求,BIOS的服务功能是通过调用中断服务程序来实现的,这些服务分为很多组,每组有一个专门的中断。例如视频服务,中断号为10H;屏幕打印,中断号为05H;磁盘及串行口服务,中断14H等。每一组又根据具体功能细分为不同的服务号。应用程序需要使用哪些外设、进行什么操作只需要在程序中用相应的指令说明即可,无需直接控制。(二)(三)两部分功能虽然是两个独立的内容,但在使用上密切相关。这两部分分别为软件和硬件服务,组合到一起,使计算机系统正常运行。另外需注意:BIOS设置不当会直接损坏计算机的硬件,甚至烧毁主板,建议不熟悉者慎重修改设置。用户可以通过设置BIOS来改变各种不同的设置,比如onboard显卡的内存大小。用户手上所有的操作系统都是由BIOS转交给引导扇区,再由引导扇区转到各分区激活相应的操作系统。BIOS一些小功能开机出现DISK BOOT FAILURE,INSERT SYSTEM DISK AND PRESS ENTER1情况从硬盘启动的设置方法:开机时按“del”键,进入BIOS设置,(/*也可能是按F1、Esc或者是F12,依据电脑品牌的不同来具体操作*/)用上下光标键移动到第二项“Advanced BIOS Features ”按回车,在按上下光标键移动到Frist Boot drivers,这时候把按 Page UP键和“Page DOWN”选择属性为“HDD”或者DISK HARD按F10保存后,重启就可以了。(由于BIOS不同属性中的硬盘启动也不同。)(4)、BIOS主要程序: 中断例程BIOS中中断例程即BIOS中断服务程序。它是微机系统软、硬件之间的一个可编程接口,用于程序软件功能与微机硬件实现的衔接。DOS/Windows操作系统对软、硬盘、光驱与键盘、显示器等外围设备的管理即建立在系统BIOS的基础上。程序员也可以通过 对INT 5、INT 13等中断的访问直接调用BIOS中断例程。系统设置程序微机部件配置情况是放在一块可读写的CMOSRAM芯片中的,它保存着系统CPU、软硬盘驱动器、显示器、键盘等部件的信息。关机后,系统通过一块后备电池向CMOS供电以保持其中的信息。如果CMOS中关于微机的配置信息不正确,会导致系统性能降 低、零部件不能识别,并由此引发一系列的软硬件故障。在BIOS ROM芯片中装有一个程序称为“系统设置程序”,就是用来 设置CMOS RAM中的参数的。这个程序一般在开机时按下一个或一组键即可进入,它提供了良好的界面供用户使用。这个设置 CMOS参数的过程,习惯上也称为“BIOS设置”。新购的微机或新增了部件的系统,都需进行BIOS设置。POST上电自检微机接通电源后,系统将有一个对内部各个设备进行检查的过程,这是由一个通常称之为POST(Power On Self Test,上电自检)的程序来完成的。这也是BIOS的一个功能。完整的POST自检将包括CPU、640K基本内存、1M以上的扩展内存、ROM、主板、 CMOS存贮器、串并口、显示卡、软硬盘子系统及键盘测试。自检中若发现问题,系统将给出提示信息或鸣笛警告。系统启动自检程序在完成POST自检后,ROM BIOS将按照系统CMOS设置中的启动顺序搜寻软硬盘驱动器及CDROM、网络服务器等有效的启动驱动器 ,读入操作系统引导记录,然后将系统控制权交给引导记录,由引导记录完成系统的启动。与CMOS区别和联系区别由于CMOS与BIOS都跟电脑系统设置密切相关,所以才有CMOS设置和BIOS设置的说法。也正因此,初学者常将二者混淆。CMOS 是电脑主机板上一块特殊的RAM芯片,是系统参数存放的地方,而BIOS中系统设置程序是完成参数设置的手段。因此,准确的说法应是通过BIOS设置程序对CMOS参数进行设置。而我们平常所说的CMOS设置和BIOS设置是其简化说法,也就在一定程度上造成了两个概念的混淆。事实上,BIOS程序是储存在主板上一块 EEPROM Flash芯片中的,CMOS存储器是用来存储BIOS设定后的要保存数据的,包括一些系统的硬件配置和用户对某些参数的设定,比如传统BIOS的系统密码和设备启动顺序等等。联系BIOS是一组设置硬件的电脑程序,保存在主板上的一块EPROM或EEPROM芯片中,里面装有系统的重要信息和设置系统参数的设置程序BIOS Setup程序。而CMOS即:Complementary Metal Oxide Semiconductor互补金属氧化物半导体,是主板上的一块可读写的RAM芯片,用来保存当前系统的硬件配置和用户对参数的设定,其内容可通过设置程序进行读写。CMOS芯片由主板上的钮扣电池供电,即使系统断电,参数也不会丢失。CMOS芯片只有保存数据的功能,而对CMOS中各项参数的修改要通过BIOS的设定程序来实现。BIOS与CMOS既相关又不同:BIOS中的系统设置程序是完成CMOS参数设置的手段;CMOS RAM既是BIOS设定系统参数的存放场所,又是 BIOS设定系统参数的结果。因此,完整的说法应该是“通过BIOS设置程序对CMOS参数进行设置”。由于 BIOS和CMOS都跟系统设置密初相关,所以在实际使用过程中造成了BIOS设置和CMOS设置的说法,其实指的都是同一回事,但BIOS与CMOS却是两个完全不同的概念,切勿混淆。(5)、BIOS功能设置 标准CMOS(Standard CMOS Setup)从主菜单选择“STANDARD CMOS SETUP”后进入“标准CMOS设置”菜单。Date/Time:日期和时间的设置,我们可以用光标配合“Page Up”和“Page Down”依次设置成当前日期和时间。Floppy Drive A,B: 设定软盘驱动器类型为None/720K/1.2M/1.44M/2.88M。HDD Type(硬盘类型): Auto(自动检测)、SCSI(SCSI HDD)、CDROM驱动器、Floptical(LS120大容量软驱)或是Type 147等IDE设备。LBA/Large:硬盘LBA/Large模式是否打开。540M以上的硬盘都要将此选项打开(On),但在Novell Netware 3.xx或4.xx版等网络操作系统下要视情况将它关掉(Off)。Block Mode: 将此选项设为On,有助于硬盘存取速度加快,但有些旧硬盘不支持此模式,必须将此选项设为Off。32 Bit Mode: 将此选项设为On,有助于在32位的操作系统(如WIN95/NT)下加快硬盘传输速度,有些旧硬盘不支持此模式,必须将此选项设为Off。PIO Mode: 支持PIO Mode0Mode5(DMA/33)。用BIOS程序自动检查硬盘时,会自动设置硬盘的PIO Mode。注意:当你在系统中接上一台IDE设备(如硬盘、光驱等)时,最好进入BIOS,让它自动检测。如果使用的是抽屉式硬盘的话,可将Type设成Auto,或将Primary以及Secondary的Type都改成Auto 即可。所谓Primary指的是第一IDE接口,对应于主板上的IDE0插口,Secondary指的是第二IDE接口,对应于主板上的IDE1插口。每个IDE接口可接Master/Slave(主/从)两台IDE设备。属性设置从主菜单上选择“BIOS FEATURES SETUP”即进入“BIOS属性设置”菜单。此设置中第1项“Virus Warning/病毒防范”除了在安装操作系统如DOS6?xx和Windows9x/200 0/NT等的过程中须设置为“Disabled”外,其余时间应该都设为“Enabled”。第2、3、4和5项是涉及CPU的。其中“CPU Internal Cache/CPU内部缓存”、“External Cache/外部缓存”用来管理CPU的L1 Cache和L2 Cache。如果使用赛扬(主频为2.66Ghz和300Mhz的除外)、Pentium和Pentium可全部设为Enabled。第4项“CPU L2 Cache ECC Checking/CPU二级缓存ECC校验”一般情况下设为Enabled,但使用Pentium233 、Pentium266时可设为Disabled,因为这两种CPU的L2 Cache不具备ECC校验功能,设为Enable d时反而会降低系统启动速度。第5项“Processor number feature/处理器序列号功能”用于控制早已闹得沸沸扬扬的Pentium编号(ID),中国有关部门要求设为“Disabled”。但笔者曾试过,好像Intel出口到中国的“铜矿”Pentium已经在CPU中关闭了ID,此项设置毫无作用。另外一些是关于系统启动时的设置,其中“快速自检/Quick power on self test”可设为“Enabled”,这样系统在启动时只对内存检验一遍,而设为“Disabled”时则在启动时将对内存检验三遍,自然要慢些;至于“CPU升级日志/CPU Update Data”则按BIOS推荐值设为“Enabled”,“优先网络启动/Boot From LAN First”项用于“网卡”等启动优先设置,除联网使用外一般都设为“Disabled”;“系统引导顺序/Boot Sequence” 就是经常提到的从C盘或A盘启动设置,其中的设置选择较多,有光驱、“D:”等优先启动设置等,比较简明。注意其中从“D”盘启动是指物理D盘(即所使用的第二块硬盘)而不是逻辑D:盘。“软驱盘符交换/Swap Floppy Drive”用于交换两块软驱的“A:”、“B:”盘符,即如果有两块软驱可以通过此项设置将事实上的“A:”改为“B:”驱等;“引导显示卡/VGA Boot From”用于设置电脑在使用双显示卡时以PCI还是AGP显卡作为启动时(即显示)的主卡,此项设置根据用户自己使用的显卡总线类型而定,另外这项在给BIOS失效的显卡重写BIOS时也有用,例如在为BIOS失效的AGP卡重装BIOS时,可另插PCI 显卡引导系统进行操作。“引导时检查软驱/Boot Up Floppy Seek”意义明确,用户可根据自己需要分别设为“Enabled”或“Disabled”,但设为“Enabled”时,启动时软驱“吱吱”作响挺烦的。“启动时副键盘状态/Boot Up NumLock Stating”决定启动数字小键盘状态,设为“ON”时为数字输入有效(键盘上NumLock灯亮),反之则为无效状态;“Typematic Rate Sett ing”、“Typematic Rate(Chars/Sec)”和“Typematic Delay(Msec) ”三项用于调整键盘录入速度,意义不大。“密码使用选择/Security Option”设置有“System”和“Setup”分别是确定密码是每次启动系统(包括热启动)时都用还是仅在进入BIOS设置时才用。“显示校正/PCI-VGA Palette Snoop”是在ISA和PCI总线上分别使用两块显示板卡(如增加了VCD/DVD解压卡)时出现色彩不正常时可设为“Enabled”试试,一般都应设为“Disabled”。“Assign IRQ For VGA”则是设置由系统自动为显示卡配置中断(IRQ),目的是在系统中安装有I SA接口的解压卡等时使用,通常应该设为“Disabled”。“OS Select For DRAM64MB”这项只在电脑安装使用“OS/2”操作系统时才用,因为大多数用户的电脑中多安装Win XP/7/8之类,所以应该设为“No-OS/2”。“HDD S.M.A.R.T capability”用于开启硬盘的“故障自监测报告”功能,如果你的硬盘具备这一保护功能请设为“Enabled”,如果不具备这一功能,打开此开关也不影响系统正常运行。“Report No FDD For WIN95”的意思是在系统启动时报告win9x没有硬盘,用户系统一般是2X以上,强烈建议设置为Disable。最后一项“Video BIOS Shadow”用于启动后将显示卡的BIOS程序映射在内存中(开辟保留区)中,这样从理论上可以提高电脑显示速度,所以可以设为“Enabled”。电源管理在主菜单上选择“POWER MANAGEMMET SETUP”后进入“能源管理设置”菜单。能源管理功能可使大部份周边设备在闲置时进入省电功能模示,减少耗电量,达到节约能源的目的。电脑在平常操作时,是工作在全速模式状态,而电源管理程序会监视系统的图形、串并口、硬盘的存取、键盘、鼠标及其他设备的工作状态,如果上述设备都处于停顿状态,则系统就会进入省电模式,当有任何监控事件发生,系统即刻回到全速工作模式的状态。省电模式又分为“全速模式(Normal)、打盹模式(Doze)、待命模式(Standby)、沉睡模式(Suspend),系统耗电量大小顺序:NormalDoze Standby Suspend。Power Management/APM: 是否开启APM省电功能。“Disabled”和“Enabled”,若开启(Enable),则可设定省电功能。“PM Control by APM”的意思是将能源管理交给系统(指WIN9x)的 APM(“高级能源管理”的英文缩写),可根据用户意愿分别设为“Yes”或“No”,但交予系统管理要更好些。Green PC Monitor Power State/Video Power Down Mode/Hard Disk Power Down Mode : 设定显示器、显示卡以及硬盘是否开启省电模式,可设定成Standby、Suspend以及Off(即不进入省电模式)。Vdeo off Method”项用于控制显示器,有“DPMS/显示能源管理系统”、“亮度关闭/B lank Screen”、“关亮度并切断同步信号/V/H SYNC+Blank Screen”等三种模式可选,但其中“DPMS”节能效果最好,为推荐设置,但需符合DPMS规范的显示器和显卡支持,如果设备不符合DPMS,可再试设置成另两项。Video Power Down Mode: 设定显示器在省电模式下的状态 :Disable: 不设定 ;Stand By: 待命模式;Suspend: 沉睡模式。Hard Disk Power Down Mode: 设定硬盘在省电模式下的状态。(同上)“Suspend Mode”是休眠时间设置,可将时间设在1分至1小时之间,意思是超过所设时间后系统自动进入休眠状态。如果电脑中装有CD-R/W刻录机进行刻盘时最好将设为“Disabled”,以关闭休眠功能提高刻盘成功率。“HDD Power Down”项设置硬盘自动停转时间,可设置在1至15分钟之间,或设为“Disabled”关闭硬盘自动停转。Standby Timeout/Suspend Timeout: 本选项可设定系统在闲置几分钟后,依序进入Standby/Mode/Suspend Mode等省电模式。VGA Active Monitor”项用于设置显示器亮度激活方式,可设为“Disabled”和“Enabled”两种。“Soft-off by PWR-BTTN”项确定关机模式,设为“Instant-Off”,关机时用户按下电源开关,则立刻切断电源,设为“Delay4Secs”时,则在按下电源开关4秒钟后才切断电源,如果按下开关时间不足4秒,则自动进入休眠模式,所以一般按习惯设为“Instant-Off”。“Power LED In Suspend”项设置机箱电源指示灯在系统休眠时的状态,可设为“闪动/Bl anking”、“亮/On”和“Off/Dual”等,通常按习惯设为“Blanking”使电脑在休眠时电源灯闪烁提醒用户注意。“System After AC Back”项设置电脑在交流电断电后又恢复时的状态,可设为“断电/So ft-off”、“开机/Full On”、“Memory By S/W”和“Memory By H/W”三项,按国内使用情况一般都设为停电后再恢复供电时电脑不自动开机,即设为“断电/Soft-off”。“CPUFAN off In suspend”项是设置CPU风扇在系统休眠时自动停转,可根据自己的风扇(只对原配或带测速功能的风扇有效)设为“Disabled”或“Enabled”。“PME Event Wakeup”一项不详,先按缺省设置为“Disabled”。“ModemRingOn/WakeOnlan”用于通过网络或Modem实现远程叫醒开机的设置,只要你不使用这些功能,就都可设为“Disabled”,如果需要再设为“Enabled”。“Resume by Alarm”项用于定时开机,设置的时间可定在每月某日(0031)某时某分某秒( 0023:0059:0059),但需要主板和其它硬件支持。“能源管理设置”中还有“*Reload Global Timer Events*”项,这部分意思大致是对其中所列设备和网络设备以及部分系统资源(IRQ)对系统的激活是否对进入节能状态时间重新计时。(6)、新一代BIOS下一代BIOS:UEFI BIOS一直在IT界叱咤风云的BIOS即将被UEFI BIOS淘汰,新主板将普及UEFI BIOS。微星称将三年内UEFI BIOS将取代BIOS。UEFIBIOS全称“统一的可扩展固定接口”(Unified Extensible Firmware Interface), 是一种详细描述全新类型接口的标准。这种接口用于操作系统自动从预启动的操作环境,加载到一种操作系统上,从而使开机程序化繁为简,节省时间。UBOOT 1. uboot简介1.1 uboot的介绍U-Boot,全称Universal Boot Loader,是遵循GPL条款的开放源码项目。从FADSROM、8xxROM、PPCBOOT逐步发展演化而来。其源码目录、编译形式与Linux内核很相似,事实上,不少U-Boot源码就是相应的Linux内核源程序的简化,尤其是一些设备的驱动程序,这从U-Boot源码的注释中能体现这一点。但是U-Boot不仅仅支持嵌入式Linux系统的引导,当前,它还支持NetBSD, VxWorks, QNX, RTEMS, ARTOS, LynxOS嵌入式操作系统。其目前要支持的目标操作系统是OpenBSD, NetBSD, FreeBSD,4.4BSD, Linux, SVR4, Esix, Solaris, Irix, SCO, Dell, NCR, VxWorks, LynxOS, pSOS, QNX, RTEMS, ARTOS。这是U-Boot中Universal的一层含义,另外一层含义则是U-Boot除了支持PowerPC系列的处理器外,还能支持MIPS、 x86、ARM、NIOS、XScale等诸多常用系列的处理器。这两个特点正是U-Boot项目的开发目标,即支持尽可能多的嵌入式处理器和嵌入式操作系统。就目前来看,U-Boot对PowerPC系列处理器支持最为丰富,对Linux的支持最完善。其它系列的处理器和操作系统基本是在2002年11 月PPCBOOT改名为U-Boot后逐步扩充的。从PPCBOOT向U-Boot的顺利过渡,很大程度上归功于U-Boot的维护人德国DENX软件工程中心Wolfgang Denk以下简称W.D本人精湛专业水平和持着不懈的努力。当前,U-Boot项目正在他的领军之下,众多有志于开放源码BOOT LOADER移植工作的嵌入式开发人员正如火如荼地将各个不同系列嵌入式处理器的移植工作不断展开和深入,以支持更多的嵌入式操作系统的装载与引导。 选择U-Boot的理由: 开放源码; 支持多种嵌入式操作系统内核,如Linux、NetBSD, VxWorks, QNX, RTEMS, ARTOS, LynxOS; 支持多个处理器系列,如PowerPC、ARM、x86、MIPS、XScale; 较高的可靠性和稳定性; 较高的可靠性和稳定性; 高度灵活的功能设置,适合U-Boot调试、操作系统不同引导要求、产品发布等; 丰富的设备驱动源码,如串口、以太网、SDRAM、FLASH、LCD、NVRAM、EEPROM、RTC、键盘等; 较为丰富的开发调试文档与强大的网络技术支持; 1.2 uboot的体系结构目录树- board 目标板相关文件,主要包含SDRAM、FLASH驱动; - common 独立于处理器体系结构的通用代码,如内存大小探测与故障检测; - cpu 与处理器相关的文件。如mpc8xx子目录下含串口、网口、LCD驱动及中断初始化等文件; - driver 通用设备驱动,如CFI FLASH驱动(目前对INTEL FLASH支持较好) - doc U-Boot的说明文档; - examples可在U-Boot下运行的示例程序;如hello_world.c,timer.c; - include U-Boot头文件;尤其configs子目录下与目标板相关的配置头文件是移植过程中经常要修改的文件; - lib_xxx 处理器体系相关的文件,如lib_ppc, lib_arm目录分别包含与PowerPC、ARM体系结构相关的文件; - net 与网络功能相关的文件目录,如bootp,nfs,tftp; - post 上电自检文件目录。尚有待于进一步完善; - rtc RTC驱动程序; - tools 用于创建U-Boot S-RECORD和BIN镜像文件的工具; 2、uboot的运行过程分析2.1 启动模式介绍大多数Boot Loader 都包含两种不同的操作模式:启动加载模式和下载模式,这种区别仅对于开发人员才有意义。但从最终用户的角度看,Boot Loader 的作用就是用来加载操作系统,而并不存在所谓的启动加载模式与下载工作模式的区别。启动加载(Boot loading)模式:这种模式也称为自主(Autonomous)模式。也即 Boot Loader 从目标机上的某个固态存储设备上将操作系统加载到 RAM 中运行,整个过程并没有用户的介入。这种模式是 BootLoader 的正常工作模式,因此在嵌入式产品发布的时侯,Boot Loader 显然必须工作在这种模式下。下载(Downloading)模 式:在这种模式下,目标机上的 Boot Loader 将通过串口连接或网络连接等通信手段从主机(Host)下载文件,比如:下载内核映像和根文件系统映像等。从主机下载的文件通常首先被 BootLoader 保存到目标机的 RAM 中,然后再被 BootLoader 写到目标机上的FLASH 类固态存储设备中。BootLoader 的这种模式通常在第一次安装内核与根文件系统时被使用;此外,以后的系统更新也会使用 BootLoader 的这种工作模式。工作于这种模式下的 Boot Loader 通常都会向它的终端用户提供一个简单的命令行接口。UBoot这样功能强大的 Boot Loader 同时支持这两种工作模式,而且允许用户在这两种工作模式之间进行切换。2.2 运行过程大多数bootloader都分为阶段1(stage1)和阶段2(stage2)两大部分,uboot也不例外。依赖于CPU体系结构的代码(如CPU初 始化代码等)通常都放在阶段1中且通常用汇编语言实现,而阶段2则通常用C语言来实现,这样可以实现复杂的功能,而且有更好的可读性和移植性。U-Boot 编译后的代码定义一般不超过100kB ,并且这100 kB 又分成两个阶段来执行. 第一阶段的代码在start . s 中定义,大小不超过10 kB ,它包括从系统上电后在0x00000000 地址开始执行的部分. 这部分代码运行在Flash 中,它包括对arm926ejs的一些寄存器的初始化和将U-Boot 的第二阶段代码从Flash拷贝到SDRAM中. 除去第一阶段的代码,剩下的部分都是第二阶段的代码. 第二阶段的起始地址是在第一阶段代码中指定的,被复制到SDRAM后,就从第一阶段跳到这个入口地址开始执行剩余部分代码. 第二阶段主要是进行一些BSS 段设置,堆栈的初始化等工作,最后会跳转到main -loop 函数中,接受命令并进行命令处理. 图1 给出了U - Boot 的详细的运行过程包括对内核的设置、装载及调用过程。系统复位进入u-boot stage l的入口点硬件设备的初始化为加载uboot stage 2准备ram空间设置好堆栈跳转到stage 2的C入口点初始化本阶段要用到的设备检查内存映射将kernel映像和文件映像从flash中读到ram中为内核设定启动参数调用内核2.3 运行代码分析2.3.1 stage 1 uboot的stage1代码通常放在start.s文件中,它用汇编语言写成,其主要代码包括定义入口,设置异常向量,设置cpu的模式和频率,配置内存区控制寄存器,安装uboot的栈空间,关闭看门狗等。由于本人对ram的汇编不太熟悉,所以这一部分不作具体分析。2.3.2 stage 2lib_arm/board.c中的start armboot是C语言开始的函数,也是整个启动代码中C语言的主函数,同时还是整个uboot(armboot)的主函数,该函数主要完成如下操作: 调用一系列初始化函数1. 指定初始函数表:init_fnc_t *init_sequence = cpu_init, /* cpu的基本设置 */board_init, /* 开发板的基本初始化 */interrupt_init, /* 初始化中断 */env_init, /* 初始化环境变量 */init_baudrate, /* 初始化波特率 */serial_init, /* 串口通讯初始化 */console_init_f, /* 控制台初始化第一阶段 */display_banner, /* 通知代码已经运行到该处 */dram_init, /* 配制可用的内存区 */display_dram_config,#if defined(CONFIG_VCMA9) | defined (CONFIG_CMC_PU2)checkboard,#endifNULL,;执行初始化函数的代码如下:for (init_fnc_ptr = init_sequence; *init_fnc_ptr; +init_fnc_ptr) if (*init_fnc_ptr)() != 0) hang (); 2. 配置可用的Flash区flash_init ()3. 初始化内存分配函数mem_malloc_init()4. nand flash初始化#if (CONFIG_COMMANDS & CFG_CMD_NAND)puts (NAND:);nand_init(); /* go init the NAND */#endif 5. 初始化环境变量env_relocate ();6. 外围设备初始化devices_init()7. I2C总线初始化i2c_init();8. LCD初始化drv_lcd_init();9. VIDEO初始化drv_video_init();10. 键盘初始化drv_keyboard_init();11. 系统初始化drv_system_init(); 初始化网络设备初始化相关网络设备,填写IP、MAC地址等。1. 设置IP地址gd-bd-bi_ip_addr = getenv_IPaddr (ipaddr);2. 设置mac地址 int i; ulong reg; char *s, *e; uchar tmp64; i = getenv_r (uchar*)(ethaddr), tmp, sizeof (tmp); s = (i 0) ? (char*)tmp : NULL; for (reg = 0; reg bd-bi_enetaddrreg = s ? simple_strtoul (s, &e, 16) : 0; if (s) s = (*e) ? e + 1 : e; 进入主UBOOT 命令行进入命令循环(即整个boot的工作循环),接受用户从串口输入的命令,然后进行相应的工作。for (;) main_loop ();3.U-Boot支持的主要功能 U-Boot
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 宝石轴承磨工安全专项模拟考核试卷含答案
- 低维纳米材料掺杂改性MXene的制备及其湿敏性能研究
- 2025听障教师考试题型及答案
- 2024-2025学年新教材高中化学 第六章 化学反应与能量 1 化学反应与能量变化(2)说课稿 新人教版必修2
- 基于群感淬灭的磁性分子印迹聚合物制备及其对信号分子吸附特征研究
- 硬质合金混合料制备工岗前复试考核试卷含答案
- 中联重科应收账款资产支持票据融资效果研究
- 基于深度学习的BGP异常事件检测与实现
- 酸再生工标准化考核试卷含答案
- 叶面喷硒对糯玉米硒吸收和生理特性及产质量的影响
- 电厂安全生产运行管理培训课件
- 医院院前急救病历 广州市急救中心
- 诊断学胸壁胸廓与乳房
- 输液室运用PDCA降低静脉输液患者外渗的发生率品管圈(QCC)活动成果
- 集约化猪场的规划设计
- 数星星的孩子习题精选及答案
- 摩登情书原著全文下载(通用3篇)
- 材料科学基础复习题及答案
- 抗栓治疗消化道损伤防治策略
- 螺旋千斤顶设计大作业
- 超声流量计技术规格书9
评论
0/150
提交评论