• IMX6ULL移植篇-编译单个指定的设备树文件


    一.  设备树文件

    如果在 编译 zImage成功后,同时生成了 设备树文件就不用此操作。

    如何确定编译 zImage成功后,同时生成了设备树文件 ?

    Linux内核源码目录下 /arch/arm/boot/dts/目录下,是否存在对应开发板的 .dtb文件。

    如果在编译 Linux内核镜像文件(zImage)时,没有生成 设备树文件(.dtb文件)的情况下,可以单独编译出设备树文件。

    二.  单独编译设备树文件

    1.  Linux内核源码

    所使用的Linux内核源码包:

    阿尔法Linux开发板(A盘)-基础资料-2022 / 阿尔法Linux开发板(A盘)-基础资料 / 例程源码 / 开发板教程对应的uboot和linux源码/linux-imx-rel_imx_4.1.15_2.1.0_ga_alientek.tar.bz2

    设备树文件:

    设备树文件是以 .dtb为后缀的文件。

    设备树文件存放的路径:Linux内核源码目录下 /arch/arm/boot/dts/

    正点原子自己写的设备树文件

    Linux内核源码目录下 /arch/arm/boot/dts/ 目录下,除了存在 .dtb文件,还有一些  .dts文件。这里的 一堆 .dts文件是正点原子自己写的设备树文件。

    注意:.dtb 设备树文件是通过对 .dts文件编译而生成的。

    2.  单独编译设备树文件

    首先,将以上目录中的 Linux内核源码包拷贝到虚拟机 ubuntu上,并解压缩。这里我的 ubuntu系统下解压后的 Linux内核源码包如下:

    1. wangtian@wangtian-virtual-machine:~/zhengdian_Linux/linux/kernel$ ls
    2. linux-imx-rel_imx_4.1.15_2.1.0_ga_alientek


    其次,更改设备树文件目录下的 Makefile文件确认 Makefile文件中是否加入待编译的设备树配置文件。

    进入Linux内核源码的 /arch/arm/boot/dts/ 目录下,确认设备树文件配置文件是哪一个?

    因为太多 imx6ull版本的,所以,这里只列出了部分设备树配置文件:

    1. wangtian:~/zhengdian_Linux/linux/kernel/linux-imx-rel_imx_4.1.15_2.1.0_ga_alientek/arch/arm/boot/dts$ find imx6ull*.dts
    2. imx6ull-14x14-ddr3-arm2-qspi-all.dts
    3. imx6ull-14x14-evk.dts
    4. imx6ull-14x14-evk-emmc.dts
    5. imx6ull-9x9-evk-ldo.dts
    6. imx6ull-alientek-emmc.dts
    7. imx6ull-alientek-nand.dts

    可以看出,这里可以猜测 Nand-Flash版本开发板对应的设备树配置文件应该对应是上面的

    imx6ull-alientek-nand.dts

    .dtb设备树文件是通过对应的 .dts文件生成的。所以,需要在 /arch/arm/boot/dts/ 目录下的 Makefile文件中加入 imx6ull-alientek-nand.dts。

    打开 Makefile文件,Makefile文件中涉及 imx6ull的内容如下:

    可以看出,上图的箭头处与 imx6ull-alientek-nand.dts文件名类似,就是我们需要添加的 .dtb文件,这里不需要添加。

    其次,修改 Linux内核源码根目录下的 Makefile文件确认 ARCHCROSS_COMPILE的参数值。

    进入Linux内核源码根目录下,更改 Makefile文件,Makefile 涉及 ARCHCROSS_COMPILE的部分如下:

    1. # Note: Some architectures assign CROSS_COMPILE in their arch/*/Makefile
    2. ARCH ?= arm
    3. CROSS_COMPILE ?= arm-linux-gnueabihf-
    4. # Architecture as present in compile.h
    5. UTS_MACHINE := $(ARCH)
    6. SRCARCH := $(ARCH)

    可以看出,顶层 Makefile文件中 ARCH CROSS_COMPILE两个参数已经设置好,无需设置。

    最后,编译 Nand-Flash版本的设备树文件。

    进入 Linux内核根目录下,输入如下:

    1. wangtian:~/zhengdian_Linux/linux/kernel/linux-imx-rel_imx_4.1.15_2.1.0_ga_alientek$ make imx6ull-alientek-nand.dtb
    2. DTC arch/arm/boot/dts/imx6ull-alientek-nand.dtb

    最后查看 /arch/arm/boot/dts目录下,是否有生成  imx6ull-alientek-nand.dtb文件:

    1. wangtian@wangtian-virtual-machine:~/zhengdian_Linux/linux/kernel/linux-imx-rel_imx_4.1.15_2.1.0_ga_alientek/arch/arm/boot/dts$ ls imx6ull-alientek*.dtb -l
    2. -rw-rw-r-- 1 wangtian wangtian 39116 919 15:13 imx6ull-alientek-emmc.dtb
    3. -rw-rw-r-- 1 wangtian wangtian 39666 920 01:25 imx6ull-alientek-nand.dtb

  • 相关阅读:
    如果项目上线出现bug,测试人员该怎么办?
    北京/上海/广州/深圳DAMA-CDGA/CDGP数据治理认近期开班
    【23真题】科目代号每年一改?换汤不换药!
    AI在商业逻辑应用中的革命性作用
    FPGA时序约束01——基本概念
    Linu基础-分区规划与使用
    S波与P波的定义(光波电矢量)(菲涅耳公式)
    Mrtrix3---FACT--确定性纤维束追踪
    Qt 线程串口
    JVM垃圾回收之JVM GC算法探究
  • 原文地址:https://blog.csdn.net/wojiaxiaohuang2014/article/details/133039299