当前位置:首页 > > 充电吧
[导读]U-Boot,全称 Universal Boot Loader,是遵循GPL条款的开放源码项目。U-Boot的作用是系统引导。U-Boot从FADSROM、8xxROM、PPCBOOT逐步发展演化而来

U-Boot,全称 Universal Boot Loader,是遵循GPL条款的开放源码项目。U-Boot的作用是系统引导。

U-Boot从FADSROM、8xxROM、PPCBOOT逐步发展演化而来。其源码目录、编译形式与Linux内核很相似,事实上,不少U-Boot源码就是根据相应的Linux内核源程序进行简化而形成的,尤其是一些设备的驱动程序,这从U-Boot源码的注释中能体现这一点。

一、uboot的最终目的 在说uboot之前,先看一下PC机是怎么启动的? pc上电,bios(引导操作系统)、识别C盘、运行应用程序。 同样的在嵌入系统里面,启动过程:一上电的时候,uboot(引导Linux内核)、挂接根文件系统、运行应用程序。
小结:uboot的最终的目的->启动内核 二、怎么让嵌入式系统使用uboot ① 先来介绍一下补丁: 什么是补丁? 所谓的补丁就是我们在原码包上做了什么修改,我们将这些修改单独列出来放到一个文件,然后发布的时候,把补丁文件给别人家即可。 怎么打补丁?

 tar xjf u-boot-1.1.6.tar.bz2
 cd u-boot-1.1.6/
 patch -p1 < ../u-boot-1.1.6_jz2440.patch

-p1 是忽略配置文件中的第一个参数,即,u-boot-1.1.6/和u-boot-1.1.6_jz2440/

补丁文件中的 ---表示原来的代码,+++表示修改后的代码;比如:  
② 打完补丁之后,要想uboot支持哪些单板,需要配置。通过make 100ask24x0_config 来配置我们此款JZ2440V3单板,然后再make编译uboot。 总结一下:

tar xjf u-boot-1.1.6.tar.bz2 //解压缩
patch -p1 < ../u-boot-1.1.6_jz2440.patch //打补丁
make 100ask24x0_config //配置
make //编译

③ 编译完成以后,会生成一个u-boot.bin的文件,如图:

然后通过dnw或者eop将这个bin文件烧写到开发板上面,烧写完成以后在串口上可以看到它的启动信息;

三、uboot命令使用

在嵌入式操作系统中,bootloader有很多种,我们这里使用的是uboot;

① 输入help或?可以查看uboot有哪些命令; 如果想查看具体哪个命令的用法,可以输入“? 命令名”即可。
如何查看uboot有哪些环境变量? 使用print 命令

② 怎么设置环境变量? 使用set 命令

总结一下:

?/help + 命令 //查询命令的用法
print        //查看当前环境变量
set          //修改环境变量
save         //保存环境变量
reset        //重启uboot
boot         //引导内核

四、uboot功能介绍 ① 对于PC机来说windows操作系统存在于硬盘上面,BIOS从硬盘上读出windows操作系统,然后放到DDR(SDRAM的一种 DDR SDRAM); ② 而对于嵌入linux来说,一般从flash中读取出内核,然后放到SDRAM中去。 可以看出,uboot要具备的基本功能:能够读取flash、写入SDRAM之前要初始化SDRAM、启动内核。 在开发阶段,我们想让它增加更多的功能,比如说加入写flash的功能,因为在开发中(为了开发方便),内核也是通过uboot利用网络或USB下载把内核烧写到开发板中去的。

总结一下uboot的功能:

五、uboot的源码结构:board  开发板相关  对应不同配置的(即使CPU相同),smdk2410、sbc2410x  cpu  平台相关  对应不同的CPU,arm920t、arm925t、i386等;在它们的子目录下仍可以细分,比如arm920t就有at91rm9200、s3c24x0  lib_i386 类似  平台相关  某一架构下通用的文件  include  通用的函数  头文件和开发板配置文件,开发板的配置文件都放在include/configs目录下,U-boot没有make menuconfig类似的菜单来进行可视化配置,需要手动地修改配置文件中的宏定义  lib_generic  通用的函数  通用的库函数,比如printf等  common  通用的函数  通用的函数,多是对下一层驱动程序的进一步封装  disk  通用的设备驱动程序  硬盘接口程序  drivers  通用的设备驱动程序  各类具体设备的驱动程序,基本上可以通用,它们通过宏从外面引入平台/开发板相关的函数  dtt  通用的设备驱动程序  数字温度测量器或者传感器的驱动  fs  通用的设备驱动程序  文件系统  nand_spl  通用的设备驱动程序  U-Boot一半从ROM、NOR Flash等设备启动,现在开始支持从NAND Flash启动,但是支持的CPU种类还不多  net  通用的设备驱动程序  各种网络协议  post  通用的设备驱动程序  上电自检程序  rtc  通用的设备驱动程序  实时时钟的驱动  doc  文档  开发、使用文档  examples  示例程序  一些测试程序,可以使用U-Boot下载后运行  tools  工具  制作S-Record、U-Boot格式映象的工具,比如mkimage U-boot中各目录间也是有层次结构的,虽然这种分法不是绝对的,但是在移植过程中可以提供一些指导意义

这些源码是怎么组织起来构成一个uboot的,最简单的方法就是分析它的makefile文件。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭