ophub / amlogic-s9xxx-armbian

Support for Armbian in Amlogic, Rockchip and Allwinner boxes. Support a311d, s922x, s905x3, s905x2, s912, s905d, s905x, s905w, s905, s905l, rk3588, rk3568, rk3399, rk3328, h6, etc.
GNU General Public License v2.0
5.8k stars 1.87k forks source link

腾讯极光盒子3pro(S905X3-B)盒子测试 #506

Closed livelier closed 2 years ago

livelier commented 2 years ago

你好,o大 我在测试一款S905X3盒子,因为dtb中没有对应这款盒子的型号,抱着试试看的想法,所以每个dtb都测试了1次 测试镜像是 Armbian_22.08.0_Aml_s905x3_jammy_5.10.136_server_2022.08.14 使用tf卡+读卡器接usb接口,测试了如下dtb及测试结果

1 可以进入系统 识别网卡 系统负载52%左右

meson-sm1-a95xf3-air-gbit.dtb
meson-sm1-h96-max.dtb meson-sm1-h96-max-x3.dtb meson-sm1-hk1box-vontar-x3.dtb meson-sm1-tx3-qz.dtb meson-sm1-ugoos-x3.dtb meson-sm1-x96-air-gbit.dtb meson-sm1-x96-max-plus-100m.dtb meson-sm1-x96-max-plus.dtb

2 可以进入系统 不识别网卡 系统负载28%左右

meson-sm1-a95xf3-air.dtb meson-sm1-tx3-bz.dtb meson-sm1-x96-air.dtb meson-sm1-x96-max-plus-ip1001m-2.dtb meson-sm1-x96-max-plus-ip1001m.dtb

3 可以进入系统,wifi bt 不识别 系统负载52-54%左右

meson-sm1-bananapi-m5.dtb meson-sm1-odroid-c4.dtb meson-sm1-odroid-hc4.dtb

4 可以引到,但不能进入系统 提示 缺少模块,uuid不存在等

meson-sm1-khadas-vim3l.dtb meson-sm1-sei610.dtb meson-sm1-x96-max-plus-q2.dtb

测试发现问题,

使用 #1,#2的dtb 都存在一样的问题,wifi和bt,不能同时驱动起来,只能驱动其中一个,驱动后可正常使用

btmtksdio.ko文件改名,后重启后wifi即可正常使用,反之bt可正常使用 发现以下两个文件,wifi和bt谁先加载谁就可以正常使用,后加载的会提示找不到mt7663pr2h.bin和无法加载这两个文件mt7663pr2h_rebb.bin /usr/lib/firmware/mediatek/mt7663pr2h.bin /usr/lib/firmware/mediatek/mt7663pr2h_rebb.bin

我知道这个问题应该是盒子硬件和 dtb或驱动没有正确匹配所致,可能需要专用的dtb或是驱动,因为镜像里没有这款盒子的dtb文件

盒子没有螺丝,我先研究一下怎么拆开,稍后我提供一下电路板照片

稍后请o大,看一下硬件,系统后续能否对这款盒子给到支持,谢谢你

第一次githun 反馈测试问题 不太懂这上边的规矩,如有不妥,还请指正,再次谢谢

livelier commented 2 years ago

稍后,以下两种分区表,我都测试一下5.15

BLANK1=68 BOOT=512 BLANK2=458  1038  安卓系统获取的分区
BLANK1=108 BOOT=512 BLANK2=562  1182  DDBR备份获取的分区
livelier commented 2 years ago
Armbian_22.08.0_Aml_s905x3_jammy_5.10.137_server_2022.08.21.img

/boot/uEnv.txt
FDT=/dtb/amlogic/meson-sm1-skyworth-lb2004-a4091.dtb

/boot/u-boot.ext    //默认u-boot-x96maxplus.bin版本

/etc/amlogic_model_database.conf
521: skyworthbox:s905x3:meson-sm1-skyworth-lb2004-a4091.dtb:u-boot-x96maxplus.bin:/usr/lib/u-boot/x96maxplus-u-boot.bin.sd.bin:/usr/lib/u-boot/hk1box-bootloader.img

/usr/sbin/armbian-install   // 当时是第229行前面加盒子分区判断
     elif [[ "${FDTFILE}" == "meson-sm1-skyworth-lb2004-a4091.dtb" ]]; then
         BLANK1="68"
         BOOT="512"
         BLANK2="458"

armbian-install 参数不加 no

这是我最开始时,第1次写入emmc的记录, 那次写入emmc后,可以emmc启动5.10.137,但写入emmc后,不能usb tf卡启动5.10.137。 需要dd回安卓bootloader 才能usb tf卡启动5.10.137

ophub commented 2 years ago

配置文件错了,后面的2个值都改为NA

521: skyworthbox:s905x3:meson-sm1-skyworth-lb2004-a4091.dtb:u-boot-x96maxplus.bin:NA:NA

livelier commented 2 years ago

是的。我上面是说,可以启动emmc的操作记录。只有那次成功启动过emmc。

现在是按照后面2个NA来操作。

ophub commented 2 years ago

lb2004_u-boot-test-v2.tar.gz

又做了一个,你再试试,5.15/5.10都可以测试,只要复制了u-boot.emmc就都会自动调用。

ophub commented 2 years ago

image

这个极光盒子的905x3-B和905x3可能存在一些差异,cpu的id和普通的905x3也不同

livelier commented 2 years ago

lb2004_u-boot-test-v2.tar.gz 使用这个版本,测试5.10和5.15 都不能emmc启动。 5.10.141.session.log.txt 5.15.62.session.log.txt

5.15 usb启动需要新增 /boot/u-boot.ext,才能usb启动。

ophub commented 2 years ago

目前没有其他测试方案了。你先把EMMC里恢复成安卓原厂系统,Armbian在USB使用一段时间吧,等有了新方案再测试。

livelier commented 2 years ago

刚刚确定,这款盒子使用的Aml_Burn_Tool版本是V2,libusb-win32 Usb Devices驱动也是V2自带的版本。 不支持Aml_Burn_Tool v3(V3的驱动也不支持),打开V3会提示切换到V2。以上确定是通过解决短接点后验证到的,准确无误。

该有的基本都有了,还差1个img刷机包和emmc启动,哈哈哈哈。距离成功不会太遥远,我相信。

ophub commented 2 years ago

争取找到他的img,调试就更方便点了。

livelier commented 2 years ago

以这个为例,501:X96 Max+:s905x3:meson-sm1-x96-max-plus.dtb:u-boot-x96maxplus.bin:/usr/lib/u-boot/x96maxplus-u-boot.bin.sd.bin:/usr/lib/u-boot/hk1box-bootloader.img

UBOOT_OVERLOAD // u-boot.ext 或 u-boot.emmc 文件方式使用 MAINLINE_UBOOT // 他是什么方式使用? ANDROID_UBOOT // 覆盖安卓bootloader分区,分区方式使用?

o大,我不太清楚他们的使用方式,可以说明一下吗?

ophub commented 2 years ago

MAINLINE_UBOOT是覆盖/代替原厂的安卓分区表,实现整个emmc空间均可使用。

ANDROID_UBOOT这个是个别的盒子,替换成使用别的盒子的安卓分区表,如s905x3的x96max+就换用了hk1的(难道你在暗示,极光要不要试试这个?可是你没img,如果…那么…但是…)使用这个要跳过不安全的分区,只能使用部分emmc空间

UBOOT_OVERLOAD和前面的两个不同,他不dd覆盖现有的分区表,是通过软件重载的方式对5.10+内核进行启动支持。

livelier commented 2 years ago
/etc/amlogic_model_database.conf
521: skyworthbox:s905x3:meson-sm1-skyworth-lb2004-a4091.dtb:u-boot-x96maxplus.bin:/usr/lib/u-boot/x96maxplus-u-boot.bin.sd.bin:/usr/lib/u-boot/hk1box-bootloader.img

我在想,我第一次写入emmc并成功启动emmc时,是上面的配置。

想法是有的,不是暗示。但是不清楚,成功启动emmc时,是MAINLINE_UBOOT和ANDROID_UBOOT谁的作用?

当时写入emmc并成功启动emmc,armbian-install 没有加no 固件是5.10.137

后来是在emmc启动后 dd回安卓BootLoader,因为那次写入后usb不可用

ophub commented 2 years ago

分区被MAINLINE_UBOOT覆盖了。启动时还用了UBOOT_OVERLOAD

用MAINLINE_UBOOT的时候就不用ANDROID_UBOOT,你在armbian-install后面加了no就是反过来,不用MAINLINE_UBOOT,而用ANDROID_UBOOT(有ANDROID_UBOOT就用,没有跳过)

https://github.com/ophub/amlogic-s9xxx-armbian/blob/c3c2c1ab423e8e54c7d7d2e937f2911a4e73863a/build-armbian/common-files/rootfs/usr/sbin/armbian-install#L250-L263

livelier commented 2 years ago

也就是说,我第一次写入emmc并成功启动emmc,相当于是这样的? 521: skyworthbox:s905x3:meson-sm1-skyworth-lb2004-a4091.dtb:u-boot-x96maxplus.bin:/usr/lib/u-boot/x96maxplus-u-boot.bin.sd.bin:NA

写入参数 不加No

通过MAINLINE_UBOOT 启动,然后在利用UBOOT_OVERLOAD 启动了emmc ?

ophub commented 2 years ago

你加了no就使用了ANDROID_UBOOT,因为这个文件存在。

当最后的两个值都是NA时,会把刚备份的mybootloader再写回去,等于什么都没改变。

livelier commented 2 years ago

o大,我想勇敢的再尝试一次,还原一下emmc成功启动的环境,虽然usb不可用,但是可以ttl?,或许可以拿到更有参考意义的信息。虽然我没有IMG刷机包,但是可以emmc启动,我就可以dd回安卓BootLoader或ddbr回安卓。

但我不知道,5.10.137 到现在的5.10.141改变了什么?我应该使用他们谁来做这个操作

livelier commented 2 years ago

等下晚饭回来,我找一下5.10.137这个版本,操作一下。大不了返厂重新来过。o大,请祝我好运,谢谢你。哈哈哈哈哈

ophub commented 2 years ago

可千万别,这是科学,不能碰运气。就先在usb使用吧。s905x3的MAINLINE_UBOOT上次已经验证了,写入了又不能从usb启动了。

等有了img再试吧

livelier commented 2 years ago

o大,我很幸运,真的,我成功的自制了盒子的img刷机包,在盒子ANDROID_UBOOT被替换MAINLINE_UBOOT后,使用USB_Burning_Tool v2.2.4 烧录成功,重启盒子后可以正常恢复安卓系统,并且安卓分区表与之前的数据是相同的。

这回我可以放心的玩这款盒子了,哈哈哈哈。

时间太晚了,明天我把emmc能够成功启动的 ttl日志,以及使用skyworth-lb2004-u-boot的emmc启动日志都传上来。

我相信科学,也相信你。碰运气是在拥有过去的依据为基础,才会尝试所谓的“碰运气”。

ophub commented 2 years ago

人才啊,恭喜恭喜。 你有测试刷入之前给你编译的MAINLINE_UBOOT吗?刷入后能不能使用?有了MAINLINE_UBOOT不用UBOOT_OVERLOAD也可以使用,而且只跳过开始的68mb即可,后面都可以满EMMC写入使用。

能不能分享一下你的img文件,我备份到 https://github.com/ophub/kernel/releases/tag/tools 这个地方,方便其他朋友下载使用。还有你的盒子上刷机短接点位置,在主板图片上标识一下。

livelier commented 2 years ago

支持这款盒子img刷机工具软件 Amlogic USB Burning Tool v2.2.4.exe.gz

我没有示波仪,所以没有尝试短接点。我采用的短接方式,使用一种叫短接器的设备,他是hdmi接口。外观类似hdmi诱骗器的样子。 image

关于img刷机包,暂时还不能分享。刷机时工具页面没有任何错误提示,可以100%烧录完成,可以正常启动安卓系统。但是在刷机时ttl日志中有 4种错误 提示。我不清楚,也不知道他们会影响什么。也不能保证其他人能否正常使用。我需要在其他盒子验证我制作img刷机包的方法,确定这个方法是可行的,或者制作出来的仅仅是救砖刷机包。那时候才可以分享。 刷机日志 安卓启动日志

下面这些提示,在“刷机日志”中可以查看。

第91行
ERROR:   Error initializing runtime service opteed_fast

第174-175行,第190-191行
emmc/sd response timeout, cmd8, cmd->cmdarg=0x1aa, status=0x1ff2800
emmc/sd response timeout, cmd55, cmd->cmdarg=0x0, status=0x1ff2800

第219行
*** Warning - bad CRC, using default environment

第424行
[WRN]total 0x200 < tranferred 0x400
livelier commented 2 years ago

下面是使用MAINLINE_UBOOT一些反馈情况 使用MAINLINE_UBOOT:x96maxplus-u-boot.bin.sd.bin 盒子可以emmc启动,启动后usb接口不识别任何设备,ttl日志x96maxplus-u-boot.bin.sd.bin.emmc-session.log

使用MAINLINE_UBOOT:skyworth-lb2004-u-boot.bin.sd.bin(来自 skyworth-lb2004_u-boot-test-v2) 盒子不能emmc启动,不能usb启动,ttl日志 skyworth-lb2004_u-boot-test-v2.usb-session.log

这款盒子 MAINLINE_UBOOT或UBOOT_OVERLOAD 启动emmc 下面红框部分可能是关键点。 之前有进入u-boot 模式 mmc list 查到他有3个mmc ,不知道为什么我现在无法进入u-boot模式

image

ophub commented 2 years ago

521:Tencent-Aurora-3Pro:s905x3:meson-sm1-skyworth-lb2004-a4091.dtb:u-boot-x96maxplus.bin:NA:/usr/lib/u-boot/hk1box-bootloader.img 你试试这个组合,先刷会你的安卓固件,然后使用HK1的安卓bootloader

livelier commented 2 years ago

521:Tencent-Aurora-3Pro:s905x3:meson-sm1-skyworth-lb2004-a4091.dtb:u-boot-x96maxplus.bin:NA:/usr/lib/u-boot/hk1box-bootloader.img ttl-session.log

无法启动

livelier commented 2 years ago

521:Tencent-Aurora-3Pro:s905x3:meson-sm1-skyworth-lb2004-a4091.dtb:u-boot-skyworth-lb2004.bin:x96maxplus-u-boot.bin.sd.bin:NA 我在试试这样的组合

ophub commented 2 years ago

你使用x96max主线u-boot,可以从emmc启动,是无法再从usb启动还是进操作系统?在armbian从emmc启动后再插入usb也不识别?lsblk看看能不能识别到。

livelier commented 1 year ago

h96maxx3-u-boot.bin.sd.bin hk1box-u-boot.bin.sd.bin hk1box-bootloader.img x96maxplus-u-boot.bin.sd.bin 分别测试以上U-BOOT,只有x96maxplus-u-boot.bin.sd.bin 可以emmc启动。 UBOOT_OVERLOAD替换u-boot-x96maxplus.bin过去制作的任意版本都可以emmc启动。

使用x96maxplus-u-boot.bin.sd.bin写入emmc,usb接口不能使用,插入任何设备都不识别,lsblk仅显示emmc设备。

skyworth-lb2004-u-boot.bin.sd.bin任意版本都不能emmc启动,一旦写入,USB也不能启动。

我不会编译u-boot,我尝试把x96maxplus-u-boot.bin.sd.bin包含的dtb内容二进制方式提取,并替换到skyworth-lb2004-u-boot.bin.sd.bin中,写入emmc后,他开始启动安卓系统?emmc驱动正常啦?但不能正常启动因为安卓系统已经不完整,这是正常的。

o大,难道x96maxplus-u-boot.bin.sd.bin包含的dtb中含有与我盒子启动emmc时所需的代码?而skyworth-lb2004-u-boot.bin.sd.bin包含的dtb没有包含?所以他不能启动emmc。我可以这样理解吗?

ophub commented 1 year ago

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

你看看我写的文档,我写教程就是在制作x96maxplus。x96maxplus-u-boot.bin.sd.bin的源码在f大的仓库里。

我建议你在x96maxplus-u-boot.bin.sd.bin上修改dtb为skyworth会更好弄。

livelier commented 1 year ago

x96maxplus-u-boot.bin.sd.bin上修改dtb为skyworth,有尝试二进制方式替换,但是结果不能启动emm和usb。

https://github.com/ophub/amlogic-s9xxx-armbian/blob/main/build-armbian/armbian-docs/README.cn.md 12.11 如何制作 u-boot 文件,按方法我尝试一下。

ophub commented 1 year ago

dts你用上次f大给你编译的这个文件

livelier commented 1 year ago

o大,重新编译dtb,是在这个库里直接改吗? 没有搞懂,直接去改好像不怎么礼貌的感觉。我也想尝试重新编译dtb,去掉设备没有的内容,比如红外线之类的。 https://github.com/unifreq/linux-5.15.y/blob/main/arch/arm64/boot/dts/amlogic/meson-sm1-skyworth-lb2004-a4091.dts https://github.com/unifreq/linux-5.10.y/blob/main/arch/arm64/boot/dts/amlogic/meson-sm1-skyworth-lb2004-a4091.dts

ophub commented 1 year ago

这几个不同版本的仓库里都有这个文件。你现在用的5.15内核的话就使用这个。 你fork仓库就是独立的,自己任意修改测试即可。你是本地编译?

livelier commented 1 year ago

fork你的仓库后,有如下选项。fork unifreq的仓库,没有下边的选项,有点无从下手的感觉。 image

本地编译,没有找到教程,就更不知道怎么做了。

ophub commented 1 year ago

你把我的仓库也fork一个,改这个路径的文件,添加一个你的仓库的名字

https://github.com/ophub/amlogic-s9xxx-armbian/blob/8246a07f61bf59fb274df0c68f0b3f4caaa30aaa/.github/workflows/compile-kernel.yml#L19

- livelier

你编译时选择你的名字,就是从你名下的仓库加载源码。

你把f大内核库也fork一个,改好了,编译时选择自己的仓库即可编译,从actions里面可以看到内核源码下载仓库来源地址。

livelier commented 1 year ago

好的,我尝试一下。感谢o大指导,谢谢你

livelier commented 1 year ago

dtb编译流程学会啦,谢谢你o大。 在请教一下,你的amlogic-s9xxx-armbian仓库我fork之后可以创建分支并使用分支。 fork来的linux-5.10.y仓库,我也想使用分支。要如何设置才能使用fork来的linux-5.10.y仓库的分支? 我感觉这么说有点饶舌。

明天尝试编译u-boot

ophub commented 1 year ago

https://github.com/livelier/amlogic-s9xxx-armbian/blob/main/.github/workflows/compile-kernel.yml

就是上面的方法,在你fork的livelier/amlogic-s9xxx-armbian的compile-kernel.yml文件里面加 - livelier

你选择这个名字,内核选择5.10.xxx就是从你的仓库读取livelier/linux-5.10.y的内核源码

https://github.com/livelier/linux-5.10.y

你要改什么就在你fork的内核源码仓库里改,改完了就选上面的编译。你可以选-个测试,比如5.10.y,测试通过了可以直接复制给其他的5.15/5.4/5.19等使用

livelier commented 1 year ago

谢谢你o大,已经掌握流程。在测试dtb,已经测出这款盒子蓝牙无线模块支持sdr104模式

ophub commented 1 year ago

恭喜你。只编译dtb文件,下拉菜单选dtbs选项即可。几分钟就编好了,测试起来也快。你就不断调整自己fork的linux-5.10.y内核源码即可

livelier commented 1 year ago
&uart_A {
    status = "disabled";
    pinctrl-0 = <&uart_a_pins>, <&uart_a_cts_rts_pins>;
    pinctrl-names = "default";
    uart-has-rtscts;

    bluetooth: bluetooth {
        compatible = "mediatek,mt7921s-bluetooth";
        reset-gpios = <&gpio GPIOX_17 GPIO_ACTIVE_HIGH>;
        host-wake-gpios = <&gpio GPIOX_19 GPIO_ACTIVE_HIGH>;
        current-speed = <921600>;
        vcc-supply = <&vddao_3v3>;
        vddio-supply = <&vddio_ao1v8>;
        status = "disabled";
    };
};

我把这部分代码,删掉了,蓝牙和无线依然正常,不知道会不会有其他影响。

执行编译的时候,竟然有时候会出错,出现死循环或压缩包内缺少部分dtb文件,重新执行一次又正常啦

ophub commented 1 year ago

brcm好像必须加。其他的可以不加,会自动匹配

livelier commented 1 year ago

好的,这款盒子没有brcm硬件。

o大,5.10.内核有没有支持? mmc-hs400-1_8v; no-sd; no-mmc; no-sdio; 这些参数,我想尝试 这些做法研究这款盒子u-boot。dtb基本测试好了。

&sd_emmc_a {
    no-sd;
    no-mmc;
    sd-uhs-sdr104;
    max-frequency = <200000000>;
...
&sd_emmc_c {
    no-sd;
    no-sdio;
    mmc-hs400-1_8v;
    max-frequency = <200000000>;
ophub commented 1 year ago

在仓库点搜索,找一下相关代码。安卓代码不能直接复制,要根据主线内核的标准改一下。

livelier commented 1 year ago

我没有找到 no-sd,no-sdio,mmc-hs400-1_8v; 这些代码的相关信息,细节调整以后再说。

o大,我在制作u-boot时,遇到了一些问题,还请指教一下。

按照下面两个链接,按顺序步骤,尝试。 https://github.com/ophub/amlogic-s9xxx-armbian/tree/main/build-armbian/armbian-docs#12113-make-the-u-boot-file https://github.com/unifreq/u-boot/blob/master/doc/board/amlogic/x96max-plus.rst

执行第三行时,第四行提示u-boot.bin没有这样的文件或目录。这个u-boot.bin ,我在amlogic-boot-fip和u-boot源码目录 find . -name u-boot.bin 没有找到u-boot.bin。这个文件是在哪一个步骤获得?没有搞懂。

root@armbian:~/make_uboot/u-boot# mkdir fip
root@armbian:~/make_uboot/u-boot# cp $FIPDIR/* fip/
root@armbian:~/make_uboot/u-boot# cp u-boot.bin fip/bl33.bin
cp: cannot stat 'u-boot.bin': No such file or directory
root@armbian:~/make_uboot/u-boot#

执行下面这段

$FIPDIR/fip/aml_encrypt_g12a --bl30sig --input fip/bl30_new.bin \
  --output fip/bl30_new.bin.g12a.enc \
  --level v3

提示

root@armbian:~/make_uboot/u-boot# $FIPDIR/fip/aml_encrypt_g12a --bl30sig --input fip/bl30_new.bin \
  --output fip/bl30_new.bin.g12a.enc \
  --level v3
-bash: /root/make_uboot/amlogic-boot-fip/x96max-plus/fip/aml_encrypt_g12a: No such file or directory
root@armbian:~/make_uboot/u-boot#

修改后执行,提示

root@armbian:~/make_uboot/u-boot# ./fip/aml_encrypt_g12a --bl30sig --input fip/bl30_new.bin \
  --output fip/bl30_new.bin.g12a.enc \
  --level v3
-bash: ./fip/aml_encrypt_g12a: cannot execute binary file: Exec format error
root@armbian:~/make_uboot/u-boot#

需要某种依赖包?还是哪里操作错了?或是系统版本不对?我没有搞懂。我在5.10.137内核版本下操作的。

ophub commented 1 year ago

https://github.com/unifreq/u-boot/blob/master/doc/board/amlogic/x96max-plus.rst#u-boot-compilation

往上面看一段,在 https://github.com/unifreq/u-boot/ 中 make 得到的 u-boot

U-Boot compilation

$ export CROSS_COMPILE=aarch64-none-elf-
$ make x96max-plus_defconfig
$ make

编译工具链自己安装,可以使用最新的版本。jammy的系统可以直接指定,自带最新版本了。其他的自己下载工具链编译包,解压到一个地方,手动指定下路径,可以参考内核编译的方法。

# build toolchain
export CROSS_COMPILE='aarch64-linux-gnu-'
export ARCH=ARM64

cd u-boot/
make distclean
make x96max-plus_defconfig
make -j8

多看几次我写的说明文档,把2个仓库的源码相对路径,文件的生成目录看好了,如果你改了目录就改命令。

livelier commented 1 year ago

u-boot.bin可以得到了,😂

aml_encrypt_g12a: cannot execute binary file: Exec format error 找到原因了。

root@armbian:~/make_uboot/u-boot/fip# file aml_encrypt_g12a
aml_encrypt_g12a: ELF 64-bit LSB executable, x86-64, version 1 (GNU/Linux), statically linked, for GNU/Linux 2.6.24, BuildID[sha1]=2ebd050b59522c98cc3b1febfc56e361e1c743c6, with debug_info, not stripped

我的系统

root@armbian:~/make_uboot/u-boot/fip# uname -a
Linux armbian 5.10.137-ophub #1 SMP PREEMPT Mon Aug 22 01:48:05 UTC 2022 aarch64 aarch64 aarch64 GNU/Linux

感谢o大,手把手指导,我弄个x86-64 Linux system,再继续后面 aml_encrypt_g12a 的部分。

ophub commented 1 year ago

不用谢我,我是一个菜鸟,我会的都是从f大那学到的,三天两头的问他各种问题。基本上大家问的问题我不会的,我都是找他请教,两年来都不知道问了多少问题了。可惜我是个外行,从0开始了解,f大总是图文并茂地用各种资源帮我理解,我做了很多笔记,学会一点要看很多遍。

今天樱花🌸刚开放的时候,我在群里看F大指导s905l3a开发u-boot,我就做了笔记,等我了解了,跑完全程的时候,都吃上了月饼🥮。像这样的慢生活多了,学编内核也学了半年。我悟性太差,也帮不了你什么忙。

github.com的免费空间就是x86_64,你指定用ubuntu(jammy)跑Actions即可,复制一个现在的yml改一下

https://github.com/ophub/amlogic-s9xxx-armbian/blob/8246a07f61bf59fb274df0c68f0b3f4caaa30aaa/.github/workflows/build-armbian.yml#L84

livelier commented 1 year ago

我是个超级菜鸟 😁😁😁🤣 参考你的build-armbian.yml,实现了跑Actions制作u-boot。测试了很多个版本主线u-boot,目前还有些小问题,在调整dts中。主线u-boot已经可以emmc启动,并且usb可以工作啦。

不过有些小问题,还要麻烦o大出马。这些小问题解决后,盒子就完美支持啦。🎉🎉🎉

使用自制主线u-boot写入emmc后,可以emmc启动。usb可以工作,但是不能usb启动。在u-boot模式下却可以usb启动。 u-boot模式下执行 boot 会emmc启动,执行run usb_boot 会usb启动,两个usb接口都支持这样启动。

也有查看emmc/boot/下的boot.scr 几乎都是变量,无从下手😂 但是替换成usb默认的boot.scr boot.ini 会usb启动,但不能emmc启动。换回emmc/boot/下默认的这2个文件又能emmc启动,但不能usb启动。

=> mmc list
mmc@ffe07000: 0
=> mmc info
Device: mmc@ffe07000
Manufacturer ID: ea
OEM: 10e
Name: SPeMM 
Bus Speed: 52000000
Mode: MMC High Speed (52MHz)
Rd Block Len: 512
MMC version 5.1
High Capacity: Yes
Capacity: 29.1 GiB
Bus Width: 8-bit
Erase Group Size: 512 KiB
HC WP Group Size: 8 MiB
User Capacity: 29.1 GiB WRREL
Boot Capacity: 4 MiB ENH
RPMB Capacity: 4 MiB ENH
Boot area 0 is not write protected
Boot area 1 is not write protected
=> mmc part

Partition Map for MMC device 0  --   Partition Type: DOS

Part    Start Sector    Num Sectors     UUID            Type
  1     221184          1046528         c71b9444-01     0c
  2     2420736         58650624        c71b9444-02     83
=> usb start
starting USB...
Bus usb@ff500000: Register 3000140 NbrPorts 3
Starting the controller
USB XHCI 1.10
scanning bus usb@ff500000 for devices... cannot reset port 1!?
2 USB Device(s) found
       scanning usb for storage devices... 1 Storage Device(s) found
=> usb part

Partition Map for USB device 0  --   Partition Type: DOS

Part    Start Sector    Num Sectors     UUID            Type
  1     139264          522240          950f9d79-01     0c
  2     663552          5242880         950f9d79-02     83
=> run usb_boot

IDE device 0: Vendor: SanDisk  Rev: 2920 Prod: SDDR-B531       
            Type: Removable Hard Disk
            Capacity: 122112.0 MB = 119.2 GB (250085376 x 512)
** Bad device specification usb -bootable **
Scanning usb :1...
Found U-Boot script /boot.scr
1123 bytes read in 1 ms (1.1 MiB/s)
## Executing script at 08000000
Start AMLOGIC mainline U-boot
## Error: "bootfromsd" not defined
368 bytes read in 1 ms (359.4 KiB/s)
## Error: "mac" not defined
## Error: "eth_mac" not defined
ethaddr=06:05:2d:75:15:1d
24734208 bytes read in 259 ms (91.1 MiB/s)
11432802 bytes read in 121 ms (90.1 MiB/s)
48203 bytes read in 3 ms (15.3 MiB/s)
Moving Image from 0x8080000 to 0x8200000, end=9a80000
## Loading init Ramdisk from Legacy Image at 13000000 ...
   Image Name:   uInitrd
   Image Type:   AArch64 Linux RAMDisk Image (gzip compressed)
   Data Size:    11432738 Bytes = 10.9 MiB
   Load Address: 00000000
   Entry Point:  00000000
   Verifying Checksum ... OK
## Flattened Device Tree blob at 08008000
   Booting using the fdt blob at 0x8008000
   Loading Ramdisk to f0433000, end f0f1a322 ... OK
   Loading Device Tree to 00000000f0424000, end 00000000f0432c4a ... OK

Starting kernel ...

usb3.0接口 会有这个错误提示scanning bus usb@ff500000 for devices... cannot reset port 1!? usb2.0没有错误提示,我在尝试修改usb3.0接口的dts。

希望o大在下个版本更新,能够增加对TCA6507的支持。 目前是这样的 在/boot/config-5.10.144-ophub 5709行 # CONFIG_LEDS_TCA6507 is not set https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/plain/drivers/leds/leds-tca6507.c 这个链接可能对支持TCA6507有帮助。

ophub commented 1 year ago

CONFIG_LEDS_TCA6507=y 测试有效?那就把config都启用即可