type
status
date
slug
summary
tags
category
password
icon
基本概况
Hi3798mv100为wahway出品的一款面向stb的soc芯片,网上有流出的android或linux sdk,型号形如HiSTBAndroidV600R003C01或HiSTBLinuxV100R005C00SPC041B020。目前可找的的最新linux sdk为4.4.35的HiSTBLinuxV100R005C00SPC050。
引导程序
fastboot大概就是uboot换皮,但由于这款芯片主要面向stb市场,所以他确实支持fastboot协议。
接ttl后所谓按ctrl c中断启动从未成功,若有人成功烦请告知。
短接J16从U盘读取fastboot.bin(fastboot随后读取bootargs.bin、recovery.img)引导。
引导参数中除了
blkdevparts
规定了mmc分区外,另一个有用的参数是mmz=ddr,0,0,400M
指定了gpu内存,此内存将被gpu kmod划走从而kernel无法使用。读源代码发现bootargs中的blkdevparts
可能规定了fastboot分区,但由于我是高安版从而无法验证。破解高安版详看上一贴。
userspace
fastboot可接受的启动格式为
或
可以使用命令
mkimage -A arm -O linux -T kernel -C none -a 0X2000000 -e 0X2000000 -n <name> -d zImage-dtb uImage
或mkbootimg --kernel uImage --ramdisk ramdisk.cpio.xz --base 0 --kernel_offset 0x3e08000 --ramdisk_offset 0x4e00000 -o recovery.img
制作。地址其实可以不同,但我没datashit因此无法准确验证。制作initramfs的方式find . -print0 | cpio --null --create --verbose --format=newc > ramdisk.cpio
gzip -9 < ramdisk.cpio > ramdisk.cpio.gz
xz --check=crc32 -T0 -9 < ramdisk.cpio > ramdisk.cpio.xz
没有ramdisk去 https://mirrors.ustc.edu.cn/openwrt/releases/22.03.3/targets/armvirt/32/ 偷,注意下
rootfs.cpio.gz
。rootfs-ext4.img.gz
会假设rootfs为持久存储,然后就会写入第一次配置后重启。支持的文件系统:
使用sdk
去 https://github.com/tegzwn/HiSTBLinuxV100R005C00SPC050 下载sdk。我们主要是要
out/hi3798mv100/hi3798mdmo1g/obj/source/kernel/linux-4.4.y/.config
,有这个文件就可以退出了。将
source/kernel/linux-4.4.y
移动出来,塞进.config
后执行以下命令编译:要上gcc 12需要打以下补丁:
参考:https://www.frostsnow.net/blog/2019-05-07.html
注意有时需要参考 https://github.com/glinuz/hi3798mv100 的linux-3.18.y。wahway自己代码都能写糊(例如ir驱动),令人汗颜。
menuconfig提示:
- 可以选择
General setup -> Kernel compression mode -> XZ
。
- 选上
CONFIG_USB_EHCI_HCD_PLATFORM=y
和CONFIG_USB_OHCI_HCD_PLATFORM=y
!!!不然开机找不到usb设备。
拿到
arch/arm/boot/zImage-dtb
即可组装uImage
和bootimg
。重放到4.4.35
主要的改动在
arch/arm
,drivers/hisilicon
,drivers/net/nand
,drivers/mtd
,drivers/net
,include/dt-bindings/clock
,include/linux/hisilicon
。drivers/usb/gadget/udc/hiudc
为hisi usb sysfs接口,drivers/common
和drivers/msp
为gpu驱动,drivers/bluetooth_usb
和drivers/wifi
为rtlwifi驱动,可删除(另,闭源驱动无法修改mac,使用nm需关闭随机化mac扫描功能)。注意
drivers/mmc/card/block.c
为mmc添加了GENHD_FL_EXT_DEVT
,因此可以突破CONFIG_MMC_BLOCK_MINORS
默认8的限制(否则mmc part只能识别到7),解决方法建议暂时调大CONFIG_MMC_BLOCK_MINORS
。自此我们拿到了距主线差距最小的补丁集,接下来就是...
升级!
4.5
int *irq;
变成了int irq[PHY_MAX_ADDR];
,删除即可。不会弄,先删除。
4.7
删除。
删除。
改成
netif_trans_update(dev);
。删除。
致谢:
有关Notion安装或者使用上的问题,欢迎您在底部评论区留言,一起交流~
- 作者:RipnCN
- 链接:https://blog.lovou.pw/article/hi3798mv100
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。