• u-boot


    1.解压好u-boot后,打开uboot根目录的README文件,在software configuration 里有写明,如果要针对某个单板进行配置,需要执行:make <board_name>_config

    其中uboot支持的board_name可以在根目录的include/configs/下查看。

    2.makefile

    2.1 uboot version确定 (Makefile 24-29行) U_BOOT_VERSION “1.3.4xyz”
    1)uboot版本号分为4个级别:
    VERSION : 主板号
    PATCHLEVEL : 次版本号
    SUBLEVEL : 再次版本号
    EXTRAVERSION : 另外附加的版本信息
    这4个用 . 分隔开共同构成了最终的版本号。
    2)makefile中版本号最终生成一个变量U_BOOT_VERSION,这个变量记录了Makefile中配置的版本号。 Include/version_autogenerated.h文件是编译过程中自动生成的一个文件,所有源目录中没有,但是编译过后的uboot中就有了。它里面的内容是一个宏定义,宏定义的值就是我们在Makefile中配置的uboot版本号。
    3)验证方法:自己修改主makefile中几个version有关的变量,然后编译uboot,然后烧录到SD卡中,从SD卡中启动,然后去看启动时uboot打印出来的版本信息,看看变化是不是和自己的分析一致。

    3.查看交叉编译链版本:arm-linux-gcc -v

    4.查看电脑主机cpu版本号:uname -m

    5.Autoconfig.mk是配置过程中产生的,用来指导整个uboot的编译过程

    配置过程需要的原材料在include/configs/xxxxx.h文件中,.h文件中有许多宏定义即CONFIG_,这些宏定义是我们移植uboot的关键所在

    TQ210.h文件会被用来生成一个autoconfig.mk文件,这个文件会被主Makefile引入,指导整个编译过程,这里面的这些宏定义会影响我们对uboot中大部分.c文件中一些条件编译的选择。从而实现最终的可移植性。

    6.链接器脚本为u-boot-nand.lds则说明已经定义了CONFIG_NAND_U_BOOT,若为u-boot.lds则说明没有定义

    7.mkconfig文件

    [ "${BOARD_NAME}" ] || BOARD_NAME="$1"

    [ $# -lt 4 ] && exit 1    //
    [ $# -gt 6 ] && exit 1

    uboot配置过程详解1
    1. Mkconfig脚本的6个参数。TQ210_config : unconfig
    $(MKCONFIG) $(@:_config=) arm s5pv210 TQ210 EmbedSky s5pv210
    TQ210_config里面的_config部分用空替换,得到:TQ210,这就是第一个参数,所以:
    $1: TQ210
    $2: arm
    $3: s5pv210
    $4: TQ210
    $5: EmbedSky
    $6: s5pv210
    所以$# = 6
    3. 第23行,其实就是看BOARD_NAME变量是否有值,没有就赋值。结果BOARD_NAME=TQ210
    4. 第25行,如果$#小于4,则 exit 1 (mkconfig脚本返回1)。
    5. 第26行,如果$#大于6,则 exit 1
    所以:mkconfig脚本传参只能是4,5,6.其他值都不行。

    8.移植时如需更改时钟,则只需在tq210.h修改即可

  • 相关阅读:
    选修课作业专栏
    js字符串和数组方法总结
    转Y-slow23原则(雅虎)
    前端优化总结和技巧(原创)
    阿里dom操作题
    基本的dom操作方法
    html5中的postMessage解决跨域问题
    mark一篇文章--用nodejs搭建一个本地反向代理环境
    html5语义化标签总结二
    转html5语义化标签总结一
  • 原文地址:https://www.cnblogs.com/moaiwa/p/8207429.html
Copyright © 2020-2023  润新知