解析Linux内核与设备树的编译和烧写

 更新时间:2021年06月26日 10:42:11   作者:浇筑菜鸟  
在内核源码中,存在大量对板级细节信息描述的代码。开源文档中对设备树的描述是,一种描述硬件资源的数据结构,它通过bootloader将硬件资源传给内核,使得内核和硬件资源描述相对独立

一、准备材料

可以根据自己的需要准备相应材料:

开发环境:VMware

操作系统:ubuntu

开发版:湃兔i2S-6UB

二、下载Linux内核文件

之前下载过UBoot文件的朋友应该知道,在每个开发版的资料里都有相应的文件,没有的可以找购买开发版的店家要。

下载完成后将文件拷贝到linux系统下进行解压,解压后会的目录如下图所示:

注意:编译时一定要在当前路径下才能编译

三、编译

1、清理项目工程

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- distclean

2、设置默认配置文件

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- i2som_imx6_defconfig

编译完成后会生成“.config”,如下图所示:

注意:湃兔的默认配置文件是“i2som_imx6_defconfig”,不同厂商的默认配置文件有所不同,可与根据相应的资料查看。如湃兔官网的说明,如下图所示

3.编译生成kernrl文件

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- zImage

4.编译生成.dtb文件

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- dtbs

注意:到这里内核与设备树的编译就算完成了,如果细心的小伙伴就会发现,为啥我的命令会长一些。每个指令中都用“ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-”,这是设置编译器为交叉编译器。为了使编译指令简介一些,可以在Makefile文件中添加ARCH和CROSS_COMPILE的配置,以后就可以编译时就可以省掉命令中的“ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-”部分,如下图所示:

5.生成文件的路径

zImage:/arch/arm/boot/目录下

dtb:/arch/arm/boot/dts目录下

四、通过TFTp烧写zImage与.dtb文件

1.将zImage和.dtb文件放入tftp服务器中

2.进入开发版UBoot的命令行,配置TFTP服务地址

setenv serverip 192.168.1.99

saveenv 

3.下载zImage文件

tftp 80800000 zImage

4.下载.dtb文件

tftp 83000000 i2c6ulxb-i2s6ull-emmc.dtb

5.启动加载zImage和dtb文件

bootz 80800000 - 83000000

6.验证是否成功

烧写完成后,在kernel启动时会打印编译的时间,如果时间是没问题则说明成功了,启动信息如下图所示:

五、常见问题

1.编译生成zImage时可能会出现的错误如下图所示:

这个错误主要是开发环境未安装‘lzop'工具,只需安装一下从新编译即可

sudo apt-get install lzop

2.启动时卡死在“Starting kernel ...”,如下图所示:

不知道是我手里的开发有问题还是怎么回事,只要编译是不如改动其他文件一般不会有配置错误,所以遇到这种情况多重新试几次即可。

3.如图能启动系统,湃兔的开发版还可以通过替换文件进行更新,进入开发版的系统后之心一下操作

mkdir /mnt/linux/

umount /mnt/linux/

mount /dev/mmcblk1p1 /mnt/linux/

cp i2c6ulxb-i2s6ull-emmc.dtb /mnt/linux/zImage-i2c6ulxb-i2s6ull-emmc.dtb; sync

umount /mnt/linux

reboot

官方教程如下图所示:

4.启动后会发现不能正常启动,这是因为没有根文件导致的

以上就是解析Linux内核与设备树的编译和烧写的详细内容,更多关于Linux内核与设备树的编译和烧写的资料请关注脚本之家其它相关文章!

相关文章

  • linux中串口调试工具minicom的使用详解

    linux中串口调试工具minicom的使用详解

    minicom 是 Linux 下的一个串口终端工具,主要用于与串口设备交互,本文主要来和大家聊聊minicom 的详细使用教程,感兴趣的小伙伴可以跟随小编一起学习一下
    2024-12-12
  • VMware10下CentOS 7安装配置图文教程

    VMware10下CentOS 7安装配置图文教程

    这篇文章主要为大家详细介绍了VMware10下CentOS 7安装配置图文教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-09-09
  • Lamp环境下设置绑定apache域名的方法分析

    Lamp环境下设置绑定apache域名的方法分析

    这篇文章主要介绍了Lamp环境下设置绑定apache域名的方法,简单分析了Lamp环境下的Apache域名绑定设置相关属性、功能与操作技巧,需要的朋友可以参考下
    2018-03-03
  • 浅谈linux中sed命令和awk命令的使用

    浅谈linux中sed命令和awk命令的使用

    这篇文章主要介绍了浅谈linux中sed命令和awk命令的使用,具有一定借鉴价值,需要的朋友可以参考下
    2018-01-01
  • Linux 挂载磁盘详解及实操步骤

    Linux 挂载磁盘详解及实操步骤

    Linux中挂载磁盘是一项重要的操作,可以用于扩展存储空间,管理数据文件,备份和存储重要文件等,本文将详细介绍Linux系统中挂载磁盘的相关概念、步骤和实际操作指南
    2023-06-06
  • ubuntu16.04在python3 下创建Django项目并运行的操作方法

    ubuntu16.04在python3 下创建Django项目并运行的操作方法

    这篇文章主要介绍了ubuntu16.04在python3 下创建Django项目并运行,本文图文并茂给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-09-09
  • Centos系统下“无法打开并写入文件”问题的解决

    Centos系统下“无法打开并写入文件”问题的解决

    这篇文章主要给大家介绍了关于在Centos系统下报:“无法打开并写入文件”问题的解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧。
    2017-12-12
  • Linux内存管理和寻址详细介绍

    Linux内存管理和寻址详细介绍

    大家好,本篇文章主要讲的是Linux内存管理和寻址详细介绍,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览
    2021-12-12
  • Linux gcc命令的具体使用

    Linux gcc命令的具体使用

    这篇文章主要介绍了Linux gcc命令的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-02-02
  • Linux服务器从头配置全过程

    Linux服务器从头配置全过程

    这篇文章主要介绍了Linux服务器从头配置全过程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2024-03-03

最新评论