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
解压出来的文件:

4、安装
(1)安装 lzop 库,否则内核编译会失败!
sudo apt-get install lzop

(2)uboot 或 Linux 内核可以通过输入“make menuconfig”来打开图形化配置界面,menuconfig 是一套图形化的配置工具,需要 ncurses 库支持,使用以下命令安装 ncurses 库:

sudo apt-get install build-essential
sudo apt-get install libncurses5-dev

5、编译kernel

(1)新建mx6ull_iot_emmc.sh 的 shell 脚本文件

vim mx6ull_iot_emmc.sh

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

#!/bin/sh
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- distclean
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- imx_v7_mfg_defconfig
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- all -j12

(2)给脚本文件可执行权限

chmod 777 mx6ull_iot_emmc.sh

(3)执行脚本文件

./mx6ull_iot_emmc.sh

(4)编译过程中弹出图形配置界面,按两下 ESC 键可退出

(5)编译成功

1> arch/arm/boot 目录下生成 zImage 文件,即 Linux 镜像文件。
2> arch/arm/boo/dts 下生成很多.dtb 文件,即设备树文件

(6)可以修改顶层Makefile,使用以下命令编译:

“make distclean”:清理工程

“make imx_v7_defconfig”:配置工程

“make menuconfig”:配置图形界面

“make -j12”:编译

如图:

6、烧录并启动kernel

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

setenv bootargs 'console=ttymxc0,115200 root=/dev/mmcblk1p2 rootwait rw'
saveenv

(2)将 zImage 和 imx6ull-14x14-evk.dtb 复制到 Ubuntu 中的 tftp 目录下

cp arch/arm/boot/zImage /home/pjw/linux/tftpboot/
cp arch/arm/boot/dts/imx6ull-14x14-evk.dtb /home/pjw/linux/tftpboot/

(3)开发板终端使用以下命令下载启动内核

tftp 80800000 zImage
tftp 83000000 imx6ull-14x14-evk.dtb
bootz 80800000 – 83000000

(4)如图,内核启动成功:

(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 的话可能无法在根文件系统中进行写操作,只能进行读操作。

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

错误一:

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

***
*** Can't find default configuration "arch/x86/configs/imx_v7_mfg_defconfig"!
***
scripts/kconfig/Makefile:105: recipe for target 'imx_v7_mfg_defconfig' failed
make[1]: *** [imx_v7_mfg_defconfig] Error 1
Makefile:541: recipe for target 'imx_v7_mfg_defconfig' failed
make: *** [imx_v7_mfg_defconfig] Error 2

解决:

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

错误二:

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

解决:

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

错误三:

recipe for target ‘arch/arm/boot/compressed/piggy.lzo’ failed

解决:

使用以下命令安装 lzop 库。
sudo apt-get install lzop

【Linux系统移植】NXP 官方开发板 kernel内核 编译与烧录相关推荐

  1. i.MX6ULL系统移植 | 移植NXP官方linux4.1.15内核

    更新时间 更新内容 2021-11-15 初稿完成 2022-07-28 更新网络驱动移植部分 一.NXP官方linux内核 1. 下载 NXP官方linux仓库地址为:https://github. ...

  2. tiny4412安装Linux系统,FriendlyARM Tiny 4412开发板烧写Linux系统步骤

    一.制做用于安装系统的SD卡 通常Tiny4412出厂时已经安装好Android4.2.2系统,之后要从新烧写系统,则须要SD卡来烧写系统,不管是经过USB烧写,仍是SD卡脱机烧写,都须要使用SD卡启 ...

  3. 正点原子linux系统移植篇

    启动流程 emmc启动:从 EMMC 启动也就是将编译出来的 Linux 镜像文件 zImage 和设备树文件保存在 EMMC,然后uboot读取到这些到DDR内存中去运行,启动内核 1.先移植一个b ...

  4. Openssl移植到ARM开发板

    Openssl移植到ARM开发板 openssl源码下载 源码编译配置 使用生成的库文件 openssl源码下载 openssl源码可以在官网下载:https://www.openssl.org/so ...

  5. Linux系统移植:原厂 Kernel 移植到开发板

    文章目录 Linux系统移植:原厂 Kernel 移植到开发板 一.获取原厂内核并编译 二.内核启动测试 三.添加自己板子文件 3.1 板子配置文件 3.2 板子设备树 3.3 编译 四.重要配置修改 ...

  6. Linux系统移植:NXP 官板 uboot 移植

    文章目录 Linux系统移植:NXP 官板 uboot 移植 一.获取官板 U-Boot 二.编译下载 U-Boot 源码 三.官方驱动验证 Linux系统移植:NXP 官板 uboot 移植 移植 ...

  7. 基于全志A33开发板linux系统移植学习记录(Boot0)

    基于全志A33开发板linux系统移植学习记录 第一章 Boot0基于ARMGCC的编译与修改 文章目录 基于全志A33开发板linux系统移植学习记录 前言 一.全志A33简介以及上电引导流程 二. ...

  8. 最近在对郎成2440开发板作linux系统移植?最新的进展!

    2008年国庆开始拿到板子. 1.至10-12日板子的工具链建立完毕,可linux那边的工具链还没有开始. 2.10-12日开始作linux操作系统移植. 第一步:裁剪内核. 目前遇到的主要问题是如何 ...

  9. 嵌入式Linux(5):驱动开发网络调试驱动设备的Linux系统移植

    驱动开发之网络调试驱动设备的Linux系统移植 1.Uboot移植到开发板 uboot移植 2.开发板网络通讯 nfs命令 tftp命令 3.Linux移植到开发板 4.BusyBox 构建根文件系统 ...

最新文章

  1. PCL点云库用Poisson网格化实现点云的表面重建
  2. 开发工具 快捷键整理
  3. MTK 移植泰文输入法
  4. c语言 三个小球排排坐,关颖三个孩子排排坐 太萌啦
  5. if test 多条件_秒懂Python编程中的if __name__ == #x27;main#x27; 作用和原理
  6. Spring讲解二:Spring中的Bean配置0
  7. java----JUnit
  8. paip.SVN无法提交--提示冲突的解决
  9. 打开word后发现页面在左侧且只有72%。点击单页虽居中但大小也没法变动,调节右下角的大小变化但页面依然在左侧。
  10. javafx实现简单的计时器
  11. 教学中计算机软件的应用,计算机软件应用类课程教学方法
  12. 2020年chx的计算机保研之路系列(5)——夏令营面试问题及感想杂谈
  13. 7-6 将一个大写英文字母转换为小写输出 (12分)
  14. 2014届百田校招笔试
  15. TreeList 节点拖曳
  16. 巴黎圣母院重建设计竞赛辟谣!“巴黎心跳”夺冠,仅仅只是自嗨?
  17. 彻底搞懂基于Open3D的点云处理教程!
  18. linux 内存 内核参数详解,linux系统内核参数说明
  19. vsto 判断是否安装插件
  20. PADS导出Gerber

热门文章

  1. 计算机学科a类排名,学科评估A类学科数量及排名top 版
  2. Autodesk Revit 2014
  3. Oracle去重查询
  4. c语输入单引号_必须知道的C语言知识细节:单引号和双引号正确用法
  5. dovecot+mysql 空壳邮件
  6. 学习Python爬虫分布式:蜘蛛侠版爬虫架构
  7. yum、apt-get、dnf
  8. 教你黑掉一台不联网的电脑!网友:我擦嘞!这方法简直了……
  9. 【乘法器】大数乘法器的设计与优化(32位,16位,8位 树型阵列乘法器Dadda Tree与Wallace Tree)
  10. Mac(OSX)下媲美XShell的神器Termius