linux内核设备树(解析Linux内核与设备树的编译和烧写)
linux内核设备树
解析Linux内核与设备树的编译和烧写目录
- 一、准备材料
- 二、下载Linux内核文件
- 三、编译
- 四、通过TFTp烧写zImage与.dtb文件
- 五、常见问题
可以根据自己的需要准备相应材料:
开发环境: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的selinux状态(如何理解Linux下的SELinux)
- 宝塔linux面板新手使用教程交流(宝塔面板Linux自动磁盘挂载工具 BT-Panel 1.0)
- linux 长模式查看文件(linux 查看文件系统类型实例方法)
- linuxpasswd用法(Linux passwd 命令的使用)
- linuxread指令(Linux read命令的使用)
- linuxdocker启动报错提示参数无效(docker 报错 Exited 1 4 minutes ago的原因分析)
- linux服务器安装宝塔(linux宝塔面板安装Zabbix监控服务器资源使用状态)
- linux系统编程语法(简析Linux网络编程函数)
- linux系统登录mysql数据库(Linux手动部署远程的mysql数据库的方法详解)
- kafka 单机安装(在Linux环境下安装Kafka)
- linux基础教程磁盘配额的设计(WDCP Linux服务器磁盘爆满的处理方法)
- 使用docker在linux环境中部署springboot包的教程(使用docker在linux环境中部署springboot包的教程)
- linux安装nacos教程(Nacos配置MySQL8的方法)
- linux宝塔面板安装后怎么打开(Linux宝塔面板7.30推出文件外链分享功能)
- linux nginx部署前端项目(nginx部署多前端项目的几种方法)
- linux系统显示时间的命令(详解Linux time 命令的使用)
- 幼小衔接-20以内看图读数 写数 数的组成练习题(幼小衔接-20以内看图读数)
- 你只要花上20天记单词,英语成绩就能从57提到100(你只要花上20天记单词)
- 夕云天际飞,亢龙化太极(夕云天际飞亢龙化太极)
- 爱情可以当饭吃吗(怎么回复)
- 高考数学题(高考数学题基础题占多少分)
- 没钱只能吃土(没钱要吃土了幽默短信发朋友圈)
热门推荐
- SqlServer 按时间段查询问题(SqlServer 按时间段查询问题)
- dedecms循环栏目(dedecms 栏目列表分页链接优化)
- sqlserver复制表结构及数据到新表(SQL SERVER 表与表之间 字段一对多sql语句写法)
- php安全性问题怎么解决(实例分析10个PHP常见安全问题)
- sql server中PageLatch和PageIOLatch等待
- 织梦dedecms专题页制作详细教程(dedecms教程之dedecms生成速度提速的方法)
- windows7mysql服务无法启动(Windows系统下MySQL无法启动的万能解决方法)
- extjs checkboxGroup 复选框的用法
- python生成密码字典教程(Python利用字典破解WIFI密码的方法)
- python教程第126节(Python 学习教程之networkx)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9