ophub/u-boot

Add support for purple-pi-oh

east4ming opened this issue · 42 comments

你好, 我是新人, 希望增加对 purple-pi-oh 的支持.
但是不了解该 board 对应的u-boot 文件(idbloader.bin, u-boot.itb)应该从哪里获取. 请帮忙.

相关资料:

谢谢!

请问:

u-boot.itb 是这个文件吗? (来自 purple-pi-oh linux sdk)
image

idbloader.bin 是在这两个目录下的某一个吗? 具体是哪一个?
image

image

谢谢

ophub commented

https://github.com/ophub/amlogic-s9xxx-armbian/blob/main/documents/README.cn.md

12.11.2 里是编译u-boot的方法。
如果是从已经编译好的ubuntu/debian/armbian中复制的话,一般在/usr/lib/linux-u-boot-xxx里

https://github.com/ophub/amlogic-s9xxx-armbian/blob/main/documents/README.cn.md

12.11.2 里是编译u-boot的方法。 如果是从已经编译好的ubuntu/debian/armbian中复制的话,一般在/usr/lib/linux-u-boot-xxx里

你好, 我选择按照purple-pi-oh官方提供的文档编译u-boot, 编译后输出文件如下, 请问应该选择哪些文件?

$ ls -lrt
-rw-rw-r--   1 casey casey   972064 9月   7 11:12 u-boot.map
-rwxrwxr-x   1 casey casey 10406240 9月   7 11:12 u-boot
-rw-rw-r--   1 casey casey   389663 9月   7 11:12 u-boot.sym
-rw-rw-r--   1 casey casey   202489 9月   7 11:12 System.map
-rwxrwxr-x   1 casey casey  3523398 9月   7 11:12 u-boot.srec
-rwxrwxr-x   1 casey casey  1225496 9月   7 11:12 u-boot-nodtb.bin
-rw-rw-r--   1 casey casey  1239761 9月   7 11:12 u-boot-dtb.bin
-rw-rw-r--   1 casey casey    14265 9月   7 11:12 u-boot.dtb
-rw-rw-r--   1 casey casey  1239768 9月   7 11:12 u-boot-dtb-kern.bin
-rw-rw-r--   1 casey casey  1370340 9月   7 11:12 u-boot.bin
drwxrwxr-x  10 casey casey     4096 9月   7 11:12 tpl
drwxrwxr-x  13 casey casey     4096 9月   7 11:12 spl
-rw-rw-r--   1 casey casey    11894 9月   7 11:12 u-boot.cfg.configs
-rw-rw-r--   1 casey casey   402376 9月   7 11:12 bl31.elf
-rw-rw-r--   1 casey casey   457112 9月   7 11:12 tee.bin
-rw-rw-r--   1 casey casey     8192 9月   7 11:12 bl31_0xfdcd0000.bin
-rw-rw-r--   1 casey casey     8192 9月   7 11:12 bl31_0xfdcce000.bin
-rw-rw-r--   1 casey casey    40960 9月   7 11:12 bl31_0xfdcc1000.bin
-rw-rw-r--   1 casey casey    20259 9月   7 11:12 bl31_0x0006a000.bin
-rw-rw-r--   1 casey casey     7732 9月   7 11:12 bl31_0x00068000.bin
-rw-rw-r--   1 casey casey   163840 9月   7 11:12 bl31_0x00040000.bin
-rw-rw-r--   1 casey casey   469440 9月   7 11:12 rk356x_spl_loader_v1.15.112.bin
drwxrwxr-x   2 casey casey     4096 9月   7 11:12 fit
-rw-rw-r--   1 casey casey  4194304 9月   7 11:12 uboot.img
$ ll fit
-rw-rw-r--  1 casey casey 2083328 9月   7 11:12 uboot.itb
-rw-rw-r--  1 casey casey    3010 9月   7 11:12 u-boot.its

build_uboot_arm1804_20230907_111609.logs.txt

附件是编译日志.

ophub commented

https://github.com/ophub/amlogic-s9xxx-armbian/blob/main/build-armbian/armbian-files/common-files/etc/model_database.conf

这是配置表,一般就这3种组合。
你截图不全,没看到idbloader文件。

编译后 u-boot 目录下所有的 .img 和 .bin 见下, 请问具体是哪个? 谢谢

casey@purple-build:~/Downloads/Purple-Pi-OH-sdk/rk356x_linux_sdk/u-boot$ find . -name "*.bin" -type f
./spl/u-boot-spl.bin
./spl/u-boot-spl-nodtb.bin
./spl/u-boot-spl-dtb.bin
./u-boot-nodtb.bin
./tee.bin
./u-boot-dtb.bin
./bl31_0x0006a000.bin
./examples/standalone/hello_world.bin
./rk356x_spl_loader_v1.15.112.bin
./tools/binman/test/descriptor.bin
./bl31_0x00068000.bin
./bl31_0xfdcc1000.bin
./bl31_0xfdcd0000.bin
./u-boot-dtb-kern.bin
./bl31_0xfdcce000.bin
./tpl/u-boot-tpl.bin
./tpl/u-boot-tpl-nodtb.bin
./bl31_0x00040000.bin
./u-boot.bin
casey@purple-build:~/Downloads/Purple-Pi-OH-sdk/rk356x_linux_sdk/u-boot$ find . -name "*.img" -type f
./uboot.img
ophub commented

看他的文档,就1个文件:uboot.img
使用方法看他的官方文档

好的, 刚刚我又根据purple pi oh官方文档完整的构建一次, 输出结果如下:

casey@purple-build:~/Downloads/Purple-Pi-OH-sdk/rk356x_linux_sdk/IMAGE/IDO-PI-OH3566-V1_20230907.1211_RELEASE_TEST$ tree .
.
├── build_cmd_info
├── IMAGES
│   ├── boot.img
│   ├── MiniLoaderAll.bin
│   ├── misc.img
│   ├── oem.img
│   ├── parameter.txt
│   ├── recovery.img
│   ├── rootfs.ext4
│   ├── rootfs.img
│   ├── uboot.img
│   ├── update.img
│   └── userdata.img
└── PATCHES
    └── kernel
        └── vmlinux

3 directories, 13 files

casey@purple-build:~/Downloads/Purple-Pi-OH-sdk/rk356x_linux_sdk/IMAGE/IDO-PI-OH3566-V1_20230907.1211_RELEASE_TEST$ du -sh IMAGES/MiniLoaderAll.bin
460K    IMAGES/MiniLoaderAll.bin

请帮忙再次确认下.

另外我现在准备提交PR, 请问具体这么操作对吗?

  1. rockchip 下创建子目录: purple-pi-oh
  2. purple-pi-oh目录中上传: uboot.img (该img需要重命名吗?)
  3. 提交PR.

谢谢!

好的, 刚刚我又根据purple pi oh官方文档完整的构建一次, 输出结果如下:

casey@purple-build:~/Downloads/Purple-Pi-OH-sdk/rk356x_linux_sdk/IMAGE/IDO-PI-OH3566-V1_20230907.1211_RELEASE_TEST$ tree .
.
├── build_cmd_info
├── IMAGES
│   ├── boot.img
│   ├── MiniLoaderAll.bin
│   ├── misc.img
│   ├── oem.img
│   ├── parameter.txt
│   ├── recovery.img
│   ├── rootfs.ext4
│   ├── rootfs.img
│   ├── uboot.img
│   ├── update.img
│   └── userdata.img
└── PATCHES
    └── kernel
        └── vmlinux

3 directories, 13 files

casey@purple-build:~/Downloads/Purple-Pi-OH-sdk/rk356x_linux_sdk/IMAGE/IDO-PI-OH3566-V1_20230907.1211_RELEASE_TEST$ du -sh IMAGES/MiniLoaderAll.bin
460K    IMAGES/MiniLoaderAll.bin

请帮忙再次确认下.

另外我现在准备提交PR, 请问具体这么操作对吗?

  1. rockchip 下创建子目录: purple-pi-oh
  2. purple-pi-oh目录中上传: uboot.img (该img需要重命名吗?)
  3. 提交PR.

谢谢!

你还需要上传那份Miniloader.bin

RK的引导有两种流程,一个是使用官方SDK,另一种是使用Uboot开源代码。前者跑出来的文件和后者跑出来的文件并不相同,但是写入的地址相同。由于官方SDK对文件有所处理,Miniloader.bin需要写入到0x0000,uboot.img写入0x4000。不太清楚目前的rebuild中的rk方案里面有无能写入到0x0000的方案。

你上面那个截图的那些bin文件主要是用来合成usbplug.bin和编译uboot.img,并不是最终成品,不可以直接烧录。

好的, 刚刚我又根据purple pi oh官方文档完整的构建一次, 输出结果如下:

casey@purple-build:~/Downloads/Purple-Pi-OH-sdk/rk356x_linux_sdk/IMAGE/IDO-PI-OH3566-V1_20230907.1211_RELEASE_TEST$ tree .
.
├── build_cmd_info
├── IMAGES
│   ├── boot.img
│   ├── MiniLoaderAll.bin
│   ├── misc.img
│   ├── oem.img
│   ├── parameter.txt
│   ├── recovery.img
│   ├── rootfs.ext4
│   ├── rootfs.img
│   ├── uboot.img
│   ├── update.img
│   └── userdata.img
└── PATCHES
    └── kernel
        └── vmlinux

3 directories, 13 files

casey@purple-build:~/Downloads/Purple-Pi-OH-sdk/rk356x_linux_sdk/IMAGE/IDO-PI-OH3566-V1_20230907.1211_RELEASE_TEST$ du -sh IMAGES/MiniLoaderAll.bin
460K    IMAGES/MiniLoaderAll.bin

请帮忙再次确认下.
另外我现在准备提交PR, 请问具体这么操作对吗?

  1. rockchip 下创建子目录: purple-pi-oh
  2. purple-pi-oh目录中上传: uboot.img (该img需要重命名吗?)
  3. 提交PR.

谢谢!

你还需要上传那份Miniloader.bin

RK的引导有两种流程,一个是使用官方SDK,另一种是使用Uboot开源代码。前者跑出来的文件和后者跑出来的文件并不相同,但是写入的地址相同。由于官方SDK对文件有所处理,Miniloader.bin需要写入到0x0000,uboot.img写入0x4000。不太清楚目前的rebuild中的rk方案里面有无能写入到0x0000的方案。

你上面那个截图的那些bin文件主要是用来合成usbplug.bin和编译uboot.img,并不是最终成品,不可以直接烧录。

已提交, 请帮忙审阅.
谢谢!

ophub commented

单文件方案的u-boot一般是16m大小,你这个文件是4m应该不是正常文件。
你做过测试吗?这个文件的dd写入方法发一下。

单文件方案的u-boot一般是16m大小,你这个文件是4m应该不是正常文件。 你做过测试吗?这个文件的dd写入方法发一下。

Purple-Pi-OH Android/Linux固件及烧录手册

另外 4m u-boot, 我刷过机的, 可以正常开机使用.

另外提供官方的parameter.txt 分区大小供参考:

casey@purple-build:~/Downloads/Purple-Pi-OH-sdk$ cat ./rk356x_linux_sdk/IMAGE/IDO-PI-OH3566-V1_20230907.1211_RELEASE_TEST/IMAGES/parameter.txt
FIRMWARE_VER: 1.0
MACHINE_MODEL: RK3568
MACHINE_ID: 007
MANUFACTURER: RK3568
MAGIC: 0x5041524B
ATAG: 0x00200800
MACHINE: 0xffffffff
CHECK_MASK: 0x80
PWR_HLD: 0,0,A,0,1
TYPE: GPT
CMDLINE: mtdparts=rk29xxnand:0x00002000@0x00004000(uboot),0x00002000@0x00006000(misc),0x00010000@0x00008000(boot),0x00010000@0x00018000(recovery),0x00010000@0x00028000(backup),0x00080000@0x00038000(userdata),0x00040000@0x000B8000(oem),-@0x000F8000(rootfs:grow)
uuid:rootfs=614e0000-0000-4b53-8000-1d28000054a9

parameter.txt

ophub commented

现在生成的armbian.img是一个文件,你使用工具写的时候,几个文件选项是怎么选择的

现在生成的armbian.img是一个文件,你使用工具写的时候,几个文件选项是怎么选择的

你好, 这块不太懂, 不清楚具体要回答什么.

我先描述下我之前刷入armbian镜像的过程(比较曲折):

  1. armbian官方镜像使用ether 直接刷入tf卡
  2. tf卡插入开发板中, 上电, 开发板默认读取tf中的系统
  3. 启动后, 运行 armbian-install 命令将系统写入到 eMMC 中.
  4. 下电. 移除eMMC
  5. 上电启动. 系统从eMMC 中启动.
ophub commented

把你的官方下载的可以使用的armbian发个地址

我现在的rebuild不支持你这个4m文件的写入方法,如果根据你发的文档,写入这2个文件应该是这2条dd命令。

MiniLoaderAll.bin 可能不需要写入img镜像,在rk工具写入时可以用户自己选择。

# 写入 MiniLoaderAll.bin,从地址 0x00000000 开始
dd if="${bootloader_path}/MiniLoaderAll.bin" of="${loop_new}" conv=fsync,notrunc bs=1K seek=0

# 写入 u-boot,从地址 0x00004000 开始
dd if="${bootloader_path}/uboot.img" of="${loop_new}" conv=fsync,notrunc bs=1M seek=4

https://github.com/ophub/amlogic-s9xxx-armbian/blob/265ee6fad8a9ba56fc833f5eae3e656c8ece3101/rebuild#L643-L662

在这个地方,添加一个你这个设备的dd方法。

把你的官方下载的可以使用的armbian发个地址

我现在的rebuild不支持你这个4m文件的写入方法,如果根据你发的文档,写入这2个文件应该是这2条dd命令。

MiniLoaderAll.bin 可能不需要写入img镜像,在rk工具写入时可以用户自己选择。

# 写入 MiniLoaderAll.bin,从地址 0x00000000 开始
dd if="${bootloader_path}/MiniLoaderAll.bin" of="${loop_new}" conv=fsync,notrunc bs=1K seek=0

# 写入 u-boot,从地址 0x00004000 开始
dd if="${bootloader_path}/${MAINLINE_UBOOT}" of="${loop_new}" conv=fsync,notrunc bs=1M seek=4

https://github.com/ophub/amlogic-s9xxx-armbian/blob/265ee6fad8a9ba56fc833f5eae3e656c8ece3101/rebuild#L643-L662

在这个地方,添加一个你这个设备的dd方法。

官方下载的可以使用的armbian: https://www.armbian.com/station-m2/

具体说明如下:

  • Station M2: 可以跑完安装流程. 但是网卡发现不了.
  • Station P2: 可以跑完安装流程. 但是网卡发现不了.
  • Banana pi r2pro: 可以发现 eth1 网卡. 键盘带不起来, 会将其中一个usb2 识别为eth0, 因此跑不完安装流程.

把你的官方下载的可以使用的armbian发个地址

我现在的rebuild不支持你这个4m文件的写入方法,如果根据你发的文档,写入这2个文件应该是这2条dd命令。

MiniLoaderAll.bin 可能不需要写入img镜像,在rk工具写入时可以用户自己选择。

# 写入 MiniLoaderAll.bin,从地址 0x00000000 开始
dd if="${bootloader_path}/MiniLoaderAll.bin" of="${loop_new}" conv=fsync,notrunc bs=1K seek=0

# 写入 u-boot,从地址 0x00004000 开始
dd if="${bootloader_path}/uboot.img" of="${loop_new}" conv=fsync,notrunc bs=1M seek=4

https://github.com/ophub/amlogic-s9xxx-armbian/blob/265ee6fad8a9ba56fc833f5eae3e656c8ece3101/rebuild#L643-L662

在这个地方,添加一个你这个设备的dd方法。

可以指导我一下吗? 关于"在这个地方,添加一个你这个设备的dd方法。", 请问具体的 elif 判断语句应该怎么写?

把你的官方下载的可以使用的armbian发个地址

我现在的rebuild不支持你这个4m文件的写入方法,如果根据你发的文档,写入这2个文件应该是这2条dd命令。

MiniLoaderAll.bin 可能不需要写入img镜像,在rk工具写入时可以用户自己选择。

# 写入 MiniLoaderAll.bin,从地址 0x00000000 开始
dd if="${bootloader_path}/MiniLoaderAll.bin" of="${loop_new}" conv=fsync,notrunc bs=1K seek=0

# 写入 u-boot,从地址 0x00004000 开始
dd if="${bootloader_path}/uboot.img" of="${loop_new}" conv=fsync,notrunc bs=1M seek=4

https://github.com/ophub/amlogic-s9xxx-armbian/blob/265ee6fad8a9ba56fc833f5eae3e656c8ece3101/rebuild#L643-L662

在这个地方,添加一个你这个设备的dd方法。

已添加, 请审阅.
ophub/amlogic-s9xxx-armbian@68b4f46

https://github.com/ophub/amlogic-s9xxx-armbian/blob/265ee6fad8a9ba56fc833f5eae3e656c8ece3101/rebuild#L150-L154

改一下把-o参数删了 -o discard,compress=zstd:6 -o discard

请问这个是为了解决什么问题, 我没有太明白.

把你的官方下载的可以使用的armbian发个地址

我现在的rebuild不支持你这个4m文件的写入方法,如果根据你发的文档,写入这2个文件应该是这2条dd命令。

MiniLoaderAll.bin 可能不需要写入img镜像,在rk工具写入时可以用户自己选择。


# 写入 MiniLoaderAll.bin,从地址 0x00000000 开始

dd if="${bootloader_path}/MiniLoaderAll.bin" of="${loop_new}" conv=fsync,notrunc bs=1K seek=0



# 写入 u-boot,从地址 0x00004000 开始

dd if="${bootloader_path}/uboot.img" of="${loop_new}" conv=fsync,notrunc bs=1M seek=4

https://github.com/ophub/amlogic-s9xxx-armbian/blob/265ee6fad8a9ba56fc833f5eae3e656c8ece3101/rebuild#L643-L662

在这个地方,添加一个你这个设备的dd方法。

miniloader对应的是idbloader,需要写入到img。工具内选择的是usbloader

ophub commented
6.MAINLINE_UBOOT        7.BOOTLOADER_IMG
uboot.img               MiniLoaderAll.bin
dd if="${bootloader_path}/${BOOTLOADER_IMG}" of="${loop_new}" conv=fsync,notrunc bs=512 seek=64 2>/dev/null
dd if="${bootloader_path}/${MAINLINE_UBOOT}" of="${loop_new}" conv=fsync,notrunc bs=512 seek=16384 2>/dev/null

@13584452567
上面的2个文件,这么填写适用现在的dd位置?

6.MAINLINE_UBOOT        7.BOOTLOADER_IMG
uboot.img               MiniLoaderAll.bin
dd if="${bootloader_path}/${BOOTLOADER_IMG}" of="${loop_new}" conv=fsync,notrunc bs=512 seek=64 2>/dev/null
dd if="${bootloader_path}/${MAINLINE_UBOOT}" of="${loop_new}" conv=fsync,notrunc bs=512 seek=16384 2>/dev/null

@13584452567
上面的2个文件,这么填写适用现在的dd位置?

根据他发的链接内的那份手册上来看,miniloader需要写在0x0000,并不适用目前的0x40地址。还是需要添加一个引导写入方式。

写入之后不太清楚官方sdk跑出来的bootloader能否识别到内核,这个需要等编译出来之后才能测试。

奇怪的是官方关于boot的wiki上面写的从0x40开始才是SPL,不清楚指南上为什么是0x00

(如果可以的话,最好还是想办法用主线uboot编译而不是用官方sdk)

6.MAINLINE_UBOOT        7.BOOTLOADER_IMG
uboot.img               MiniLoaderAll.bin
dd if="${bootloader_path}/${BOOTLOADER_IMG}" of="${loop_new}" conv=fsync,notrunc bs=512 seek=64 2>/dev/null
dd if="${bootloader_path}/${MAINLINE_UBOOT}" of="${loop_new}" conv=fsync,notrunc bs=512 seek=16384 2>/dev/null

@13584452567
上面的2个文件,这么填写适用现在的dd位置?

根据他发的链接内的那份手册上来看,miniloader需要写在0x0000,并不适用目前的0x40地址。还是需要添加一个引导写入方式。

写入之后不太清楚官方sdk跑出来的bootloader能否识别到内核,这个需要等编译出来之后才能测试。

奇怪的是官方关于boot的wiki上面写的从0x40开始才是SPL,不清楚指南上为什么是0x00

(如果可以的话,最好还是想办法用主线uboot编译而不是用官方sdk)

我看了ophub的uboot编译文档, 确实看不懂如何操作. 你们可以帮忙构建uboot吗? 有需要用到的源码我可以提供.
谢谢!

6.MAINLINE_UBOOT        7.BOOTLOADER_IMG
uboot.img               MiniLoaderAll.bin
dd if="${bootloader_path}/${BOOTLOADER_IMG}" of="${loop_new}" conv=fsync,notrunc bs=512 seek=64 2>/dev/null
dd if="${bootloader_path}/${MAINLINE_UBOOT}" of="${loop_new}" conv=fsync,notrunc bs=512 seek=16384 2>/dev/null

@13584452567
上面的2个文件,这么填写适用现在的dd位置?

根据他发的链接内的那份手册上来看,miniloader需要写在0x0000,并不适用目前的0x40地址。还是需要添加一个引导写入方式。

写入之后不太清楚官方sdk跑出来的bootloader能否识别到内核,这个需要等编译出来之后才能测试。

奇怪的是官方关于boot的wiki上面写的从0x40开始才是SPL,不清楚指南上为什么是0x00

(如果可以的话,最好还是想办法用主线uboot编译而不是用官方sdk)

我看了ophub的uboot编译文档, 确实看不懂如何操作. 你们可以帮忙构建uboot吗? 有需要用到的源码我可以提供.
谢谢!

可否把u-boot目录压缩一份上传文叔叔,然后把链接发给我?

如果可以的话,kernel/arm64/rockchip/boot/dts/目录下对应设备的dts文件也发一份。

(百度网盘下载实在折磨人……)

ophub commented

这个官方sdk里面有安卓系统,linux系统。你安装官方的安卓系统,adb进去,把分区表的前16mb给dd备份出来。这个16 M的bootloader 文件可能直接使用到armbian,和贝壳云那样使。

sudo dd if=/dev/sdX1 of=android_partition.img bs=1M count=16

命令的sdX1改成你安卓的lsblk看到的盘符。of的位置找个可以写入的地方。可以参考文档12.11.1.1的adb方法,但导出bootloader 用上面发的命令导出完整的前16mb

https://github.com/ophub/amlogic-s9xxx-armbian/blob/main/documents/README.cn.md

这么导出来前16mb的bootloader 文件可以用贝壳云的方法写入img文件试试。

dd if="${bootloader_path}/${BOOTLOADER_IMG}" of="${loop_new}" conv=fsync,notrunc bs=512 skip=64 seek=64 2>/dev/null

6.MAINLINE_UBOOT        7.BOOTLOADER_IMG
uboot.img               MiniLoaderAll.bin
dd if="${bootloader_path}/${BOOTLOADER_IMG}" of="${loop_new}" conv=fsync,notrunc bs=512 seek=64 2>/dev/null
dd if="${bootloader_path}/${MAINLINE_UBOOT}" of="${loop_new}" conv=fsync,notrunc bs=512 seek=16384 2>/dev/null

@13584452567
上面的2个文件,这么填写适用现在的dd位置?

根据他发的链接内的那份手册上来看,miniloader需要写在0x0000,并不适用目前的0x40地址。还是需要添加一个引导写入方式。
写入之后不太清楚官方sdk跑出来的bootloader能否识别到内核,这个需要等编译出来之后才能测试。
奇怪的是官方关于boot的wiki上面写的从0x40开始才是SPL,不清楚指南上为什么是0x00
(如果可以的话,最好还是想办法用主线uboot编译而不是用官方sdk)

我看了ophub的uboot编译文档, 确实看不懂如何操作. 你们可以帮忙构建uboot吗? 有需要用到的源码我可以提供.
谢谢!

可否把u-boot目录压缩一份上传文叔叔,然后把链接发给我?

如果可以的话,kernel/arm64/rockchip/boot/dts/目录下对应设备的dts文件也发一份。

(百度网盘下载实在折磨人……)

Download link: https://wetransfer.com/downloads/170afe28fcca70848adbc741c226db8f20230908125024/58ffa54bbc37321bc67c0c3608a7dc0320230908125050/7061d0

2 items
dts.tgz
920 KB
u-boot.tgz
71 MB

你好, 我刷入了anroid, 并用adb root; adb shell进去了; 但是里边没有lsblk 命令, 我用其他命令看了一下硬盘设备, 请问应该 dd 哪一个?

rk3566_r:/dev # df -h
Filesystem            Size  Used Avail Use% Mounted on
tmpfs                 979M  820K  978M   1% /dev
tmpfs                 979M     0  979M   0% /mnt
/dev/block/mmcblk2p11  11M  144K   11M   2% /metadata
/dev/block/dm-0       933M  930M  2.8M 100% /
/dev/block/dm-2       291M  290M  908K 100% /vendor
/dev/block/dm-4       588K  584K  4.0K 100% /odm
/dev/block/dm-3       203M  203M  632K 100% /product
/dev/block/dm-1       118M  117M  380K 100% /system_ext
tmpfs                 979M     0  979M   0% /apex
tmpfs                 979M  264K  978M   1% /linkerconfig
/dev/block/mmcblk2p10 356M  112K  356M   1% /cache
/dev/block/dm-5        10G   28M   10G   1% /data
tmpfs                 979M     0  979M   0% /data_mirror
/dev/fuse              10G   28M   10G   1% /mnt/user/0/emulated
rk3566_r:/dev # lsblk
/system/bin/sh: lsblk: inaccessible or not found
127|rk3566_r:/dev # fdisk -l
/system/bin/sh: fdisk: inaccessible or not found
127|rk3566_r:/dev # blkid
/dev/block/zram0: UUID="d701e229-7ca6-4b00-b666-21bcc2b457a2" TYPE="swap"
/dev/block/mmcblk2p10: UUID="f4d2c73a-3228-4de3-a1b0-0eb76ac1f8fe" TYPE="ext4"
/dev/block/mmcblk2p11: UUID="bed0be14-48bb-4df2-a37d-98a2398c5fe4" TYPE="ext4"
rk3566_r:/dev # cat /proc/partitions
major minor  #blocks  name

   1        0       8192 ram0
   1        1       8192 ram1
   1        2       8192 ram2
   1        3       8192 ram3
   1        4       8192 ram4
   1        5       8192 ram5
   1        6       8192 ram6
   1        7       8192 ram7
   1        8       8192 ram8
   1        9       8192 ram9
   1       10       8192 ram10
   1       11       8192 ram11
   1       12       8192 ram12
   1       13       8192 ram13
   1       14       8192 ram14
   1       15       8192 ram15
 254        0    1002052 zram0
 179        0   15267840 mmcblk2
 179        1       4096 mmcblk2p1
 179        2       4096 mmcblk2p2
 179        3       4096 mmcblk2p3
 179        4       4096 mmcblk2p4
 179        5       4096 mmcblk2p5
 179        6       1024 mmcblk2p6
 179        7      40960 mmcblk2p7
 179        8      98304 mmcblk2p8
 179        9     393216 mmcblk2p9
 179       10     393216 mmcblk2p10
 179       11      16384 mmcblk2p11
 179       12       1024 mmcblk2p12
 179       13    3186688 mmcblk2p13
 179       14   11112416 mmcblk2p14
 253        0     956808 dm-0
 253        1     120676 dm-1
 253        2     298268 dm-2
 253        3     208348 dm-3
 253        4        612 dm-4
 253        5   11112416 dm-5
ophub commented
# 查看下设备是否能识别
adb devices

# 备份到合适的路径
dd if=/dev/block/mmcblk2 of=/data/local/mmcblk2.img bs=1M count=16

# 下载到电脑C盘根目录
adb pull /data/local/mmcblk2.img C:\
# 查看下设备是否能识别
adb devices

# 备份到合适的路径
dd if=/dev/block/bootdevice/by-name/misc of=/data/local/misc.img bs=1M count=16
dd if=/dev/block/bootdevice/by-name/system of=/data/local/system-part.img bs=1M count=16

# 下载到电脑C盘根目录
adb pull /data/local/xxxxxx.img C:\

目录结构和你描述的不一样, 应该选择哪个?

rk3566_r:/dev/block/by-name # ls -al
total 0
drwxr-xr-x 2 root root  380 2023-09-09 12:49 .
drwxr-xr-x 6 root root 1240 2023-09-09 12:49 ..
lrwxrwxrwx 1 root root   20 2023-09-09 12:49 backup -> /dev/block/mmcblk2p9
lrwxrwxrwx 1 root root   21 2023-09-09 12:49 baseparameter -> /dev/block/mmcblk2p12
lrwxrwxrwx 1 root root   20 2023-09-09 12:49 boot -> /dev/block/mmcblk2p7
lrwxrwxrwx 1 root root   21 2023-09-09 12:49 cache -> /dev/block/mmcblk2p10
lrwxrwxrwx 1 root root   20 2023-09-09 12:49 dtbo -> /dev/block/mmcblk2p5
lrwxrwxrwx 1 root root   21 2023-09-09 12:49 metadata -> /dev/block/mmcblk2p11
lrwxrwxrwx 1 root root   20 2023-09-09 12:49 misc -> /dev/block/mmcblk2p4
lrwxrwxrwx 1 root root   18 2023-09-09 12:49 mmcblk2 -> /dev/block/mmcblk2
lrwxrwxrwx 1 root root   23 2023-09-09 12:49 mmcblk2boot0 -> /dev/block/mmcblk2boot0
lrwxrwxrwx 1 root root   23 2023-09-09 12:49 mmcblk2boot1 -> /dev/block/mmcblk2boot1
lrwxrwxrwx 1 root root   20 2023-09-09 12:49 recovery -> /dev/block/mmcblk2p8
lrwxrwxrwx 1 root root   20 2023-09-09 12:49 security -> /dev/block/mmcblk2p1
lrwxrwxrwx 1 root root   21 2023-09-09 12:49 super -> /dev/block/mmcblk2p13
lrwxrwxrwx 1 root root   20 2023-09-09 12:49 trust -> /dev/block/mmcblk2p3
lrwxrwxrwx 1 root root   20 2023-09-09 12:49 uboot -> /dev/block/mmcblk2p2
lrwxrwxrwx 1 root root   21 2023-09-09 12:49 userdata -> /dev/block/mmcblk2p14
lrwxrwxrwx 1 root root   20 2023-09-09 12:49 vbmeta -> /dev/block/mmcblk2p6
ophub commented

dd if=/dev/block/mmcblk2 of=/data/local/mmcblk2.img bs=1M count=16

dd if=/dev/block/mmcblk2 of=/data/local/mmcblk2.img bs=1M count=16

https://we.tl/t-hw58t2IeFx

mmcblk2.img

ophub commented

你看一下贝壳云的那条配置信息,参考添加一个,打包一下试试

u-boot可以放在本地~/build-armbian/u-boot/rockchip/盒子board

你看一下贝壳云的那条配置信息,参考添加一个,打包一下试试

u-boot可以放在本地~/build-armbian/u-boot/rockchip/盒子board

好的, PR也更新了. 本地我也在试了.

你看一下贝壳云的那条配置信息,参考添加一个,打包一下试试

u-boot可以放在本地~/build-armbian/u-boot/rockchip/盒子board

本地打包报错, 请帮忙看一下:

$ sudo ./rebuild -b purple-pi-oh -k 6.1.52
[ STEPS ] Welcome to Rebuild Armbian!
[ INFO ] Server running on Ubuntu: [ Release: jammy / Host: x86_64 ] 

[ STEPS ] Start Initializing Variables...
[ STEPS ] Start searching for Armbian file...
[ INFO ] Armbian rebuild file: [ Armbian_23.08.0-trunk_6.1.52.img ], Version: [ 23.08.0 ]
[ STEPS ] Start downloading dependency files...
[ INFO ] u-boot download completed.
[ INFO ] firmware download completed.
[ STEPS ] Start querying the latest kernel version...
[ INFO ] (1.1) Auto query the latest kernel version for [ specific - 6.1.1 ]
jq: error (at <stdin>:1): Cannot iterate over null (null)
[ INFO ] (1.1) [ specific - 6.1.1 ] is latest kernel. 

[ STEPS ] Start downloading the kernel files...
[ INFO ] (1.1) [ specific - 6.1.1 ] Kernel download from [ https://github.com/ophub/kernel/releases/download/kernel_stable/6.1.1.tar.gz ]
ophub commented

首页里,安装依赖,错误是本地编译环境缺少jq.
把这个设备的dtb文件发一个,我给你打包下

ophub commented

本地测试方法:

# 先安装环境依赖,并克隆源码到本地
sudo apt-get update
sudo apt-get -y install $(curl -fsSL https://is.gd/depend_ubuntu2204_armbian)
git clone https://github.com/ophub/amlogic-s9xxx-armbian


# 添加armbian原文件并解压待用
cd amlogic-s9xxx-armbian
mkdir -p build/output/images
cd build/output/images
wget https://github.com/ophub/amlogic-s9xxx-armbian/releases/download/Armbian_jammy_save_2023.09/Armbian_23.08.0-trunk_6.1.52.img.gz
gzip -d Armbian_23.08.0-trunk_6.1.52.img.gz


# 添加u-boot和dtb,修改model文件添加自定义配置
cd ../../../
mkdir -p build-armbian/u-boot/rockchip/purple-pi-oh
# 把你的bootloader文件放进去purple-pi-oh目录
# 把你的dtb文件放在build-armbian/armbian-files/platform-files/rockchip/bootfs/dtb/rockchip目录
# 复制贝壳云(rk3328)的那行配置,修改 build-armbian/armbian-files/common-files/etc/model_database.conf 增加一行你的设备,其中的dtb名字和u-boot名字和上面你放的2个文件同名,board名字写对


# 编译armbian文件
sudo ./rebuild -b purple-pi-oh(你在model文件里添加的board名字)
# 生成的文件在build/output/images

首页里,安装依赖,错误是本地编译环境缺少jq. 把这个设备的dtb文件发一个,我给你打包下

https://we.tl/t-a53Y6jVHR4
purple-pi-oh 的 dtb: ido-pi-oh3566-v1.dtb

本地测试方法:

# 先安装环境依赖,并克隆源码到本地
sudo apt-get update
sudo apt-get -y install $(curl -fsSL https://is.gd/depend_ubuntu2204_armbian)
git clone https://github.com/ophub/amlogic-s9xxx-armbian


# 添加armbian原文件并解压待用
cd amlogic-s9xxx-armbian
mkdir -p build/output/images
cd build/output/images
wget https://github.com/ophub/amlogic-s9xxx-armbian/releases/download/Armbian_jammy_save_2023.09/Armbian_23.08.0-trunk_6.1.52.img.gz
gzip -d Armbian_23.08.0-trunk_6.1.52.img.gz


# 添加u-boot和dtb,修改model文件添加自定义配置
cd ../../../
mkdir -p build-armbian/u-boot/rockchip/purple-pi-oh
# 把你的bootloader文件放进去purple-pi-oh目录
# 把你的dtb文件放在build-armbian/armbian-files/platform-files/rockchip/bootfs/dtb/rockchip目录
# 修改 build-armbian/armbian-files/common-files/etc/model_database.conf 增加一行你的设备,其中的dtb名字和u-boot名字和上面你放的2个文件同名,board名字写对


# 编译armbian文件
sudo ./rebuild -b purple-pi-oh(你在model文件里添加的board名字)
# 生成的文件在build/output/images

跑完了 rebuild 结果如下:

$ sudo ./rebuild -b purple-pi-oh -k 6.1.52
[ STEPS ] Welcome to Rebuild Armbian!
[ INFO ] Server running on Ubuntu: [ Release: jammy / Host: x86_64 ] 

[ STEPS ] Start Initializing Variables...
[ STEPS ] Start searching for Armbian file...
[ INFO ] Armbian rebuild file: [ Armbian_23.08.0-trunk_6.1.52.img ], Version: [ 23.08.0 ]
[ STEPS ] Start downloading dependency files...
[ INFO ] firmware download completed.
[ STEPS ] Start querying the latest kernel version...
[ INFO ] (1.1) Auto query the latest kernel version for [ specific - 6.1.1 ]
[ INFO ] (1.1) [ specific - 6.1.52 ] is latest kernel. (这里之前跑不通, 写死为 6.1.52 了)

[ STEPS ] Start downloading the kernel files...
[ INFO ] (1.1) [ specific - 6.1.52} ] Kernel download from [ https://github.com/ophub/kernel/releases/download/kernel_stable/6.1.52.tar.gz ]
[ INFO ] All [ 6 ] kernel files are sha256sum checked to be complete.

[ INFO ] [ 1 ] lists of Armbian board: [ purple-pi-oh ]
[ INFO ] ROOTFS type: [ ext4 ]
[ INFO ] Kernel Repo: [ ophub/kernel ], Kernel Usage: [  ] 

[ INFO ] Server space usage before starting to compile: 
Filesystem     Type  Size  Used Avail Use% Mounted on
/dev/sda3      ext4  251G   16G  223G   7% / 

[ STEPS ] Start building Armbian...
(1.1) Start building Armbian [ purple-pi-oh - stable/6.1.52 ]. Remaining space is 222G.
 [🌿] (1/7) Extract armbian files.
 [🌿] (2/7) Make new armbian image.
 [🌿] (3/7) Copy the Armbian files.
 [🌿] (4/7) Replace kernel files.
 [🌿] (5/7) Refactor bootfs files.
 [🌿] (6/7) Refactor rootfs files.
 [🌿] (7/7) Clear temporary files.
(1.1) Armbian build successfully. 

[ STEPS ] Server space usage after compilation: 
Filesystem     Type  Size  Used Avail Use% Mounted on
/dev/sda3      ext4  251G   17G  222G   7% / 

[ SUCCESS ] All process completed successfully.

输出结果为:

$ ll build/output/images/
-rw-r--r-- 1 root  root   750421837  9月 10 11:58 Armbian_23.08.0_rockchip_purple-pi-oh_jammy_6.1.52_server_2023.09.10.img.gz

解压为img后, 刚试了下用 rkdevtool 烧写, 报错:

image

现在在尝试用ether 写入tf卡. 写入后tf卡插到purple-pi-oh, 上电, 启动失败.

@ophub @13584452567 嗨, 请问有进展吗? 谢谢

@ophub @13584452567 两位大神, 帮帮忙吧. 有哪儿需要我做的, 我随时都可以响应的. 谢谢了

@ophub @13584452567 两位大神, 请帮帮忙吧. 真的需要你们的支持. 谢谢!

ophub commented

我没使用过这个多文件的系统,不了解怎么写入他的u-boot。现在的镜像是单文件的。