Skip to content

# 1.1. Build系统建立一个board支持

目前J6X编译系统使用source envsetup.sh lunch进行编译环境初始化。如果新单板需要增加其单独的编译设备，可以参照已有设备，然后对部分点进行适配修改。

目前已有设备如下，其中common下为通用的配置文件，j6下为该硬件类型特性配置文件：

    .
    └── device
            ├── common
            └── horizon
                    └── j6
                    ├── defconfig
                    ├── extlinux
                    ├── kconfigs
                    └── partition_config_files

以evm为例，如下：

1.新增device/horizon/j6/defconfig/j6e_evm_defconfig，里面包含很多编译宏的定义，部分内容如下：

    #
    # project information configuration
    #
    export HORIZION=y
    export J6E=y
    export HR_TARGET_VENDOR="horizon"
    export HR_TARGET_PROJECT="j6e"
    export HR_CHIP_DIR="j6"
    export HR_BASE_BOARD_TYPE="evm"

2.修改device/horizon/j6/extlinux/j6e_extlinux extlinux镜像加载配置文件，文件头和新增的镜像加载选项如下：

        ## /boot/extlinux/extlinux.conf
        ##

        default CHIP-BASE-kernel   #extlinux文件头
        menu title U-Boot menu
        prompt 0
        timeout 50

        label j6e-evm-kernel   # 新增加载选项
            kernel /KERNEL_IMAGE
            fdt /hobot/hobot-j6e-evm.dtb
            initrd /UBUNTU_RAMDISK

    其中extlinux文件头中的CHIP和BASE分别由device/horizon/j6/defconfig/j6e_evm_defconfig配置文件中的HR_TARGET_PROJECT和HR_BASE_BOARD_TYPE决定，也可以增加HR_SUB_BOARD_TYPE来修饰BASE

3.device/horizon/j6/kconfigs/目录下存放的是Kconfig信息，是make menuconfig时读取的信息，和kernel的kconfig类似，动态配置用，相对应的device/horizon/j6/defconfig/中的是静态的默认配置。如下：

    kconfigs/
    ├── board_kconfig
    ├── out_dir_Kconfig
    ├── package_Kconfig
    ├── partition_Kconfig
    ├── project_Kconfig
    ├── sample_Kconfig
    ├── src_dir_Kconfig
    ├── out_dir_Kconfig
    └── toolchain_Kconfig

4.修改设备对应的*gpt.conf，位于$TOPDIR/device/horizon/j6/partition_config_files/目录下，并在json内通过key去查找在sub_config下的具体配置，决定分区表分配，参考 分区表的修改

5.修改设备对应的*fstab，就是$TOPDIR/hbre/boot-utils/hb-init-scripts/etc/hb-fstab文件，文件系统配置表，系统启动时根据fstab挂载文件系统