imx6ull之linux内核移植

imx6ull开发环境之系统安装请参考:https://www.cnblogs.com/gxlblogs/p/14382547.html

imx6ull交叉编译工具链安装 请参数:https://www.cnblogs.com/gxlblogs/p/14382831.html

 

开发板:飞凌 OKMX6ULL-S + 7寸电阻屏

交叉编译工具链:gcc-linaro-6.2.1-2016.11-x86_64_arm-linux-gnueabihf

linux内核:linux-imx-rel_imx_4.1.15_2.1.0_ga.tar.bz2

 

一、内核编译

  1、将内核通过ftp上传至linux虚拟机,解压:tar -jxvf linux-imx-rel_imx_4.1.15_2.1.0_ga.tar.bz2

  2、修改Makefile

    cd linux-imx-rel_imx_4.1.15_2.1.0_ga/

    vi Makefile

    跳至252行(252G),复制2行(2yy),在这两行下面粘贴(p),去掉注释#,修改为:

      ARCH ?= arm
      CROSS_COMPILE ?= arm-linux-gnueabihf-

    保存退出

    imx6ull之linux内核移植

  3、试编译

    make distclean

    make imx_v7_mfg_defconfig

    make

    然后我们可以得到zImage和dtb文件,分别在./arch/arm/boot/zImage和./arch/arm/boot/dts/imx6ull-14x14-evk.dtb,这两个文件是我们需要的文件

    imx6ull之linux内核移植

 

  4、移植说明

    这里生成的zImage和dtb是NXP官方evk开发板所适应的,而对于飞凌开发板,dtb文件不够适应,需要修改,而zImage文件经过测试是适应的,后面如果缺少驱动时可通过make menuconfig配置即可;

    这里提一下,为什么不直接用飞凌提供的内核,而非要从官方的移植,是因为使用飞凌提供的内核时,在移植tslib时,运行ts_calibrate时一直挂,怀疑与framebuffer有关,尝试了很多,ts_calibrate也不正常,故决定更换内核,结果问题得到解决;

 

     但飞凌内核中的设备树文件还是和开发板适配的,故可参考其设备树文件进行修改官方内核的设备树;

  5、创建自己的defconfig和dts文件

    cd ./arch/arm/configs/

    cp imx_v7_mfg_defconfig imx6ull_defconfig

    cd ./arch/arm/boot/dts

    cp imx6ull-14x14-evk.dts imx6ull-S-emmc-800x480cr7.dts

    vi ./arch/arm/boot/dts/Makefile 找到dtb-$(CONFIG_SOC_IMX6ULL)在后面追加imx6ull-S-emmc-800x480cr7.dtb

    imx6ull之linux内核移植

    参考飞凌的dts/imx6ull.dtsi,dts/imx6ull-14x14-evk.dts以及dts/imx6ull-S-emmc-800x480cr7.dts修改官方内核的dts/imx6ull.dtsi以及我们刚才复制的dts/imx6ull-S-emmc-800x480cr7.dts文件

    飞凌在dtsi中有少量修改,在dts/imx6ull-14x14-evk.dts中有大量修改,而在dts/imx6ull-S-emmc-800x480cr7.dts中则是引用了dts/imx6ull-14x14-evk.dts文件,而我们直接使用文件对比工具对比,把差异都合并到dts/imx6ull-S-emmc-800x480cr7.dts即可

  6、再次编译

    make distclean

    make imx6ull_defconfig

    make

    好,我们把生成的zImage和dtb文件复制到~/tftp中

    cp arch/arm/boot/zImage ~/tftp/

    cp arch/arm/boot/dts/imx6ull-S-emmc-800x480cr7.dtb ~/tftp/

二、内核测试

  在uboot中配置好nfs启动(这里不详细介绍),将文件系统放于~/rootfs中(这里不详细介绍),给开发板上电,会看到加载zImage和dtb,并且也可以正常挂载nfs,即内核移植成功。

  imx6ull之linux内核移植

 

   imx6ull之linux内核移植

上一篇:数据结构与算法【Python实现】(九)动态规划


下一篇:pandas.cut