您尚未登录。

楼主 #1 2019-01-20 18:01:25

BMN李
会员
注册时间: 2018-03-22
已发帖子: 71
积分: 66

怎么在linux应用程序里读写dtb分区,以更新dtb?

怎么在linux应用程序里读写dtb分区,以更新dtb?

#define CONFIG_BOOTCOMMAND   "sf probe 0; "                           \
                             "sf read 0x41800000 0x100000 0x10000; "  \
                             "sf read 0x41000000 0x110000 0x400000; " \
                             "bootz 0x41000000 - 0x41800000"

#define CONFIG_BOOTARGS      "console=ttyS0,115200 earlyprintk panic=5 rootwait " \
                             "mtdparts=spi32766.0:1M(uboot)ro,64k(dtb)ro,4M(kernel)ro,-(rootfs) root=31:03 rw rootfstype=jffs2"

这里dtb分区时设置的只读的,应用层还有办法对其进行写操作不?现在手头没办法测试,要等明天上班了。麻烦知道的告知一声。这个问题不得到答案,老挂念着。

离线

#2 2019-01-20 18:13:11

IoTer
会员
注册时间: 2019-01-20
已发帖子: 25
积分: 25

Re: 怎么在linux应用程序里读写dtb分区,以更新dtb?

64k(dtb)ro

==>

64k(dtb)

离线

#3 2019-01-20 18:16:25

晕哥
管理员
注册时间: 2017-09-06
已发帖子: 9,342
积分: 9202

Re: 怎么在linux应用程序里读写dtb分区,以更新dtb?

没办法了, 你的 u-boot, dtb, kernel 全是 readonly,

除非你做一个固件, 从 TF 卡启动, 然后执行脚本刷  FLASH





离线

楼主 #4 2019-01-20 18:16:37

BMN李
会员
注册时间: 2018-03-22
已发帖子: 71
积分: 66

Re: 怎么在linux应用程序里读写dtb分区,以更新dtb?

IoTer 说:

64k(dtb)ro

==>

64k(dtb)

额。不是这个意思。是更新dtb部分固件,不是改源码或者改配置。在线升级固件。

离线

楼主 #5 2019-01-20 18:18:53

BMN李
会员
注册时间: 2018-03-22
已发帖子: 71
积分: 66

Re: 怎么在linux应用程序里读写dtb分区,以更新dtb?

晕哥 说:

没办法了, 你的 u-boot, dtb, kernel 全是 readonly,

除非你做一个固件, 从 TF 卡启动, 然后执行脚本刷  FLASH

直接从底层呢?写个flash读写驱动,然后指定地址写数据能绕过这个只读不?理论上应该是可以的吧。

还有这个mount -o remount,rw重挂载读写能改变读写权限不?

最近编辑记录 BMN李 (2019-01-20 18:21:55)

离线

#6 2019-01-20 18:23:25

晕哥
管理员
注册时间: 2017-09-06
已发帖子: 9,342
积分: 9202

Re: 怎么在linux应用程序里读写dtb分区,以更新dtb?

我认为这种情况不能编程 flash, 除非你试一下更底层的 spi 指令, 有一个spi 用户层接口看你有没有打开,从那里突破





离线

楼主 #7 2019-01-20 18:35:11

BMN李
会员
注册时间: 2018-03-22
已发帖子: 71
积分: 66

Re: 怎么在linux应用程序里读写dtb分区,以更新dtb?

晕哥 说:

我认为这种情况不能编程 flash, 除非你试一下更底层的 spi 指令, 有一个spi 用户层接口看你有没有打开,从那里突破

不知道。这些没动过,用的主线zero-4.13.y。

离线

#8 2019-01-20 18:45:48

晕哥
管理员
注册时间: 2017-09-06
已发帖子: 9,342
积分: 9202

Re: 怎么在linux应用程序里读写dtb分区,以更新dtb?

BMN李 说:
晕哥 说:

我认为这种情况不能编程 flash, 除非你试一下更底层的 spi 指令, 有一个spi 用户层接口看你有没有打开,从那里突破

不知道。这些没动过,用的主线zero-4.13.y。

要打开这个才行 CONFIG_SPI_SPIDEV=y

估计你也没打开,

只能从 TF 卡上面想办法了, 或者 USB用 sunxi-fel 刷机

https://www.kernel.org/doc/Documentation/spi/spidev

https://www.kernel.org/doc/Documentation/spi/spi-summary





离线

楼主 #9 2019-01-20 19:51:01

BMN李
会员
注册时间: 2018-03-22
已发帖子: 71
积分: 66

Re: 怎么在linux应用程序里读写dtb分区,以更新dtb?

晕哥 说:
BMN李 说:
晕哥 说:

我认为这种情况不能编程 flash, 除非你试一下更底层的 spi 指令, 有一个spi 用户层接口看你有没有打开,从那里突破

不知道。这些没动过,用的主线zero-4.13.y。

要打开这个才行 CONFIG_SPI_SPIDEV=y

估计你也没打开,

只能从 TF 卡上面想办法了, 或者 USB用 sunxi-fel 刷机

https://www.kernel.org/doc/Documentation/spi/spidev

https://www.kernel.org/doc/Documentation/spi/spi-summary

CONFIG_SPI_SPIDEV=m编译成模块加进去是可以的嘛?

离线

#10 2019-01-20 20:57:55

晕哥
管理员
注册时间: 2017-09-06
已发帖子: 9,342
积分: 9202

Re: 怎么在linux应用程序里读写dtb分区,以更新dtb?

BMN李 说:
晕哥 说:
BMN李 说:

不知道。这些没动过,用的主线zero-4.13.y。

要打开这个才行 CONFIG_SPI_SPIDEV=y

估计你也没打开,

只能从 TF 卡上面想办法了, 或者 USB用 sunxi-fel 刷机

https://www.kernel.org/doc/Documentation/spi/spidev

https://www.kernel.org/doc/Documentation/spi/spi-summary

CONFIG_SPI_SPIDEV=m编译成模块加进去是可以的嘛?

应该是可以的吧, 试一试, 期待你在应用层更新flash





离线

楼主 #11 2019-01-21 10:35:42

BMN李
会员
注册时间: 2018-03-22
已发帖子: 71
积分: 66

Re: 怎么在linux应用程序里读写dtb分区,以更新dtb?

晕哥 说:
BMN李 说:
晕哥 说:

要打开这个才行 CONFIG_SPI_SPIDEV=y

估计你也没打开,

只能从 TF 卡上面想办法了, 或者 USB用 sunxi-fel 刷机

https://www.kernel.org/doc/Documentation/spi/spidev

https://www.kernel.org/doc/Documentation/spi/spi-summary

CONFIG_SPI_SPIDEV=m编译成模块加进去是可以的嘛?

应该是可以的吧, 试一试, 期待你在应用层更新flash

额额。加载了spidev.ko模块,但是没在/dev/下生成设备。

离线

#12 2019-01-21 10:42:00

真的是很烦
会员
注册时间: 2018-10-08
已发帖子: 155
积分: 147.5

Re: 怎么在linux应用程序里读写dtb分区,以更新dtb?

这个需求比较奇怪,  能讲讲是出于什么样的需求吗?

离线

#13 2019-01-21 11:00:21

山无棱
会员
注册时间: 2017-10-23
已发帖子: 116
积分: 116

Re: 怎么在linux应用程序里读写dtb分区,以更新dtb?

真的是很烦 说:

这个需求比较奇怪,  能讲讲是出于什么样的需求吗?

应该是发出去的机器(特别是外国)需要升级, 但是又不能拆机, 又没有技术人员上门支持那种。

这种情况,最好是留 TF 卡座, 全志SOC支持优先从 TF 卡启动。

离线

楼主 #14 2019-01-21 11:06:36

BMN李
会员
注册时间: 2018-03-22
已发帖子: 71
积分: 66

Re: 怎么在linux应用程序里读写dtb分区,以更新dtb?

山无棱 说:
真的是很烦 说:

这个需求比较奇怪,  能讲讲是出于什么样的需求吗?

应该是发出去的机器(特别是外国)需要升级, 但是又不能拆机, 又没有技术人员上门支持那种。

这种情况,最好是留 TF 卡座, 全志SOC支持优先从 TF 卡启动。

嗯。就是远程在线升级。寄来寄去、上门什么的麻烦。

离线

#15 2019-01-21 13:58:39

error_0
会员
注册时间: 2018-12-10
已发帖子: 31
积分: 26

Re: 怎么在linux应用程序里读写dtb分区,以更新dtb?

这个我做过, 你去读写分区,首先把文件加载到内存上,然后擦除镜像对应的分区,然后把你更新的文件从内存写入flash。

离线

#16 2019-01-21 14:05:03

晕哥
管理员
注册时间: 2017-09-06
已发帖子: 9,342
积分: 9202

Re: 怎么在linux应用程序里读写dtb分区,以更新dtb?

error_0 说:

这个我做过, 你去读写分区,首先把文件加载到内存上,然后擦除镜像对应的分区,然后把你更新的文件从内存写入flash。

这个是只读分区, 那些操作 /dev/mtdX 擦/写命令都会出错的





离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn