查看: 4148|回复: 1

[分享] 【Linux系统移植】I.MX6ULL开发板 kernel内核 编译与烧录

[复制链接]
  • TA的每日心情
    开心
    2024-3-26 15:16
  • 签到天数: 266 天

    [LV.8]以坛为家I

    3298

    主题

    6545

    帖子

    0

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    32004
    最后登录
    2024-4-9
    发表于 2020-5-19 10:10:43 | 显示全部楼层 |阅读模式
    【Linux系统移植】NXP 官方开发板 kernel内核 编译与烧录

    1、下载

    NXP 官方 I.MX6ULL EVK 开发板的kernel :linux-imx-rel_imx_4.1.15_2.1.0_ga.tar.bz2

    2、使用 FileZilla Client 将 uboot拷贝到ubuntu

    3、解压

    tar -xjvf linux-imx-rel_imx_4.1.15_2.1.0_ga.tar.bz2
    解压出来的文件:
    1.png
    4、安装库
    (1)安装 lzop 库,否则内核编译会失败!
    1. sudo apt-get install lzop
    复制代码

    (2)uboot 或 Linux 内核可以通过输入“make menuconfig”来打开图形化配置界面,menuconfig 是一套图形化的配置工具,需要 ncurses 库支持,使用以下命令安装 ncurses 库:
    1. <blockquote>sudo apt-get install build-essential
    复制代码


    5、编译kernel

    (1)新建mx6ull_iot_emmc.sh 的 shell 脚本文件
    1. vim mx6ull_iot_emmc.sh
    复制代码

    (2)写入以下内容。shell 脚本要求第一行必须是“#!/bin/bash”或者“#!/bin/sh”。

    1. <blockquote>#!/bin/sh
    复制代码

    (2)给脚本文件可执行权限
    1. chmod 777 mx6ull_iot_emmc.sh
    复制代码
    (3)执行脚本文件
    1. ./mx6ull_iot_emmc.sh
    复制代码
    (4)编译过程中弹出图形配置界面,按两下 ESC 键可退出
    2.png
    (5)编译成功

    1> arch/arm/boot 目录下生成 zImage 文件,即 Linux 镜像文件。
    2> arch/arm/boo/dts 下生成很多.dtb 文件,即设备树文件
    3.png
    (6)可以修改顶层Makefile,使用以下命令编译:

    “make distclean”:清理工程

    “make imx_v7_defconfig”:配置工程

    “make menuconfig”:配置图形界面

    “make -j12”:编译

    如图:
    4.png
    6、烧录并启动kernel

    (1)开发板终端设置uboot 中环境变量 bootargs

    1. <blockquote>setenv bootargs 'console=ttymxc0,115200 root=/dev/mmcblk1p2 rootwait rw'
    复制代码
    5.png
    (2)将 zImage 和 imx6ull-14x14-evk.dtb 复制到 Ubuntu 中的 tftp 目录下
    1. <blockquote>cp arch/arm/boot/zImage /home/pjw/linux/tftpboot/
    复制代码
    (3)开发板终端使用以下命令下载启动内核
    1. <blockquote>tftp 80800000 zImage
    复制代码
    (4)如图,内核启动成功:
    6.png
    7.png
    (5)如果没有烧录文件系统,会提示以下错误:


    Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)


    即提示内核崩溃,因为 VFS(虚拟文件系统)不能挂载根文件系统,因为根文件系统目录不存在。即使根文件系统目录存在,如果根文件系统目录里面是空的依旧会提示内核崩溃。这个就是根文件系统缺失导致的内核崩溃,但是内核是启动了的,只是根文件系统不存在而已。

    之前boot环境变量设置   console=ttymxc0,115200 root=/dev/mmcblk1p2 rootwait rw

    console 设置 linux 终端,串口 1 的设备文件是/dev/ttymxc0
    115200 设置串口的波特率
    root=/dev/mmcblk1p2 根文件系统存放在 mmcblk1 设备的分区 2 ,即EMMC 的分区 2 。
    rootwait 表示等待 mmc 设备初始化完成以后再挂载,否则的话 mmc 设备还没初始化完成就挂载根文件系统会出错的。
    rw 表示根文件系统是可以读写的,不加 rw 的话可能无法在根文件系统中进行写操作,只能进行读操作。

    编译过程遇到的错误问题解决:
    错误一:

    1. gcc: error: unrecognized argument in option ‘-mabi=aapcs-linux’
    2. gcc: note: valid arguments to ‘-mabi=’ are: ms sysv
    3. gcc: error: unrecognized command line option ‘-mlittle-endian’
    4. gcc: error: unrecognized command line option ‘-mno-thumb-interwork’
    5. gcc: error: unrecognized command line option ‘-mfpu=vfp’
    6. scripts/Makefile.build:258: recipe for target 'scripts/mod/empty.o' failed
    7. make[2]: *** [scripts/mod/empty.o] Error 1
    8. make[2]: *** 正在等待未完成的任务....
    复制代码
    11.png


    1. ***
    2. *** Can't find default configuration "arch/x86/configs/imx_v7_mfg_defconfig"!
    3. ***
    4. scripts/kconfig/Makefile:105: recipe for target 'imx_v7_mfg_defconfig' failed
    5. make[1]: *** [imx_v7_mfg_defconfig] Error 1
    6. Makefile:541: recipe for target 'imx_v7_mfg_defconfig' failed
    7. make: *** [imx_v7_mfg_defconfig] Error 2
    复制代码


    8.png


    解决:

    9.png
    使用了默认的 ubuntu自带的gcc编译 ,或者是修改Makefile时没有保存成功。


    错误二:


    1. HOSTCC  scripts/kconfig/mconf.o
    2. In file included from scripts/kconfig/mconf.c:23:0:
    3. scripts/kconfig/lxdialog/dialog.h:38:20: fatal error: curses.h: 没有那个文件或目录
    4. compilation terminated.
    5. scripts/Makefile.host:108: recipe for target 'scripts/kconfig/mconf.o' failed
    6. make[1]: *** [scripts/kconfig/mconf.o] Error 1
    7. Makefile:541: recipe for target 'menuconfig' failed
    8. make: *** [menuconfig] Error 2
    9. scripts/kconfig/conf  --silentoldconfig Kconfig
    复制代码
    10.png

    解决:



    uboot 或 Linux 内核可以通过输入“make menuconfig”来打开图形化配置界面,menuconfig 是一套图形化的配置工具,需要 ncurses 库支持,使用以下命令安装 ncurses 库:
    1. sudo apt-get install libncurses5-dev
    复制代码
    错误三:


    1. recipe for target ‘arch/arm/boot/compressed/piggy.lzo’ failed
    复制代码
    12.png
    解决:

    使用以下命令安装 lzop 库。
    1. sudo apt-get install lzop
    复制代码




    文章出处:CSDN


    签到签到
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2024-4-10 22:38
  • 签到天数: 1335 天

    [LV.10]以坛为家III

    88

    主题

    4292

    帖子

    12

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    9049
    最后登录
    2024-4-13
    发表于 2020-5-19 14:40:43 | 显示全部楼层
    这是采坑指南啊~~
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2024-4-20 20:59 , Processed in 0.124452 second(s), 21 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表