请问D1-H怎样只更新uboot呢?
-
请问D1-H怎样只更新uboot呢?
-
@gb2047
找到uboot对应的分区设备,然后用dd命令就能更新了,如果是flash设备dd前先擦除。 -
@whycan D1-H哪个分区才是uboot呢?
root@TinaLinux:/# ls /dev/mmc*
/dev/mmcblk0 /dev/mmcblk0p2 /dev/mmcblk0p4 /dev/mmcblk0p7
/dev/mmcblk0p1 /dev/mmcblk0p3 /dev/mmcblk0p5 /dev/mmcblk0rpmb -
-
@whycan 请教下晕哥,我用的是V853的buildroot。想要单独升级uboot,就将编译出来的u-boot-sun8iw21p1.bin用dd命令烧录到对应的分区。但是这个地址我应该怎么才能找到呢?不想用线刷,想着将bin文件放到板子上,然后在板子上执行dd命令去升级。
板子上fdisk -l是这样的输出,看不到uboot的具体位置:
root:/server# fdisk -l Found valid GPT with protective MBR; using GPT Disk /dev/mmcblk0: 30539776 sectors, 2624M Logical sector size: 512 Disk identifier (GUID): ab6f3888-569a-4926-9668-80941dcb40bc Partition table holds up to 6 entries First usable sector is 49152, last usable sector is 30539742 Number Start (sector) End (sector) Size Name 1 49152 61639 6244K boot-resource 2 61640 62647 504K env 3 62648 87847 12.3M boot 4 87848 88359 256K dtb 5 88360 1112359 500M rootfs 6 1112360 30539742 14.0G UDISK Disk /dev/mmcblk0boot1: 4 MB, 4194304 bytes, 8192 sectors 128 cylinders, 4 heads, 16 sectors/track Units: sectors of 1 * 512 = 512 bytes Disk /dev/mmcblk0boot1 doesn't contain a valid partition table Disk /dev/mmcblk0boot0: 4 MB, 4194304 bytes, 8192 sectors 128 cylinders, 4 heads, 16 sectors/track Units: sectors of 1 * 512 = 512 bytes Disk /dev/mmcblk0boot0 doesn't contain a valid partition table
看到有 /dev/mmcblk0boot0 和 /dev/mmcblk0boot1,想直接dd进去试试看,结果是没权限(已经是root用户)
root:/server# dd if=u-boot-sun8iw21p1.bin of=/dev/mmcblk0boot1 dd: error writing '/dev/mmcblk0boot1': Operation not permitted 1+0 records in 0+0 records out root:/server# dd if=u-boot-sun8iw21p1.bin of=/dev/mmcblk0boot0 dd: error writing '/dev/mmcblk0boot0': Operation not permitted 1+0 records in 0+0 records out root:/# ls -l /dev/mmcblk0* brw-rw---- 1 root disk 179, 0 Jan 1 1970 mmcblk0 brw-rw---- 1 root disk 179, 8 Jan 1 1970 mmcblk0boot0 brw-rw---- 1 root disk 179, 16 Oct 17 10:24 mmcblk0boot1 brw-rw---- 1 root disk 179, 1 Jan 1 1970 mmcblk0p1 brw-rw---- 1 root disk 179, 2 Jan 1 1970 mmcblk0p2 brw-rw---- 1 root disk 179, 3 Jan 1 1970 mmcblk0p3 brw-rw---- 1 root disk 179, 4 Jan 1 1970 mmcblk0p4 brw-rw---- 1 root disk 179, 5 Jan 1 1970 mmcblk0p5 brw-rw---- 1 root disk 179, 6 Jan 1 1970 mmcblk0p6 brw-rw---- 1 root disk 179, 24 Jan 1 1970 mmcblk0rpmb
-
在 /sys/block/mmcblk0bootx里面,echo 0到force_ro里,就可以dd写进去了,不过好像我烧录bin文件到mmcblk0boot0和mmcblk0boot1都不管用,看来我猜错了
有大神知道mmcblk0boot0 mmcblk0boot1 是用来做什么的吗? -
-
-
@whycan 感谢回复,不过boot.img不是内核相关的吗?我只想更新uboot
-
@negro 在 请问D1-H怎样只更新uboot呢? 中说:
@whycan 感谢回复,不过boot.img不是内核相关的吗?我只想更新uboot
dd if=/tmp/u-boot-sun8iw21p1.bin of=/dev/mmcblk0 bs=12339k seek=1
-
@whycan 我试了下,还是不行。甚至直接dd /dev/zero进去这个偏移地址,都还可以正常重启
你的这个偏移地址是在哪里找的呢?会不会是我们芯片不一样会有差异?我试了刷机工具,是可以刷boot0和boot1,可惜拿不到源码来看 -
-
@whycan 请问下晕哥你是从哪里找得到偏移地址的?
我是这样找的
1、在正常运行的板子上dd出30M的数据出来root:/# dd if=/dev/mmcblk0 of=test.img bs=1M count=30 30+0 records in 30+0 records out
2、用vim打开这个test.img,然后用16进制的方式查看数据(vim中执行:%!xxd)
3、在vim中搜索关键字uboot,看到uboot的数据是从地址0x01010c00开始的
换算一下:0x01010c00 就是十进制的16845824 ,单位是byte;
16845824 / 1024 = 16451 kbyte;这个就是我算出来的偏移地址。
4、然后重新编译uboot,得到u-boot.fex文件。同样用vim查看uboot.fex文件,和test.img中找到的uboot数据基本一致,可以判定是u-boot.fex保存在在第三步找到的地址。
5、将u-boot.fex文件复制到板子,执行root:/# dd if=u-boot.fex of=/dev/mmcblk0 bs=1k seek=16451 896+0 records in 896+0 records out
可是这样操作,uboot还是没有改变,蓝瘦。
同样的方法,也尝试过将boot_package.fex 写到找到的地址上,还是没有修改到。因为在test.img的数据中,找不到.bin文件的位置,所以想知道你是怎么找到这个地址的?感觉是我找的文件是不对的。
-
哎呀呀,终于成功啦。原来是我之前地址看错了,导致偏移地址也算错了。
直接dd boot_package.fex 到对应地址就可以了。我执行的命令是
dd if=boot_package.fex of=/dev/mmcblk0 bs=1k seek=16400 -
@whycan 在 请问D1-H怎样只更新uboot呢? 中说:
@negro 在 请问D1-H怎样只更新uboot呢? 中说:
@whycan 感谢回复,不过boot.img不是内核相关的吗?我只想更新uboot
dd if=/tmp/u-boot-sun8iw21p1.bin of=/dev/mmcblk0 bs=12339k seek=1
晕哥,在D1s中怎样只更新内核和设备树?最好是直接下载ram中,然后启动系统。每次烧写falsh和sd卡,太费事了。
-
@negro
dd if=boot_package.fex of=/dev/mmcblk0 bs=1k seek=16400
这样看来的话,mmcblk0里面应该存的是boot_package的数据,而非单一的uboot这里有个问题,我看你上面计算的偏移没有错吧?为啥后面正确的是要偏移16400呢?
-
@daizebin 应该是uboot的代码被打包在boot_package.fex里面了,所以直接dd boot_package.fex就可以了。偏移地址计算方法其实时没错的,是我看错了boot_package.fex数据的起始地址。正确的应该是这个:
0x01004000 等于10进制的16793600, 16793600 / 1024 = 16400kbyte
Copyright © 2024 深圳全志在线有限公司 粤ICP备2021084185号 粤公网安备44030502007680号