uboot之uboot编译实践和内部目录介绍

                                               编译实践            

一、关于uboot的源码编译生成uboot.bin 

    1、我用的是朱有鹏老师的课程所以我有官方已经移植好的uboot源码所以我只是讲一下

        uboot编译的过程和结果。(这是源码解压包的名称    qt_x210v3_130807.tar.bz2)

    2、配置:

             (1)、uboot和linux kernel等复杂项目,都不能直接编译,都需要先配置才能编译。

             (2)、先进入uboot源码的根目录,然后在根目录下执行:make x210_sd_config。

             (3)、如果出现Configuring for x210_sd_board...那么配置成功。   

             

               配置成功。

    3、编译得到uboot.bin

                (1)、检查当前编译环境中有没有安装合适的arm-linux-gcc。我们装的是arm-2009q3,

                            因为这个是三星官方、九鼎官方开发uboot时使用的。

                (2)、检查当前目录下(uboot根目录)的Makefile中编译器的设置是否正确。在工程的

                            总Makefile中会设置交叉编译工具链的路径和名字,必须确保这个路径和名字和我

                            们自己装的一致,否则编译会出错。

                 (3)、确保了以上2点,即可进行编译。编译很简单,直接make即可。或者可以make -j4 

                            (多线程编译,主机如果是多核心电脑,可以尝试多线程编译,会快一些)。

                      可以在倒数第二列的最面看见我们编译生成的uboot.bin。

                                         目录分析                               

一、目录的简介

        1、九鼎官方uboot和三星原版uboot对比

        2、不同版本的uboot或者同一版本不同人移植uboot,可能目录结构和文件内容都有所不同。

        3、九鼎在以三星的uboot为原材料进行移植时,把三星原版中很多不必要的文件夹都删除了。

            减小不必要的文件,可以减小整体的文件数量,便于工作。

二、关于文件内容简介

        1、.gitignore。git工具的文件,git是一个版本管理工具(类似的还有个svn),这个文件和git有关,

            和uboot本身无关的,不用去管。

        2、arm_config.mk。后缀是.mk,是一个Makefile文件,将来在某个Makefile中会去调用它。

        3、三个Changlog文件,修改记录文件,改文件记录了这个uboot项目的版本变迁以及每个版本。正

            式的项目都有这些记录的。可以直接忽略,主要是给维护人员用的。

        4、config.mk。和arm_config.mk差不多性质。

        5、COPYING。版权声明,uboot本身是GPL许可证。

        6、CREDITS。鸣谢,里面记录了对uboot有贡献的人,感谢目录。

        7、image_split。一个脚本,看说明是用来分割uboot.bin到BL1的,暂时用不到。

        8、MAINTAINERS。维护者,就是当前在参与维护uboot源码的社区工作者。

        9、MAKEALL。一个脚本,应该是帮助编译uboot的。

        10、Makefile。这个很重要,是uboot源代码的主Makefile,将来整个uboot被编译时就是用Makefile

            管理编译的。

        11、mk。快速编译的脚本,其实就是先清理然后配置然后编译而已。

        12、mkconfig。这个很重要,是uboot配置阶段的主要配置脚本。uboot的可移植性很大程度就是靠

            这个配置脚本在维护的。

        13、mkmovi。暂时不去管他,一个脚本,和iNand/SD卡启动有关。

        14、README。所有的软件都有README,一般拿到一个东西要先读README,这个东西其实就是

             个简单的使用说明书。

        15、rules.mk。这个文件是我们uboot的Makefile使用的规则,本身非常重要,但是我们不去分析他,

              不去看他。

        16、api.     硬件无关的功能函数的API。uboot移植时基本不用管,这些函数是uboot本身使用的。

        17、api_examples.     API相关的测试实例代码。

        18、board。board是板的意思,板就是开发板。board文件夹下每一个文件就代表uboot曾被移植

               到。

        20、CPU。这个目录是SoC相关的,里面存放的代码都是SoC相关初始化和控制代码。每个子文件

               都是一个系列的SoC的初始化。

        21、disk。和磁盘相关的。

        22、doc。文档目录,里面存放了很多uboot相关文档。这些文档可以帮助我们理解uboot代码。

        23、drivers。顾名思义,驱动。这里放的就是从linux源代码中抠出来的原封不动的linux设备驱动,

            主要是开发板上必须用到的一些驱动。主要是开发板上必须用到的一些驱动。uboot中的驱动

            是linux驱动的一部分。

        24、example。示例代码,没用过。

        25、fs。filesystem,文件系统。这个也是从linux源代码中移植过来的,用来管理Flash等资源。

        26、以lib_开头的一些文件,(典型的lib_arm和lib_generic)架构相关的库文件。譬如lib_arm里面

               就是arm架构使用的一些库文件。lib_generic里是所有架构通用的库文件。这类文件夹中的内容

                移植时基本不用管。

        27、libfdt。设备树有关的。linux内核在3.4左右的版本的时候更改了启动传参的机制,改用设备树来

                进行启动传参,进行硬件信息的描述了。

        28、nand_spl。nand相关的,不讲。

        29、net。网络相关的代码,譬如uboot中的tftp nfs ping命令 都是在这里实现的。

        30、onenand开头的,是onenand相关的代码,是三星加的,标准uboot中应该是没有的。

        31、post。没关注过,不知道干嘛的。

        32、sd_fusing。这里面代码实现了烧录uboot镜像到SD卡的代码。后面要仔细研究的。

        33、tools。里面是一些工具类的代码。譬如mkimage。

        总结:以上这些文件中,比较重要的是mkconfig和Makefile。

 欢迎各位指出不足之处          






猜你喜欢

转载自blog.csdn.net/qq_41003024/article/details/80355954