Navigation

    全志在线开发者论坛

    • Register
    • Login
    • Search
    • Categories
    • Tags
    • 在线文档
    • 社区主页

    请问D1-H怎样只更新uboot呢?

    MR Series
    6
    17
    5115
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • gb2047
      mm LV 5 last edited by

      请问D1-H怎样只更新uboot呢?

      whycan 1 Reply Last reply Reply Quote Share 0
      • whycan
        whycan晕哥 LV 9 @gb2047 last edited by

        @gb2047
        找到uboot对应的分区设备,然后用dd命令就能更新了,如果是flash设备dd前先擦除。

        gb2047 N 2 Replies Last reply Reply Quote Share 0
        • gb2047
          mm LV 5 @whycan last edited by

          @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

          1 Reply Last reply Reply Quote Share 0
          • WhycanService
            WhycanService LV 8 last edited by

            ffc5406f-ce26-49b4-9da0-19065d5f1fdf-image.png

            1 Reply Last reply Reply Quote Share 0
            • N
              Negro LV 5 @whycan last edited by

              @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
              
              whycan 1 Reply Last reply Reply Quote Share 0
              • N
                Negro LV 5 last edited by

                在 /sys/block/mmcblk0bootx里面,echo 0到force_ro里,就可以dd写进去了,不过好像我烧录bin文件到mmcblk0boot0和mmcblk0boot1都不管用,看来我猜错了🤕
                有大神知道mmcblk0boot0 mmcblk0boot1 是用来做什么的吗?

                whycan 1 Reply Last reply Reply Quote Share 0
                • whycan
                  whycan晕哥 LV 9 @Negro last edited by whycan

                  @negro

                  cat /tmp/boot.img > /dev/by-name/boot

                  out/v853s-xxxxx/boot.img

                  N 1 Reply Last reply Reply Quote Share 0
                  • whycan
                    whycan晕哥 LV 9 @Negro last edited by whycan

                    @negro 在 请问D1-H怎样只更新uboot呢? 中说:

                    mmcblk0boot0和mmcblk0boot1

                    可能也行,只是没找到方法。

                    1 Reply Last reply Reply Quote Share 0
                    • N
                      Negro LV 5 @whycan last edited by

                      @whycan 感谢回复,不过boot.img不是内核相关的吗?我只想更新uboot

                      whycan 1 Reply Last reply Reply Quote Share 0
                      • whycan
                        whycan晕哥 LV 9 @Negro last edited by

                        @negro 在 请问D1-H怎样只更新uboot呢? 中说:

                        @whycan 感谢回复,不过boot.img不是内核相关的吗?我只想更新uboot

                        dd if=/tmp/u-boot-sun8iw21p1.bin of=/dev/mmcblk0 bs=12339k seek=1

                        N A 2 Replies Last reply Reply Quote Share 0
                        • N
                          Negro LV 5 @whycan last edited by

                          @whycan 我试了下,还是不行。甚至直接dd /dev/zero进去这个偏移地址,都还可以正常重启😵
                          你的这个偏移地址是在哪里找的呢?会不会是我们芯片不一样会有差异?我试了刷机工具,是可以刷boot0和boot1,可惜拿不到源码来看13389d29-8e5c-4cd7-a59d-5e856516aa26-image.png

                          whycan 1 Reply Last reply Reply Quote Share 0
                          • whycan
                            whycan晕哥 LV 9 @Negro last edited by

                            @negro 在 请问D1-H怎样只更新uboot呢? 中说:

                            我试了下,还是不行。

                            我这里正常,我这个SDK烧录进去偏移地址就是这个。

                            N 1 Reply Last reply Reply Quote Share 0
                            • N
                              Negro LV 5 @whycan last edited by

                              @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;这个就是我算出来的偏移地址。
                              ea0c29c8-e577-46b3-a1ce-0e3a0726ad54-image.png
                              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文件的位置,所以想知道你是怎么找到这个地址的?感觉是我找的文件是不对的。

                              1 Reply Last reply Reply Quote Share 0
                              • N
                                Negro LV 5 last edited by

                                哎呀呀,终于成功啦。原来是我之前地址看错了,导致偏移地址也算错了。
                                直接dd boot_package.fex 到对应地址就可以了。我执行的命令是
                                dd if=boot_package.fex of=/dev/mmcblk0 bs=1k seek=16400

                                DAIZEBIN 1 Reply Last reply Reply Quote Share 0
                                • A
                                  allwinnercoding LV 4 @whycan last edited by

                                  @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卡,太费事了。

                                  1 Reply Last reply Reply Quote Share 0
                                  • DAIZEBIN
                                    DAIZEBIN LV 7 @Negro last edited by

                                    @negro
                                    dd if=boot_package.fex of=/dev/mmcblk0 bs=1k seek=16400
                                    这样看来的话,mmcblk0里面应该存的是boot_package的数据,而非单一的uboot

                                    这里有个问题,我看你上面计算的偏移没有错吧?为啥后面正确的是要偏移16400呢?🤔 🤔

                                    N 1 Reply Last reply Reply Quote Share 0
                                    • N
                                      Negro LV 5 @DAIZEBIN last edited by

                                      @daizebin 应该是uboot的代码被打包在boot_package.fex里面了,所以直接dd boot_package.fex就可以了。偏移地址计算方法其实时没错的,是我看错了boot_package.fex数据的起始地址。正确的应该是这个:

                                      9a2d0d8d-fce3-4122-b4c1-b49d80a1208e-image.png

                                      0x01004000 等于10进制的16793600, 16793600 / 1024 = 16400kbyte

                                      1 Reply Last reply Reply Quote Share 0
                                      • 1 / 1
                                      • First post
                                        Last post

                                      Copyright © 2024 深圳全志在线有限公司 粤ICP备2021084185号 粤公网安备44030502007680号

                                      行为准则 | 用户协议 | 隐私权政策