宁睿 发表于 2024-8-11 15:50:23

旧物使用 - 将机顶盒改造为一台Linux开发机!

前言

家里的机顶盒镌汰下来,博主想要物尽其用,看看是否能将其改造为一台Ubuntu"开发机",故开始倒腾
准备工作

机顶盒型号:移动魔百盒CM201-2(CH),芯片组: hi3798mv300(hi3798mv3dmm),其他型号类似
理论上适用于以下SOC的机顶盒:Hi3798Mv100 / Hi3798Cv200 / Hi3798Mv200 / Hi3798Mv300
1. 准备Linux体系用作编译环境,并使用Windows体系在HiTool软件进行烧录(也可不使用Windows,参考海思官方文档)

故保举在Windows平台上安装WSL
2. 准备海思的烧录软件HiTool(Windows软件)

https://img2024.cnblogs.com/blog/985540/202408/985540-20240810134105501-20440345.png
3. 准备烧录固件所需的USB传串口TTL线,博主使用的是CH340G,其中只需要TXD, RXD, GND三条连接到板上,并准备一根网线用于向机顶盒快速发送固件步伐

CH340G需要驱动步伐,需要去官网下载CH341SER.EXE
4. 准备机顶盒源码

源码链接:https://github.com/martixjohn/HiSTBLinuxV100R005C00SPC050
博主修改了部分配置以适配hi3798mv3dmm
5. 提前下载好编译所需工具链,以Ubuntu为例

sudo apt install gcc make gettext bison flex bc zlib1g-dev libncurses5-dev lzma6. Ubuntu Rootfs Image

Ubuntu参考步调如下

[*]从ubuntu官网或镜像源下载匹配机顶盒架构的Ubuntu base
[*]新建空文件,建议至少为800M,用作环回文件(loopback)
dd if=/dev/zero of=ubuntu.img bs=400M count=1
[*]格式化该环回文件,创建ext4文件体系
mkfs.ext4 ubuntu.img
[*]挂载环回文件
# 创建挂载分区
mkdir -p /mnt/loopback

# 虚拟成块设备
losetup --find --show ubuntu.img

# 将块设备挂载到分区,如/dev/loop0
mount /dev/loop0 /mnt/loopback
[*]解压Ubuntu base
tar -xzf ubuntu.base.tar.xz -C /mnt/loopback
[*]切换根目录
建议使用arch-chroot,其中做了许多挂载等工作,无需关心额外步调
arch-chroot /mnt/loopback
[*]定制你的rootfs
安装常用软件,留意Ubuntu base未安装systemdNetwork Manager,需要自行安装
apt install systemd network-manager ssh重要:需要修改root暗码或创建新用户并指定暗码,刷入启动后方能登录
passwd
在Linux环境下编译源码SDK

1. 拷贝预先配置,覆盖主目录下的cfg.mak

预先配置文件在configs目录下
cp configs/hi3798mv300/hi3798mv3dmm_hi3798mv300_cfg.mak cfg.mak2. 预加载环境

. ./env.sh
make tools3. 自定义配置编译选项(可选),和Linux内核一样,所用的配置体系是KConfig

make menuconfig几个比较重要的配置选项

[*]Base->Chip Type: 选择芯片组
[*]Base->Out DIR: 输出路径,在out目录下
[*]Board->Boot Regfile Config List: 启动的配置文件,将第一个改为自己的机顶盒匹配的配置文件名称
https://img2024.cnblogs.com/blog/985540/202408/985540-20240810132730322-1795758334.png
该文件存放于source/boot/sysreg/xxx/*.reg
https://img2024.cnblogs.com/blog/985540/202408/985540-20240810133042420-644453449.png
不同机顶盒的内存颗粒等硬件大概有所区别,参照连接测试显示的Reg Name进行选择
https://img2024.cnblogs.com/blog/985540/202408/985540-20240810195043834-1851141433.png
4. 源码编译

make build可以开启多核编译,如博主使用16核进行编译
make build -j 16等待编译完成,输出效果放在out目录下,烧录所需的文件如图所示
https://img2024.cnblogs.com/blog/985540/202408/985540-20240810135855405-788093351.png
加上ubuntu rootfs image之后,烧录应当准备好如下所示的文件
https://img2024.cnblogs.com/blog/985540/202408/985540-20240810201127689-1469952875.png
修改分区配置文件emmc_partitions.xml,将最后一项的SelectFile改为ubuntu镜像的文件名,Length属性改为-,表示占满存储器剩余空间
https://img2024.cnblogs.com/blog/985540/202408/985540-20240810140118065-380212838.png
在Windows环境下使用HiTool软件烧录固件到EMMC

1. 将TTL线连接到机顶盒主板


[*]若CH340驱动安装正确,进入设备管理器将会看到
https://img2024.cnblogs.com/blog/985540/202408/985540-20240810141220236-372180660.png
[*]连接示意图
https://img2024.cnblogs.com/blog/985540/202408/985540-20240810135520473-479870679.jpg
[*]主板接线如图,从左到右依次连接到转接板的GND, TXD, RXD,不同板子大概有所差异,可以实验调一下TXD, RXD顺序
https://img2024.cnblogs.com/blog/985540/202408/985540-20240810135542379-1644787481.jpg
2. 连接测试


[*]打开HiTool软件,选择芯片,第一次使用大概会弹出显示
https://img2024.cnblogs.com/blog/985540/202408/985540-20240810142007185-2034019598.png

[*]点击连接管理器
https://img2024.cnblogs.com/blog/985540/202408/985540-20240810141136894-1479872188.png
配置端口,会自动识别,选择CH340的端口,波特率为115200
https://img2024.cnblogs.com/blog/985540/202408/985540-20240810141411880-1177064323.png

[*]打开终端工具
https://img2024.cnblogs.com/blog/985540/202408/985540-20240810141537803-1160598604.png
[*]机顶盒连接电源,并按下机顶盒电源按钮,开机
若连接无误,将会在终端显示类似于如下启动信息
https://img2024.cnblogs.com/blog/985540/202408/985540-20240810141638977-1843683437.png

[*]关闭机顶盒电源开关,点击终端页面的断开连接
https://img2024.cnblogs.com/blog/985540/202408/985540-20240810141809899-816598410.png
3. 开始烧录


[*]加载分区配置和固件:依次选择HiBurn->烧写EMMC->浏览(选择分区配置文件emmc_paritions.xml)
https://img2024.cnblogs.com/blog/985540/202408/985540-20240810141923274-326743249.png
[*]取一根网线连接机顶盒主板和路由器,确保PC和机顶盒能互通,配置IP信息(使用网络传输进行烧录,原因是串口传输速率过慢)

[*]PC与板端配置选项卡如图
https://img2024.cnblogs.com/blog/985540/202408/985540-20240810142206921-1900424122.png

[*]在本地PC配置下,点击刷新获得对应的端口和PC的IP地址
[*]在板端配置下,网关一般设置为路由器内网IP,一般路由器默以为192.168.1.1,子网掩码需要按照路由器进行配置,家用路由器默认是255.255.255.0,IP随意配置保证与路由器在同一子网,如192.168.1.200,物理地址随意设置
注:以上配置的目的是让机顶盒固定IP地址,以便将固件通过以太网传输到机顶盒,机顶盒会按照配置自动设置对应IP和PC建立通讯

[*]点击烧写
https://img2024.cnblogs.com/blog/985540/202408/985540-20240810142957384-1811727014.png

[*]打开机顶盒电源开关,自动开始烧写
[*]烧写完成,弹窗提示成功
4. 验证效果


[*]机顶盒大概会自动重启,先关闭机顶盒开关
[*]打开HiTool终端工具
https://img2024.cnblogs.com/blog/985540/202408/985540-20240810141537803-1160598604.png
[*]右键Clear Terminal以清除以前的信息
https://img2024.cnblogs.com/blog/985540/202408/985540-20240810143255636-1622689537.png
[*]连接
https://img2024.cnblogs.com/blog/985540/202408/985540-20240810143343151-801197247.png
[*]打开机顶盒开关,先是打印bootloader等启动信息后,直到一串绿色的OK字样显示出来,表示Ubuntu已经成功刷入!
https://img2024.cnblogs.com/blog/985540/202408/985540-20240810143615544-1101355765.png
登录即可
https://img2024.cnblogs.com/blog/985540/202408/985540-20240810143632529-1185142292.png
更换或定制Linux发行版

按照烧写步调,只需更换最后一个分区对应的文件即可,确保只选择该分区,再点击刷写
https://img2024.cnblogs.com/blog/985540/202408/985540-20240810143736517-1110485464.png
https://img2024.cnblogs.com/blog/985540/202408/985540-20240810143818852-1040066817.png
任何分区都可以类似地自定义,大家愉快的DIY吧!
欢迎交流,博主GitHub: https://github.com/martixjohn/

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 旧物使用 - 将机顶盒改造为一台Linux开发机!