U-Boot深入分析——架构部分


版本1.3.4,主要针对arm

就u-boot引导以及下载功能来说,最主要的文件夹是如下几个:

board------针对不同开发板

cpu--------针对不同cpu

common-----通用函数(命令,环境变量,控制台,存储等)

drivers----相关的驱动

net--------网络设备驱动

fs---------文件系统

lib_*------各种库(通用的、平台相关的)

board下250个文件夹,代表其支持的至少250种开发板(没有包含,但是能找到与其结构相近的开发板,通过少量修改就能支持),基本上当前所有主流的arm开发板都能支持了(omap系列,s3c系列,pxa系列,i.mx系列等等,可惜的是没有找到对高通msm的支持,不知是否和高通过于封闭的方式有关。)

cpu方面,从arm720t到arm1136,也基本包含了所有的cpu类型。不过看其支持的arm系列都是带有thumb指令的,像arm720,arm920就不在其中,其实现与thumb相关的部分多么?问题保留common下,主要还是各个命令的实现,总的来说,这部分基本不用修改,都是通过增减宏定义来选择加入编译的部分。

drivers,net:都是设备的驱动程序,因为u-boot的功能特点--引导+下载,所以必须的驱动并不需要太多。个人觉得只要有存储设备(flash)、串口设备、以及一个能与主机进行通信的接口设备(网卡、usb口等)就足够了。

fs:并不是系统启动后文件系统的支持(在操作系统中实现),而是u-boot自身的文件系统,个人认为作用不是太大,当然也可以把内核镜像作为文件存储在u-boot文件系统中,然后每次启动内核就直接从文件系统中读取,更改内核时就只用覆盖内核文件就可,不用烧写flash,方便调试。

lib_*:各种库,基本上看文件名就能看出功能。。。不用多说了

相关内容