查看: 1433|回复: 3
上一主题 下一主题
[分享]

TX3 Mini:Android 电视盒上的Mainline Linux

[复制链接]
跳转到指定楼层
楼主
发表于 2020-8-31 10:54 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
我一直发现Raspberry Pi外壳和Pi的连接器位置在美学上都不令人满意,电源连接器从侧面伸出,以太网从背面伸出(反之亦然)。想象一下当我浏览Linux的github镜像时的兴奋(就像您所做的那样),我遇到了一个名为Tanix TX3 Mini的Android电视盒的dts。

TX3 Mini:Android 电视盒上的Mainline Linux

大多数情况下,如果没有自定义内核,则不支持此功能。好消息是,他们似乎已将SSV6051 WIFI芯片换成了一个知名的RTL8723BS,该芯片正处于Linux阶段。该板看起来不再具有吸引力。

它具有以下规格:

Amlogic S905W芯片组
四核1.2GHz 64位Cortex-A53
马里450
1或2 GiB DDR3内存
eMMC闪存的8或16 GiB
10 / 100Mbit以太网
HDMI输出高达4K30P

它的价格也很便宜,因此我对让它运行Mainline Linux感到很满意。我得到了2 GiB RAM和16 GiB eMMC模型。它们通常在速卖通或Ebay上售价约30美元,其中包括一个盒子(duh!),电源砖,HDMI电缆和一个IR遥控器(我正在用我的电视机来控制我的电视条形音箱,整洁!)。

论坛上有关于LibreELEC和armbian的图片,但是我认为,它们需要您按住主板上的小按钮才能从sd卡启动,并且还运行与原始Android OS相同的内核。那简直是行不通的!

警告!如果您只是想一步一步地回顾一下,这篇文章是相当技术信息的汇集。

U型靴
该电视盒随附安装了Android的软件,并具有较旧的Linux和U-boot版本。大多数共享相同芯片组的电视盒都基于相同的参考设计,并且板上包含一个未焊接的串行接头,多么方便!

TX3 Mini:Android 电视盒上的Mainline Linux

将引脚接头焊接到串行端口并连接到串行端口后,您会看到它正在运行U-Boot v2015.01,是的!这个版本无法启动现代Linux映像,我们将不得不编译自己的映像!

事实证明,这比我想象的要复杂。

Bootloader阶段是什么!?
好的,我不是专家,但是aarch64显然具有安全启动功能,它不仅可以直接启动U-Boot,而且可以分阶段进行……四个阶段!这是在U-Boot运行之前启动Linux的4个引导程序阶段。虽然,其中一个阶段(阶段3-2)是可选的,没有在我们的电路板上使用,但4个阶段听起来更为出色,可以发挥出戏剧性的效果,请让我休息一下。


阶段如下:


Bootloader阶段1(BL1)AP Trusted ROM(从SoC中的闪存加载)
Bootloader阶段2(BL2)受信任的启动固件
Bootloader阶段3-1(BL31)EL3运行时软件
Bootloader阶段3-2(BL32)Secure-EL1有效负载(可选)
Bootloader阶段3-3(BL33)不受信任的固件(这是U-Boot)
如果您有兴趣,可以在这里阅读更多详细信息!


缺少defconfig
因此,U-Boot源代码缺少任何类似于tx3-mini,f%#@的defconfig!但是在浏览源代码一段时间后,我发现了一个听起来很像我的板子!


P212


P212具有Amlogic S905X芯片组,与TX3 Mini的S905W稍有不同。现在,我已经花了几个月的时间(大部分时间是关闭的)来进行此工作,所以我不记得要确定从P281引用TX3 Mini的确切步骤了,但是我做到了!


我只是把所有的文件的副本P212并更名为P281,最重要的是使CONFIG_DEFAULT_DEVICE_TREE等于meson-gxl-s905w-p281其DTB是上游并会为此附带的发行版。无需手动编译dtb!我有一个U型靴叉,该叉包含在名为的分支中v2019.01-tx3-mini。


完成后,我们可以简单地运行:


make ARCH=arm CROSS_COMPILE=aarch64-linux-gnu- p281_defconfig
make ARCH=arm CROSS_COMPILE=aarch64-linux-gnu-
aarch64-linux-gnu是Arch Linux仓库中aarch64工具链的名称,您的发行版可能称之为其他名称。


让我们回到安全启动方面
还记得我刚才提到的那些引导加载程序阶段吗?好吧,这些都没有与U-Boot捆绑在一起。ARM Trusted Firmware具有某些平台的参考实现,但不适用于我们的主板。


查看P212 的自述文件,您会发现它具有逐步指南,可用于创建包括所有阶段的完整引导加载程序映像,太好了!再次,该指南中链接到的回购不包含任何P281配置!但是我确实找到了一个能做到的!


建议的工具链来自2013年,但我无法在Arch Linux上使用它,而我之前用来构建U-Boot的工具链对于此代码而言还太新。我最终在CentOS 7 VM中构建了它,因为它具有古老的内核。


擦拭eMMC
要擦除eMMC,我们需要aml-flash工具!该工具用于向其刻录Android映像,但它确实具有方便的--destroy标志,可将引导加载程序从eMMC中清除。我们想要这样做的原因是,SoC在查看sd卡之前先在eMMC上寻找引导加载程序,所以我们需要它!如果您从此处获取图片并使用此工具进行刷新,则可以返回Android 。


擦拭eMMC所需要做的就是阅读存储库中的安装说明,找到USB Type-A到Type-A电缆(停止寻找,您没有,为什么?),将其插入插入更靠近主板SD卡的USB插槽中,另一个插入计算机并运行:


cd /path/to/aml-flash-repository
export PATH=$PWD/tools:$PATH
./aml-flash --destroy
我通过将USB B型PCB插座焊接到已切割的USB电缆上来制作电缆。然后,我可以简单地使用USB A型到USB B型电缆来连接它。


TX3 Mini:Android 电视盒上的Mainline Linux


TX3 Mini:Android TV Box上的Mainline Linux /images/posts/mainline-linux-on-tx3-mini/cable.jpg
您也可以将它们中的两个焊接在一起或在线订购一个,事实证明它们确实存在!


那不是我应许的记忆!
在这里,我们已经编译了U-Boot并创建了一个引导加载程序映像。剩下的唯一事情就是将其刻录到SD卡中。您可以在P212的自述文件中找到以下内容:


DEV=/dev/your_sd_device
dd if=fip/u-boot.bin.sd.bin of=$DEV conv=fsync,notrunc bs=512 skip=1 seek=1
dd if=fip/u-boot.bin.sd.bin of=$DEV conv=fsync,notrunc bs=1 count=444
现在,将那个sd卡弹出到您的电路板上,插入串行端口(波特率115200),然后看一下引导U-Boot的东西!等一下,我们只看到1 GiB的RAM !?


在浏览了uboot-amlogic存储库一段时间之后,我发现了一个方便的变量,叫做CONFIG_DDR_SIZE。它的值以MiB表示,当前设置为1024,这很有希望!将其更改为2048并重新编译后,它会引导并检测到2 GiB!


现在我们有了一个运行良好的U-Boot映像,可以继续进行下一步了,Linux!


您可以采用1 GiB或2 GiB格式获得预编译的引导程序阶段。但更好的是,我还制作了一个Makefile,可通过此处的简单make命令构建完整的引导加载程序映像。


的Linux
现在我有一些好消息!Amlogic S905W具有很好的主线Linux支持。我们不需要编译我们自己的内核或任何废话。


我们确实必须考虑一件事,尽管选择发行版时,内核版本必须是相当新的。尽管在Linux 5.0之前无法写入eMMC闪存,但我在4.19+上取得了不错的成绩。因此,我在这篇文章中选择Arch Linux ARM。


Arch Linux ARM
作为Arch Linux的用户,这对我来说是很自然的选择。Arch Linux是一个滚动发行发行版,具有最新的软件包(例如Linux 5.0!)。Arch Linux ARM是其ARM版本,但与原始Arch Linux的维护人员不同。


准备SD卡相当简单:


下载ArchLinuxARM-aarch64-latest.tar.gz
分区sd卡(可以是单个根分区)
将该根分区格式化为ext4(确保其具有标签linux-root)
挂载该根分区
将Arch Linux ARM rootfs提取到分区
将引导加载程序刻录到sd卡(如上一节所述)
最后在下面写 /boot/extlinux/extlinux.conf
menu title ArchLinuxARM Boot Options.
timeout 20


label ArchLinuxARM
        kernel /boot/Image
        initrd /boot/initramfs-linux.img
        append rw root=LABEL=linux-root rootwait rootfstype=ext4 coherent_pool=1M ethaddr=${ethaddr}
        fdtdir /boot/dtbs/


路径相对于第一个分区。因此,如果您有一个单独的引导分区,然后将其安装/boot在根目录下,请确保它是第一个分区,并/boot从中的所有路径中删除前缀extlinux.conf。如果您喜欢内核更新,则还需要将该引导分区手动添加到rootfs内的fstab中。


惨败之后,您可以将SD卡弹出到您的电路板上,观察一下Arch Linux ARM的光荣靴子。您可以在Arch Linux ARM 文档中找到更多信息,例如默认密码和服务。


现在,您可以使用Arch Linux ARM享受明天的世界!除此以外,还有一个问题。


更多U-Boot东西!
因此,在适当支持的硬件上,U-Boot可以从NAND闪存或类似的存储器中加载MAC地址。但这不是我们在这里滚来滚去的方式!


这是一个问题,原因是如果U-Boot无法从硬件加载MAC地址,它只会说“很好!”。并在每次启动时自行弥补。如果您不经常重新启动它或使用静态IP地址,这可能不是问题,但是在每次启动时,它将获得新的DHCP租约。由于MAC地址被认为是全局唯一的,因此U-Boot不再支持在配置中对其进行硬编码。因此,请解决此问题。


好的,这是启动U-Boot后该过程的工作方式。


它看起来对extlinux.conf中/extlinux和/boot/extlinux
它boot.scr在/和中寻找脚本/boot
它寻找/efi/boot/bootaa64.efi二进制
它尝试DHCP / PXE引导
每个步骤都在每个可启动媒体(sd卡,eMMC和USB)上运行。如果找到一个,它将尝试引导它,如果失败,则移至下一个。


U-Boot具有在编译时生成或在启动时填充的变量环境,如ethaddr可能的话。ethaddr是第一个以太网接口的MAC地址(后跟eth1addr,eth2addr依此类推),但在我们这种情况下,该变量不存在。该boot.scr脚本可以操纵环境,但是正如我们所见,该extlinux.conf步骤首先运行,天哪darnit!。


这不是一个新主意,但未在P212配置中实现。我加了预启动的步骤,尝试从指定的文件加载额外的环境变量uEnv.txt在任一/或/bootSD卡和eMMC的的第一个分区。


因此,echo "ethaddr=12:34:56:78:9a:bc" > uEnv.txt应该做到这一点,但要知道,要使用实际的MAC地址(外壳底部印有我的地址)。


将其刷新到eMMC
因此,从sd卡运行非常可爱,而且一切正常,但是我们有一个16 GiB eMMC闪存可供我们使用!此外,SD卡写很多东西都令人恐惧,除非您从ram运行系统,否则SD卡很快就会失败,但这不是本文的主题!


要使其从eMMC闪存中运行,您可以重复上述步骤,但这需要时间,谁想要呢?相反,我浪费了 花时间创建了一个脚本,该脚本可以为我完成所有步骤,并输出一个图像,我们可以将其简单地刻录到sd卡上,然后刻录到eMMC闪存上。


该脚本可以在这里找到。最终映像还包括引导加载程序。


回顾
如果您不关心这个过程,那么我带我去了这里,并希望逐步介绍它:


克隆tx3-mini-arch-linux-build
跑 ./genimage.sh
擦拭eMMC
将图像刻录到SD卡(dd if=ArchLinuxARM-tx3-mini.img of=/dev/your_sd_card bs=1M)
将ArchLinuxARM-tx3-mini.img放入您的SD卡或将其scp到正在运行的TX3 Mini
从正在运行的SD卡设置(dd if=ArchLinuxARM-tx3-mini.img of=/dev/mmcblkX bs=1M)将图像刻录到eMMC
生成的图像是2GiB。将其刷新到eMMC之后,需要手动扩展分区。你可以用谷歌搜索,我不是你妈妈。


最后的话
游客,如果您要查看本帖隐藏内容请回复


另一件事是该板具有7段显示器,可以在其中显示时间或您想要的任何内容(只要不超过4个数字)和一些图标,图像搜索“ TX3 Mini”,您会看到我意思。这是由FD628控制器控制的,在搜索驱动程序(linux_openvfd)时确实给了我一些结果,但是我也没有尝试过。


最终,HDMI可以正常工作,尽管除了显示控制台之外,我没有尝试过其他任何方法。Arch Linux ARM的存储库中有用于GPU的驱动程序。


现在,我可以自豪地将新的ARM SBC插入网络并将其用作服务器(或其他东西)。让我们把它丢在没人能看到的壁橱里,这使我对美学的观点无济于事。但是,嘿!弄清楚这一点很有趣。

相关阅读: 最强机顶盒零刻 (Beelink) GT-King上手评测


上一篇:A95X Max和A95x MAX+ 能刷CoreELEC吗
下一篇:外贸盒子Q95国内定制版改装。
沙发
发表于 2020-8-31 10:55 | 只看该作者
感谢分享
回复 支持 反对

使用道具 举报

板凳
发表于 2020-8-31 10:55 | 只看该作者
给楼主点赞
回复 支持 反对

使用道具 举报

地板
发表于 2020-8-31 10:55 | 只看该作者
楼主整理的内容很赞
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐 上一条 /6 下一条

Archiver|新帖|标签|软件|Sitemap|ZNDS智能电视网 ( 浙ICP备14000780号 )

网络信息服务信用承诺书 | 增值电信业务经营许可证:浙B2-20150411 丨 浙公网安备 33010802006145号

浙网文(2016)6491-366号 | GMT+8, 2020-9-30 17:20 , Processed in 0.054952 second(s), 10 queries , MemCache On.

Powered by Discuz!

监督举报:report#znds.com (请将#替换为@)

© 2007-2020 ZNDS.Com

快速回复 返回顶部 返回列表