OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 9496|回复: 16

如何使用自己最新编译的DTB文件?

[复制链接]

5

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
74
金钱
74
注册时间
2018-11-3
在线时间
17 小时
发表于 2019-12-6 00:20:41 | 显示全部楼层 |阅读模式
1金钱
本帖最后由 leoyang012 于 2019-12-6 00:36 编辑

在第四十四章中,需要更新DTB文件,使用新的 imx6ull-alientek-emmc.dtb 启动Linux 内核,请问需要通过MfgTool烧录吗还是使用tftp方式?我使用的EMMC版本 请教一个问题,公司都是用fastboot烧录,能提示一下如何移植使用fastboot烧录吗?支持fastboot烧录一定需要android的支持吗?


最佳答案

查看完整内容[请看2#楼]

要更新核心板上的文件,比如更新EMMC中的内核或者设备树,可以有多种方式。 1、TFTP或NFS的方式 2、借助TF卡、U盘这些存储设备 3、使用mfgtool这个工具 4、用scp这样的指令 5、其它方式 以上,我简单介绍一下方法2和方法4 方法2: 从EMMC启动开发板以后,/run/media/mmcblk1p1这个目录是boot目录,存放的是内核、设备树文件,/run/media/mmcblk1p2是rootfs目录,存放的是文件系统文件。 从SD卡启动以后,/run/media/m ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

9

主题

890

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
2390
金钱
2390
注册时间
2019-9-25
在线时间
397 小时
发表于 2019-12-6 00:20:42 | 显示全部楼层
本帖最后由 仰望星空之云 于 2019-12-7 10:10 编辑

要更新核心板上的文件,比如更新EMMC中的内核或者设备树,可以有多种方式。
1、TFTP或NFS的方式
2、借助TF卡、U盘这些存储设备
3、使用mfgtool这个工具
4、用scp这样的指令
5、其它方式
以上,我简单介绍一下方法2和方法4


方法2:
从EMMC启动开发板以后,/run/media/mmcblk1p1这个目录是boot目录,存放的是内核、设备树文件,/run/media/mmcblk1p2是rootfs目录,存放的是文件系统文件。
从SD卡启动以后,/run/media/mmcblk0p1这个目录是boot目录,存放的是内核、设备树文件,/run/media/mmcblk0p2是rootfs目录,存放的是文件系统文件。
1.png
比如我要更换核心板上的设备树文件imx6ull-14x14-emmc-7-800x480-c.dtb,开发板接好,拨码开关选择从EMMC启动,进入文件系统。
要替换原来的设备树文件,那就要找到EMMC启动后设备树文件在哪里,如下图,/run/media/mmcblk1p1这个目录是boot分区,里边存放的是内核文件和设备树文件。
如果是从SD卡启动,那么对应的boot分区是/run/media/mmcblk0p1,所以从SD卡启动的话就替换/run/media/mmcblk0p1里对应的文件就好。

如下图,我将ubuntu下的设备树文件拷贝到TF卡中,因为我的TF卡之前按照《【正点原子】I.MX6U用户快速体验V1.1》这个文档操作过,已经将文件系统固化到了TF卡,所以TF卡在ubuntu上会显示两个分区,一个是/dev/sdb1 分区,一个是/dev/sdb2分区。在ubuntu上,/dev/sdb1 分区挂载的目录是/media/MY/boot,即boot分区,/dev/sdb2分区挂载的目录是/media/MY/roofs,即rootfs分区。
如下图,我在TF卡下新建一个文件夹123,然后用指令 sudo cp imx6ull-14x14-emmc-7-800x480-c.dtb /media/MY/boot/123将设备树文件拷贝到TF卡的这个文件夹下。
3.png
2.png
如下图,在/media/MY/boot/123下已经有了我拷贝的设备树文件
4.png

然后将TF卡插到开发板上,插上TF卡以后执行指令df查看挂载的分区,可以看到,/run/media/mmcblk1p1是EMMC的boot分区,/run/media/mmcblk0p1是TF卡的boot分区,/run/media/mmcblk0p2是TF卡的rootfs分区。
我进入TF卡的目录/run/media/mmcblk0p1/123下,执行指令将设备树imx6ull-14x14-emmc-7-800x480-c.dtb拷贝到/run/media/mmcblk1p1
cp imx6ull-14x14-emmc-7-800x480-c.dtb /run/media/mmcblk1p1
最后执行指令sync来同步一下缓存
5.png
按照如上步骤替换成功。
开发板重启以后查看我的屏显示正常(我的屏是正点原子7寸RGB的屏,分辨率是800*480)

方法4:
使用scp指令更简单,查看开发板IP是192.168.1.126,我ubuntu的IP是192.168.1.185,他两功能互相ping通,可以进行通信:
6.png
使用scp指令将设备树文件拷贝到开发板的/run/media/mmcblk1p1目录下
7.png
最后在开发板上执行sync指令再重启,替换成功。其它文件替换大家可以试试其他方法。




回复

使用道具 举报

6

主题

1127

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1656
金钱
1656
注册时间
2019-8-15
在线时间
102 小时
发表于 2019-12-6 17:15:42 | 显示全部楼层
帮顶                                 
成功没有捷径
回复

使用道具 举报

9

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
136
金钱
136
注册时间
2019-10-29
在线时间
25 小时
发表于 2019-12-6 22:36:59 | 显示全部楼层
楼主有找到 imx6ull-alientek-emmc.dts文件吗
我使用的是 正点原子修改后的Uboot和Linux-->linux-imx-4.1.15-2.1.0-g49efdaa-v1.0
没有找这个文件
回复

使用道具 举报

9

主题

890

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
2390
金钱
2390
注册时间
2019-9-25
在线时间
397 小时
发表于 2019-12-7 10:07:10 | 显示全部楼层
本帖最后由 仰望星空之云 于 2019-12-7 10:08 编辑
糊涂仙 发表于 2019-12-6 22:36
楼主有找到 imx6ull-alientek-emmc.dts文件吗
我使用的是 正点原子修改后的Uboot和Linux-->linux-imx-4.1. ...

如果按照教程来做的话,会有这个文件的,这个文件是你自己创建的,但是跳着教程看的话,只能用教程已经改好的源码来编译。
9498A9B9-58AE-4dd1-9510-0ACBFD1FC7F6.png 教程对应的源码可以下载这个连接的:

很多朋友在看ALPHA开发板教程的时候在找教程里面对应的uboot和linux内核源码,这个uboot和linux内核源码是跟着教程一步一步制作的,因为教程还没完成,所以uboot和linux内核源码也就没有发布。但是大家现在需要这个,所以就先发布出来,教程里面的uboot和linux内核源码已经上传到了百度网盘上。
下载链接:https://pan.baidu.com/s/1XFszF25wncw0D8yRXuOwiA 提取码:k30f
回复

使用道具 举报

5

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
74
金钱
74
注册时间
2018-11-3
在线时间
17 小时
 楼主| 发表于 2019-12-7 13:28:56 | 显示全部楼层
本帖最后由 leoyang012 于 2019-12-7 13:45 编辑
仰望星空之云 发表于 2019-12-6 00:20
要更新核心板上的文件,比如更新EMMC中的内核或者设备树,可以有多种方式。
1、TFTP或NFS的方式
2、借助T ...

在 /run/media/mmcblk0p1 目录下有几个设备树文件,系统如何选择使用哪个设备树文件呢?是在Uboot传参里面指定的吧?
QQ图片20191207134341.png
回复

使用道具 举报

9

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
136
金钱
136
注册时间
2019-10-29
在线时间
25 小时
发表于 2019-12-7 21:54:44 | 显示全部楼层
本帖最后由 糊涂仙 于 2019-12-8 14:17 编辑
仰望星空之云 发表于 2019-12-6 00:20
要更新核心板上的文件,比如更新EMMC中的内核或者设备树,可以有多种方式。
1、TFTP或NFS的方式
2、借助T ...

你好:
我使用的是4.3寸800x480的板子,从SD卡启动
将 imx6ull-alientek-emmc.dtb拷到/run/media/mmcblk0p1中重命名为imx6ull-14x14-emmc-4.3-800x480-c.dtb,替换掉原来的imx6ull-14x14-emmc-4.3-800x480-c.dtb,重新启动,板子就会使用对应的设备村(即imx6ull-14x14-emmc-4.3-800x480-c.dtb)吗?
重启后在/proc/device-tree/目录中还是没有“alphaled”这个节点
另外我没有把屏接上,在uboot中使用的imx6ull-14x14-emmc-4.3-480x272-c.dtb而不是imx6ull-14x14-emmc-4.3-800x480-c.dtb,是否有问题

微信图片_20191208141630.png
回复

使用道具 举报

5

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
74
金钱
74
注册时间
2018-11-3
在线时间
17 小时
 楼主| 发表于 2019-12-9 01:06:33 | 显示全部楼层
糊涂仙 发表于 2019-12-7 21:54
你好:
我使用的是4.3寸800x480的板子,从SD卡启动
将 imx6ull-alientek-emmc.dtb拷到/run/media/mmcbl ...

你把dtb 反向编译成 dts 看看里面有没有你添加的节点
回复

使用道具 举报

9

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
136
金钱
136
注册时间
2019-10-29
在线时间
25 小时
发表于 2019-12-9 11:52:05 | 显示全部楼层
leoyang012 发表于 2019-12-9 01:06
你把dtb 反向编译成 dts 看看里面有没有你添加的节点

感谢你的回复,还有几个问题请教:
1. 如何确定系统使用哪个设备树文件,是在Uboot传入的吗,如下图

2. 板子是emmc-4.3-480x272,但没有把屏接上,为什么在uboot中使用的imx6ull-14x14-emmc-4.3-480x272-c.dtb而不是imx6ull-14x14-emmc-4.3-800x480-c.dtb

3. 如果用SD启动,所使用的DTB和zImage文件只是名字不一样,而内容是一样的吗?
期待回复

uboot读入的dtb文件

uboot读入的dtb文件
回复

使用道具 举报

5

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
74
金钱
74
注册时间
2018-11-3
在线时间
17 小时
 楼主| 发表于 2019-12-9 15:07:24 | 显示全部楼层
糊涂仙 发表于 2019-12-9 11:52
感谢你的回复,还有几个问题请教:
1. 如何确定系统使用哪个设备树文件,是在Uboot传入的吗,如下图

1. uboot中有默认的参数,你停在uboot命令行也可以动态配置,总之就是 run findfdt后的结果: printenv fdt_file
2.  参照第一条确认
3.  这个取决于你的uboot中配置
回复

使用道具 举报

7

主题

237

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1101
金钱
1101
注册时间
2019-5-6
在线时间
127 小时
发表于 2019-12-9 15:35:24 | 显示全部楼层
仰望斑竹整理的非常棒,学习了!!!
一步一个脚印
回复

使用道具 举报

5

主题

31

帖子

0

精华

初级会员

Rank: 2

积分
143
金钱
143
注册时间
2019-8-18
在线时间
61 小时
发表于 2019-12-10 17:09:15 | 显示全部楼层
mark mark
回复

使用道具 举报

9

主题

890

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
2390
金钱
2390
注册时间
2019-9-25
在线时间
397 小时
发表于 2019-12-12 12:32:34 | 显示全部楼层
本帖最后由 仰望星空之云 于 2019-12-12 13:00 编辑
leoyang012 发表于 2019-12-7 13:28
在 /run/media/mmcblk0p1 目录下有几个设备树文件,系统如何选择使用哪个设备树文件呢?是在Uboot传参里 ...

你用的是原子的屏的话,启动的时候会自动加载对应的设备树的。比如我接的是原子的RGB接口的屏,7寸,800*480的分辨率,这里uboot启动过程中会自动加载对应的设备树。 4.png
根据自己的屏来更换对应的设备树就好。
要是不是原子的屏的话,那就看看开机的时候默认加载的哪个设备树,将您编译出来的设备树拷贝进去,然后修改一下设备树的名字为默认加载的设备树的名字(也就是换个马甲而已)。
加载什么设备树,在uboot下就有配置好了的,自己也可以修改uboot原来来指定加载什么设备树。
如下图,是正点原子uboot下修改的地方,加载了什么设备树:
在uboot源码的board/freescale/mx6ullevk/mx6ullevk.c文件下

5.png

如下图,这是我自己修改的,我在include/configs/mx6ull_alientek_emmc.h中指定了加载了哪个设备树了:
加载的是imx6ull-alientek-emmc.dtb
6.png




回复

使用道具 举报

9

主题

890

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
2390
金钱
2390
注册时间
2019-9-25
在线时间
397 小时
发表于 2019-12-12 13:53:49 | 显示全部楼层
本帖最后由 仰望星空之云 于 2019-12-12 13:56 编辑
糊涂仙 发表于 2019-12-9 11:52
感谢你的回复,还有几个问题请教:
1. 如何确定系统使用哪个设备树文件,是在Uboot传入的吗,如下图

哈哈,上面我的回复中刚好有您想要的答案
回复

使用道具 举报

9

主题

890

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
2390
金钱
2390
注册时间
2019-9-25
在线时间
397 小时
发表于 2019-12-12 13:55:56 | 显示全部楼层
糊涂仙 发表于 2019-12-7 21:54
你好:
我使用的是4.3寸800x480的板子,从SD卡启动
将 imx6ull-alientek-emmc.dtb拷到/run/media/mmcbl ...

接没接屏的话用哪个设备树没关系的,系统会默认使用imx6ull-14x14-emmc-4.3-480x272-c.dtb这个设备树。可以看看我前面的回复,uboot下是已经定好加载哪个设备树了。
回复

使用道具 举报

6

主题

58

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
233
金钱
233
注册时间
2014-8-26
在线时间
53 小时
发表于 2019-12-16 21:46:49 | 显示全部楼层
我是nand的核心板,没有mmcblk1p1目录,去问如何使用scp指令将设备树文件拷贝到开发板的/run/media/mmcblk1p1目录下?
或者是nand核心板对应的/run/media/mmcblk1p1,叫什么名字呀?
回复

使用道具 举报

9

主题

890

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
2390
金钱
2390
注册时间
2019-9-25
在线时间
397 小时
发表于 2019-12-18 21:12:00 | 显示全部楼层
本帖最后由 仰望星空之云 于 2019-12-18 21:18 编辑
忙碌的小姚 发表于 2019-12-16 21:46
我是nand的核心板,没有mmcblk1p1目录,去问如何使用scp指令将设备树文件拷贝到开发板的/run/media/mmcblk1 ...

具体的操作可以参考mfgtool这个工具里的脚本文件
1、查看NAND FLASH分区情况:cat /proc/mtd/
11111111.png
mtd3dtb(设备树文件)分区。先将对应的设备树文件拷贝到文件系统的/home/root分区,然后擦除对应的分区再进行烧写。
2、擦除设备树对应的分区:flash_erase /dev/mtd3 0 0
3、使用nandwrite 指令将对应的设备树文件烧写到mtd3对应的地址中。
nandwrite -p /dev/mtd3 /home/root/imx6ull-14x14-nand-4.3-480x272-c.dtb
图片1.png

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-25 03:31

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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