• u-boot 移植(二)创建新平台的板级支持


    u-boot 移植(二)创建新平台的板级支持

    soc:s3c2440
    board:jz2440
    ubootu-boot-2016.11
    toolchaingcc-linaro-7.4.1-2019.02-x86_64_arm-linux-gnueabi

    如何添加新的板级支持?

    因为u-boot-2016.11默认支持smdk2410的平台,但是没有对smdk2440的支持,所以在这里我打算在源码中添加相应的文件;实践之后,总结了一下大概需要修改这几个地方,简单列举如下:

    1. 复制board/samsung/smdk2410路径下的所有文件,保存在board/samsung/smdk2440/中,然后需要对复制的文件做相应的修改;
    2. 修改相应的Kconfig,使得make menuconfig可以支持smdk2440
    3. 复制include/configs/下的smdk2410.h,创建文件smdk2440.h
    4. 修改board/samsung/smdk2440/MAINTAINERS文件;
    5. 修改scripts/config_whitelist.txt文件,添加相应的CONFIG_选项,防止编译报错;

    步骤

    1.创建板级支持

    我们先复制smdk2410的所有文件到smdk2440下;

    cd board/samsung/ 
    cp  -rf smdk2410 smdk2440
    

    smdk2440路径下的smdk2410.c文件重命名为smdk2440.c
    然后修改该路径下的KconfigMakefile
    Kconfig内容修改如下:

    if TARGET_SMDK2440
    config SYS_BOARD
            default "smdk2440"
    config SYS_VENDOR
            default "samsung"
    config SYS_SOC
            default "s3c24x0"
    config SYS_CONFIG_NAME
            default "smdk2440"
    endif
    

    Makefiel修改后内容如下:

    #
    # (C) Copyright 2000-2006
    # Wolfgang Denk, DENX Software Engineering, wd@denx.de.
    #
    # SPDX-License-Identifier:      GPL-2.0+
    #
    obj-y   := smdk2440.o
    obj-y   += lowlevel_init.o                      
    

    2.修改Kconfig

    修改/arch/arm/Kconfig文件;具体如下所示;

    --- a/arch/arm/Kconfig
    +++ b/arch/arm/Kconfig
    @@ -145,6 +145,10 @@ config TARGET_SMDK2410
            bool "Support smdk2410"
            select CPU_ARM920T
     
    +config TARGET_SMDK2440
    +       bool "Support smdk2440"
    +       select CPU_ARM920T
    +
     config TARGET_ASPENITE
            bool "Support aspenite"
            select CPU_ARM926EJS
    @@ -992,6 +996,7 @@ source "board/phytec/pcm051/Kconfig"
     source "board/phytec/pcm052/Kconfig"
     source "board/ppcag/bg0900/Kconfig"
     source "board/samsung/smdk2410/Kconfig"
    +source "board/samsung/smdk2440/Kconfig"
     source "board/sandisk/sansa_fuze_plus/Kconfig"
     source "board/schulercontrol/sc_sps_1/Kconfig"
     source "board/siemens/draco/Kconfig"
    

    修改完成之后,执行make menuconfig可以在配置界面看到smdk2440的支持选项;具体如下图所示;
    smdk2440的界面支持

    3.修改smdk2440.h

    复制include/configs/下的smdk2410.h,创建文件smdk2440.h

    cd include/configs/
    cp smdk2410.h smdk2440.h
    vi smdk2440.h
    

    修改smdk2440.h,修改原来几个2410的宏定义为2440,具体内容如下;

    #ifndef __CONFIG_H
    #define __CONFIG_H
    /*
     * High Level Configuration Options
     * (easy to change)
     */
    #define CONFIG_S3C24X0          /* This is a SAMSUNG S3C24x0-type SoC */
    #define CONFIG_S3C2440          /* specifically a SAMSUNG S3C2440 SoC */
    #define CONFIG_SMDK2440         /* on a SAMSUNG SMDK2440 Board */
    

    4.修改MAINTAINERS

    再次进入板级路径下board/samsung/smdk2440/,修改MAINTAINERS文件;

    SMDK2440 BOARD
    M:      David Müller <d.mueller@elsoft.ch>
    S:      Maintained
    F:      board/samsung/smdk2440/
    F:      include/configs/smdk2440.h
    F:      configs/smdk2440_defconfig
    

    以前u-boot版本添加新的板级支持需要在boards.cfg文件中增加新的板级信息,当前版本已经通过修改MAINTAINERS文件来支持这样的操作,在源码根路径一下也可以找到这个文件,会介绍每个语法的含义。

    5.修改config_whitelist.txt

    最后还需要修改config_whitelist.txt文件,因为在smdk2440.h中添加了CONFIG_SMDK2440,所以,要把这个宏定义添加到config_whitelist.txt文件中,这样最终编译的时候不会报错;

    make xxxx_defconfig 都做了哪些事情?

    按照原来系统中我们执行了make smdk2440_defconfig之后,会自动生成一个头文件include/config.h,打开看一下会发现,其中包含了头文件configs/smdk2440.h,所以smdk2440.h需要我们手动复制过来;

    * Automatically generated - do not edit */
    #define CONFIG_BOARDDIR board/samsung/smdk2440
    #include <config_defaults.h>
    #include <config_uncmd_spl.h>
    #include <configs/smdk2440.h>
    #include <asm/config.h>
    #include <config_fallbacks.h>
    

    最终执行脚本mk.sh,进行编译,具体在上一篇中有提到;

    #!/bin/bash
    TOOLCHAIN=/opt/gcc-linaro-7.4.1-2019.02-x86_64_arm-linux-gnueabi/bin
    export ARCH=arm
    export PATH=$TOOLCHAIN:$PATH
    export CROSS_COMPILE=arm-linux-gnueabi-
    make smdk2440_defconfig
    make -j4
    

    安静地等待编译结束,至此,已经添加smdk2440的板级支持文件成功;

    参考

    http://xillybus.com/tutorials/uboot-hacking-howto-1

  • 相关阅读:
    动态规划精讲(一)53. 最大子序和
    ACM计算几何总结
    三角形外心的坐标公式
    三角形外心的坐标公式
    高精度模板
    位运算模板
    同余定理与逆元
    扩展欧几里得算法求二元一次方程
    1004. 最大连续1的个数 III
    剑指 Offer 04. 二维数组中的查找
  • 原文地址:https://www.cnblogs.com/unclemac/p/12783381.html
Copyright © 2020-2023  润新知