大华乐橙sn1(海思hi3798c)刷机

简介

乐橙sn1不是什么矿机,配置如下:

  • CPU: hi3798cv200 四核A53
  • RAM: 2G DDR3
  • eMMC: 4G EMMC5.0
  • 网络:RTL8211F 千兆phy
  • 外设:原生SATA+USB3.0、UHS SD卡槽、QCA9377 SDIO双频网卡、HDMI、ALC5662 IIS codec,四个LED灯,板上还有一个I2C的RTC时钟

拆机图详见:https://www.mydigit.cn/forum.php?mod=viewthread&tid=139874

Linaro与海思推出的96boards-poplar开发板同样采用hi3798c方案,而且海思已经将此SoC的部分驱动代码提交给Linux主线内核,所以sn1可以使用这两种内核。

poplar提供的内核版本是4.9,带有海思多媒体部分以及Mali GPU的驱动,不过由于缺乏相关开发资料,并且如果用作NAS或者Linux SBC的话也不需要这部分功能,因此推荐使用5.4主线内核,在build-imou-sn1里面release的固件也都是5.4内核的。

对于上述两种内核,我从海思的另一份3.18安卓内核中移植了SATA寄存器配置的相关代码,现在可以在以上两种内核中使用原生SATA。

ath10k开源驱动目前对SDIO接口的QCA9377支持有限,存在问题,暂时不能驱动。
5.10主线内核已经可以正常使用QCA9377无线网卡,目前的支持情况如下表:

内核类型 SATA/USB3.0 GPU 多媒体(VPU、FB、AIAO等) QCA9377(WiFi)
poplar-4.9 支持 支持 支持(无开发资料) 不支持
mainline-5.10 支持 暂不支持 不支持 支持

现在已经适配了Ubuntu、Debian以及Archlinuxarm,机器的用途是NAS或Linux SBC,去除了GPU和多媒体部分的驱动。如果需要做电视盒子或者播放器的话的请自行研究安卓固件。


刷机步骤

  • 准备工作:需要接上TTL接口。可以手工焊接,或者用1.25mm的4p端子线(可以去X宝的优信电子买,运费便宜)。
    串口波特率为115200
TTL
  1. 找一个4G以上的U盘,格式化成FAT32文件系统,需要在Windows里格式化,并且将分配单元大小设置成8192字节
FAT32
  1. 如果需要备份原厂固件,先按恩山的教程刷入安卓root包,然后插上U盘,设法进入控制台(可以接上TTL串口或者使用安卓虚拟终端),用dd将emmc的全部内容备份到U盘:
    如果不需要备份,那么可以跳过这一步
dd if=/dev/mmcblk0 of=<U盘挂载点>/emmc.dd bs=1M conv=fsync
  1. 下载预编译的bootloader:https://github.com/hanwckf/bl-hi3798c/releases/latest

  2. 解压bl-release.tar.xz,将fastboot.binl-loader.bin放进U盘的根目录

  3. 将板子关机,把U盘插到USB2.0接口上,接上TTL串口,按住LED灯旁边的微动开关后接上电源

  4. 上电后,bootrom会尝试从U盘读取加载fastboot.bin,在倒计时结束前按下任意键终止启动,一切顺利的话会成功进入u-boot控制台,TTL输出如下:
    注意:bootrom会挑U盘,如果你的U盘不认的话请换一个

Bootrom start
Boot Media: eMMC

Entry usb bootstrap

Usb disk(1):
Decrypt auxiliary code ...OK

lsadc voltage min: 000000FE, max: 000000FF, aver: 000000FE, index: 00000000

Entry boot auxiliary code

Auxiliary code - v1.00
DDR code - V1.1.2 20160205
Build: Mar 24 2016 - 17:09:44

Reg Version:  v1.5.1\
Reg Time:     2017/03/11 14:01:21
Reg Name:     hi3798cv2dmb_hi3798cv200_DDR3-1866_2GB_8bitx4_4layers.reg

Boot auxiliary code success
Bootrom success

LOADER:  Built 2020/04/18 21:15:00+0800 Commit-id 0e5acec1
LOADER:  Switched to aarch64 mode
LOADER:  Entering ARM TRUSTED FIRMWARE
LOADER:  CPU0 executes at 0x0200e000

NOTICE:  Booting Trusted Firmware
NOTICE:  BL1: v2.2():0e5acec1
NOTICE:  BL1: Built : 21:14:56, Apr 18 2020
NOTICE:  BL1: Booting BL2
NOTICE:  BL2: v2.2():0e5acec1
NOTICE:  BL2: Built : 21:14:58, Apr 18 2020
NOTICE:  BL1: Booting BL31
NOTICE:  BL31: v2.2():0e5acec1
NOTICE:  BL31: Built : 21:15:00, Apr 18 2020


U-Boot 2018.01-rc2 (Apr 18 2020 - 21:14:39 +0800)poplar

Model: HiSilicon Poplar Development Board
BOARD: Hisilicon HI3798cv200 Poplar
DRAM:  1.9 GiB
MMC:   Hisilicon DWMMC: 0
In:    serial_pl01x
Out:   serial_pl01x
Err:   serial_pl01x
Net:   Net:  configured
No such device: mdio0
No such device: mdio0
No such device: mdio1
gmac1
Hit any key to stop autoboot:  0 
poplar# 
  1. 在U-boot控制台中依次输入以下命令,将l-loader.bin写进emmc中:
usb start
fatload usb 0:1 0x30000000 l-loader.bin
mmc write 0x30000200 0x1 0xf7f

预期得到的输出:

poplar# usb start
starting USB...
USB0:   USB EHCI 1.00
scanning bus 0 for devices... 2 USB Device(s) found
       scanning usb for storage devices... 1 Storage Device(s) found
       scanning usb for ethernet devices... 0 Ethernet Device(s) found
poplar# fatload usb 0:1 0x30000000 l-loader.bin
reading l-loader.bin
2031616 bytes read in 66 ms (29.4 MiB/s)
poplar# mmc write 0x30000200 0x1 0xf7f
MMC write: dev # 0, block # 1, count 3967 ... 3967 blocks written: OK
  1. 输入reset复位,这次不要按住微动开关。在倒计时结束前按任意键再次进入u-boot控制台,此时进入的是emmc里面的u-boot

  2. 输入以下命令恢复默认环境变量:

env default -a
saveenv
  1. u-boot部署完成,直接断电

  2. build-imou-sn1下载你喜欢的Linux发行版,使用balenaEtcher或其它工具写入U盘

  3. 板子插好网线,U盘插入USB2.0接口后上电启动。u-boot会首先尝试从U盘启动进入恢复系统,目前使用的恢复系统均为alpine

  4. 通过ssh或者TTL串口登陆alpine恢复系统。默认主机名是imou-sn1,root密码是admin

ssh root@imou-sn1
  1. 在alpine恢复系统中执行emmc-install.sh,将固件写入emmc
    刷写过程中,硬盘灯会变成红色,刷写完成后变为白色
imou-sn1:~# emmc-install.sh 
flash emmc mbr...
1+0 records in
1+0 records out
512 bytes copied, 0.00471775 s, 109 kB/s
flash emmc ext4 fs...
 848MiB 0:00:39 [21.5MiB/s] [==========================>] 100%            
0+6782 records in
0+6782 records out
889192448 bytes (889 MB, 848 MiB) copied, 62.0352 s, 14.3 MB/s
flash done, please poweroff now then unplug USB drive!
  1. 写入完成后,执行poweroff将机器关机,拔出U盘后再上电,刷机步骤完成

注意事项

  • Archlinuxarm在进去系统后需要执行以下两步操作初始化pacman密钥环:
pacman-key --init
pacman-key --populate archlinuxarm
  • u-boot默认的启动顺序为usb -> mmc0,如果在USB2.0接口上插入了u-boot能够识别系统的U盘,那就会从U盘启动。如果要修改默认启动顺序,可以修改u-boot环境变量boot_targets
    例如,在u-boot控制台中修改:
setenv boot_targets "mmc0 usb"
saveenv
  • 在u-boot中设置ethaddr环境变量可以修改mac地址,例如:
setenv ethaddr "96:00:3f:29:ee:20"
saveenv
  • 在Linux系统中可以使用fw_printenvfw_setenv查看或修改u-boot环境变量

  • 如果需要恢复原来备份的安卓镜像,只需启动到U盘恢复系统,用dd将原先备份的镜像写回emmc即可
    注意:原厂安卓固件中,emmc是/dev/mmcblk0,而在Linux系统中是/dev/mmcblk1

dd if=/path/to/emmc.dd of=/dev/mmcblk1 bs=1M conv=fsync
  • 如果要刷入build-imou-sn1里面的其它Linux发行版,只需要从步骤11开始操作即可。不需要接TTL,可以用ssh登陆alpine恢复系统

  • LED灯控制

# sata-white默认的trigger是disk-activity,可以修改为none以禁用
echo none > /sys/class/leds/sata-white/trigger

# 打开所有LED
echo 1 > /sys/class/leds/pwr-red/brightness
echo 1 > /sys/class/leds/pwr-white/brightness
echo 1 > /sys/class/leds/sata-red/brightness
echo 1 > /sys/class/leds/sata-white/brightness

# 关闭所有LED
echo 0 > /sys/class/leds/pwr-red/brightness
echo 0 > /sys/class/leds/pwr-white/brightness
echo 0 > /sys/class/leds/sata-red/brightness
echo 0 > /sys/class/leds/sata-white/brightness

参考资料

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,039评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,223评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,916评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,009评论 1 291
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,030评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,011评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,934评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,754评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,202评论 1 309
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,433评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,590评论 1 346
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,321评论 5 342
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,917评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,568评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,738评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,583评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,482评论 2 352