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内核与设备树的编译和烧写的资料请关注开心学习网其它相关文章!
- linuxdocker启动报错提示参数无效(docker 报错 Exited 1 4 minutes ago的原因分析)
- linux宝塔面板安装后怎么打开(Linux宝塔面板7.30推出文件外链分享功能)
- linux中ipconfig命令的功能(Linux ipcs命令的使用)
- linuxsamba怎么连接(Linux Samba服务器超详细安装配置附问题解决)
- linux 长模式查看文件(linux 查看文件系统类型实例方法)
- linux下启动tomcat服务(Linux系统安装Tomcat并配置Service启动关闭)
- linux怎么退出括号模式(Linux使用stty显示修改终端行设置)
- linux关闭autofs服务命令(Linux系统的ECS实例挂载NAS提示“mount: can't find /root/nas in /etc/fstab”错误的解决)
- linux系统查看nginx系统版本(Linux中Nginx的防盗链和优化的实现代码)
- linux怎么上传windows的文件(Windows本地环境和Linux腾讯云服务器之间传输文件的方法)
- linux用nvm安装nodejs(nodejs管理工具nvm安装过程详解)
- php系统化框架教程(PHP+swoole+linux实现系统监控和性能优化操作示例)
- linuxmysql安装教程5.7.25学习(linux mysql5.5升级至mysql5.7的步骤与踩到的坑)
- 如何搭建个人网盘dedecms(linux和windows主机实现dedecms伪静态)
- zabbixagent开发环境(Linux zabbix agent部署及配置方法详解)
- linux巡检命令手册(Linux xargs命令的使用)
- 你好,新成理人丨成都理工大学2019级新生开学典礼隆重举行(新成理人丨成都理工大学2019级新生开学典礼隆重举行)
- 这部民警编演的红色话剧,讲述了一个不断追寻的故事(这部民警编演的红色话剧)
- 日本菜有什么好吃(日本菜有什么好吃的做法)
- 韩国泡菜做法(韩国泡菜的做法步骤)
- 泰国旅游攻略(泰国旅游攻略必去景点)
- 越难春卷(越难春卷皮怎么用)
热门推荐
- 织梦dedecms开启付费授权(织梦Dedecms设置伪静态详细方法)
- 阿里云到期ecs迁移至本地(阿里云ecs 硬盘在线扩容详细教程)
- mysql基础操作报告(gorm操作MySql数据库的方法)
- laravel操作技巧(Laravel+Intervention实现上传图片功能示例)
- vue实现商品详情讲解(京东 Vue3 组件库支持小程序开发的详细流程)
- SQL Server 表变量的用法
- tornado异步编程(Tornado Web服务器中处理空白字符的解决方案)
- laravel自定义数据库驱动(laravel框架数据库配置及操作数据库示例)
- docker harbor 配置中央仓库(Docker Gitlab+Jenkins+Harbor构建持久化平台操作)
- SqlServer GO命令循环使用实例代码(SqlServer GO命令循环使用实例代码)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9