• 向NXP官网Linux内核添加ALPHA开发板


    一.  Linux内核移植

     经过之前文章的学习与验证,NXP官方提供的 Linux内核可以启动开发板。所以,我们就参考I.MX6ULL EVK 开发板的设置, Linux 内核中添加正点原子的 I.MX6U-ALPHA 开发板。

    之前文章验证 NXP官方的Linux 内核是否可启动,地址如下:

    NXP官方Linux内核编译-CSDN博客

    NXP官方Linux内核启动测试-CSDN博客

    二.    Linux 中添加ALPHA开发板

    这里所用的Linux内核源码:NXP官方的Linux源码。目录如下:

    /【正点原子】阿尔法Linux开发板(A盘)-基础资料-2022 /【正点原子】阿尔法Linux开发板(A盘)-基础资料 / 例程源码 / NXP官方原版Uboot和Linux

    在 Linux 中添加自己的开发板,大体进行三个部分内容。如下:

    (1)  添加开发板默认配置文件

    (2) 添加开发板对应的设备树文件

    (3) 更改设备树所在目录下的 Makefile,具体是添加编译 开发板对应的设备树文件。

    (4) NAND驱动使能

     

    1.  添加开发板默认配置文件

    arch/arm/configs 目 录 下有三个 ARM-V7架构的配置文件:

    1. imx_v7_defconfig
    2. imx_v7_mfg_defconfig
    以上的两个配置文件的区别:imx_v7_mfg_defconfig与 imx_v7_defconfig文件相比而言,imx_v7_mfg_deconfig配置文件编译出来的 kernel镜像,可以通过 mfg工具进行烧录。
    注意:mfg工具:NXP公司提供的系统烧录工具。
    所以,这里我使用 imx_v7_mfg_defconfig配置文件。
    将 arch/arm/configs 目 录 下 的 imx_v7_mfg_defconfig 重 新 复 制 一 份 , 命 名 为imx_v7_alientek_nand_defconfig,命令如下:

    wangtian@wangtian-virtual-machine:~/zhengdian_Linux/linux/kernel/linux-imx-rel_imx_4.1.15_2.1.0_ga$ cd ./arch/arm/configs/

    wangtian@wangtian-virtual-machine:~/zhengdian_Linux/linux/kernel/linux-imx-rel_imx_4.1.15_2.1.0_ga/arch/arm/configs$ cp imx_v7_mfg_defconfig imx_v7_alientek_nand_defconfig

    以后 imx_v7_alientek_nand_defconfig 就是正点原子的 Nand-Flash版开发板默认配置文件了。

    2.  添加开发板对应的设备树文件

    设备树文件所在目录: Kernel内核根目录下 arch/arm/boot/dts/
    .dts文件 是设备树源码文件,编译 Linux 时会将其编译为 .dtb 文件
    NXP官方的 IMX6ULL的 NAND-Flash版开发板,所对应的设备树文件是 imx6ull-14x14-evk-gpmi-weim.dts(因为imx6ull芯片连接 Nand-Flash的这个外设叫 gpmi)。
    添加适合正点原子 EMMC 版开发板的设备树文件,进入目录 arch/arm/boot/dts 中,复制一 份 imx6ull-14x14-evk-gpmi-weim.dts ,然后将其重命名为 imx6ull-alientek-nand.dts ,命令如下:

    wangtian@wangtian-virtual-machine:~/zhengdian_Linux/linux/kernel/linux-imx-rel_imx_4.1.15_2.1.0_ga$ cd ./arch/arm/boot/dts

    wangtian@wangtian-virtual-machine:~/zhengdian_Linux/linux/kernel/linux-imx-rel_imx_4.1.15_2.1.0_ga/arch/arm/boot/dts$ cp imx6ull-14x14-evk-gpmi-weim.dts imx6ull-alientek-nand.dts -f

    3.  更改设备树所在目录下的 Makefile

    imx6ull-alientek-nand.dts 创 建 好 以 后 我 们 还 需 要 修 改 文 件 arch/arm/boot/dts/Makefile , 找 到 dtb-$(CONFIG_SOC_IMX6ULL) 配置项,在此配置项中加入 “ imx6ull-alientek-nand.dtb ” ,如下 所示:

    注意:在添加 "imx6ull-alientek-nand.dtb \"这一行时,"\" 后面的不能有空格符,否则会编译出错。

    4.  更改 Linux源码根目录下的 运行脚本文件 imx6ull_evk_nand.sh。

    具体更改脚本文件 imx6ull_evk_nand.sh 中的配置文件名 imx_v7_alientek_nand_defconfig,更改如下:

    1. #!/bin/sh
    2. make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- distclean
    3. make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- imx_v7_alientek_nand_defconfig
    4. make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig
    5. make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- all

    5.  NAND 驱动使能

    恩智浦官方的 IMX6ULL-EVK开发板的Linux内核源码,默认情况下,使能了 QSPI驱动。而 QSPI占用了 Nand-Flash 的 IO。因为 QSPI与 NAND公用了 IO接口。

    因此,需要配置 Linux内核关闭 QSPI驱动,使能 NAND驱动。

    (1)  关闭 QSPI驱动。

    运行编译脚本 imx6ull_evk_nand.sh ,会进入 Linux配置界面,打开如下配置项:

    1. Device Drivers
    2. -> Memory Technology Device (MTD) support (MTD [=y])
    3. -> SPI-NOR device support ---- 取消选中

    关闭 QSPI 驱动。具体操作如下:

    (2)  配置使能 NAND驱动。

    输入"make menuconfig" 命令打开配置界面打开如下配置项:

    1. Device Drivers
    2. -> Memory Technology Device (MTD) support (MTD [=y])
    3. -> Swap on MTD device support 选中

    打开 NAND-Flash驱动。NAND-Flash驱动配置项如下:

    (3)  做完以上更改,保存配置。选中如下 "Yes"进行保存。操作如下:

    (4)  进入如下配置项,确认有关 NAND-Flash的两项是否配置。

    1. Device Drivers
    2. -> Memory Technology Device (MTD) support (MTD [=y])
    3. -> NAND Device Support
    4. -> GPMI NAND Flash Controller driver
    5. -> MXC NAND support

    如下配置是否选中:

    最后,进入编译 kernel与设备树文件阶段。如果编译成功,这里会得到两个文件:

    ①  Linux 内核镜像文件: ./arm/arm/boot/zImage 。

    ②  ALPHA开发板对应的设备树文件: ./arch/arm/boot/dts/imx6ull-alientek-nand.dtb 。

  • 相关阅读:
    在线电子表格spreadjs
    C++线程操作
    Redis从入门到精通(二)- 入门篇
    2022-11-17 更高效的Cascades优化器 - Columbia Query Optimizer
    go defer简介
    springmvc复习(第一天)(黑马版)
    jvs-rules(规则引擎)和jvs智能bi(自助式数据分析)9.22更新内容
    《Solidity 简易速速上手小册》第7章:智能合约的部署与交互(2024 最新版)
    coding_v3
    el-select 搜索无选项时 请求接口添加输入的值
  • 原文地址:https://blog.csdn.net/wojiaxiaohuang2014/article/details/133307349