• 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

  • 相关阅读:
    pytest教程-31-mock数据插件-pytest-mock
    SpringCloud-zuul
    蓝桥等考Python组别十八级003
    【2024.6.22】今日科技时事:科技前沿大事件
    JavaScript代码执行
    shardingsphere源码打包镜像+k8s安装proxy、ui、zookeeper并配置分库
    java设计模式之观察者模式
    【面试普通人VS高手系列】Spring Boot的约定优于配置,你的理解是什么?
    46-pytest-分布式插件pytest-xdist使用
    Java-抽象类、抽象方法
  • 原文地址:https://blog.csdn.net/wojiaxiaohuang2014/article/details/133039299