大華樂橙sn1(海思hi3798c)刷機(jī)

簡(jiǎn)介

樂橙sn1不是什么礦機(jī),配置如下:

  • CPU: hi3798cv200 四核A53
  • RAM: 2G DDR3
  • eMMC: 4G EMMC5.0
  • 網(wǎng)絡(luò):RTL8211F 千兆phy
  • 外設(shè):原生SATA+USB3.0、UHS SD卡槽、QCA9377 SDIO雙頻網(wǎng)卡、HDMI、ALC5662 IIS codec,四個(gè)LED燈,板上還有一個(gè)I2C的RTC時(shí)鐘

拆機(jī)圖詳見:https://www.mydigit.cn/forum.php?mod=viewthread&tid=139874

Linaro與海思推出的96boards-poplar開發(fā)板同樣采用hi3798c方案,而且海思已經(jīng)將此SoC的部分驅(qū)動(dòng)代碼提交給Linux主線內(nèi)核,所以sn1可以使用這兩種內(nèi)核。

poplar提供的內(nèi)核版本是4.9,帶有海思多媒體部分以及Mali GPU的驅(qū)動(dòng),不過由于缺乏相關(guān)開發(fā)資料,并且如果用作NAS或者Linux SBC的話也不需要這部分功能,因此推薦使用5.4主線內(nèi)核,在build-imou-sn1里面release的固件也都是5.4內(nèi)核的。

對(duì)于上述兩種內(nèi)核,我從海思的另一份3.18安卓?jī)?nèi)核中移植了SATA寄存器配置的相關(guān)代碼,現(xiàn)在可以在以上兩種內(nèi)核中使用原生SATA。

ath10k開源驅(qū)動(dòng)目前對(duì)SDIO接口的QCA9377支持有限,存在問題,暫時(shí)不能驅(qū)動(dòng)。
5.10主線內(nèi)核已經(jīng)可以正常使用QCA9377無線網(wǎng)卡,目前的支持情況如下表:

內(nèi)核類型 SATA/USB3.0 GPU 多媒體(VPU、FB、AIAO等) QCA9377(WiFi)
poplar-4.9 支持 支持 支持(無開發(fā)資料) 不支持
mainline-5.10 支持 暫不支持 不支持 支持

現(xiàn)在已經(jīng)適配了Ubuntu、Debian以及Archlinuxarm,機(jī)器的用途是NAS或Linux SBC,去除了GPU和多媒體部分的驅(qū)動(dòng)。如果需要做電視盒子或者播放器的話的請(qǐng)自行研究安卓固件。


刷機(jī)步驟

  • 準(zhǔn)備工作:需要接上TTL接口??梢允止ず附樱蛘哂?strong>1.25mm的4p端子線(可以去X寶的優(yōu)信電子買,運(yùn)費(fèi)便宜)。
    串口波特率為115200
TTL
  1. 找一個(gè)4G以上的U盤,格式化成FAT32文件系統(tǒng),需要在Windows里格式化,并且將分配單元大小設(shè)置成8192字節(jié)
FAT32
  1. 如果需要備份原廠固件,先按恩山的教程刷入安卓root包,然后插上U盤,設(shè)法進(jìn)入控制臺(tái)(可以接上TTL串口或者使用安卓虛擬終端),用dd將emmc的全部?jī)?nèi)容備份到U盤:
    如果不需要備份,那么可以跳過這一步
dd if=/dev/mmcblk0 of=<U盤掛載點(diǎn)>/emmc.dd bs=1M conv=fsync
  1. 下載預(yù)編譯的bootloader:https://github.com/hanwckf/bl-hi3798c/releases/latest

  2. 解壓bl-release.tar.xz,將fastboot.binl-loader.bin放進(jìn)U盤的根目錄

  3. 將板子關(guān)機(jī),把U盤插到USB2.0接口上,接上TTL串口,按住LED燈旁邊的微動(dòng)開關(guān)后接上電源

  4. 上電后,bootrom會(huì)嘗試從U盤讀取加載fastboot.bin,在倒計(jì)時(shí)結(jié)束前按下任意鍵終止啟動(dòng),一切順利的話會(huì)成功進(jìn)入u-boot控制臺(tái),TTL輸出如下:
    注意:bootrom會(huì)挑U盤,如果你的U盤不認(rèn)的話請(qǐng)換一個(gè)

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控制臺(tái)中依次輸入以下命令,將l-loader.bin寫進(jìn)emmc中:
usb start
fatload usb 0:1 0x30000000 l-loader.bin
mmc write 0x30000200 0x1 0xf7f

預(yù)期得到的輸出:

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復(fù)位,這次不要按住微動(dòng)開關(guān)。在倒計(jì)時(shí)結(jié)束前按任意鍵再次進(jìn)入u-boot控制臺(tái),此時(shí)進(jìn)入的是emmc里面的u-boot

  2. 輸入以下命令恢復(fù)默認(rèn)環(huán)境變量:

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

  2. build-imou-sn1下載你喜歡的Linux發(fā)行版,使用balenaEtcher或其它工具寫入U(xiǎn)盤

  3. 板子插好網(wǎng)線,U盤插入USB2.0接口后上電啟動(dòng)。u-boot會(huì)首先嘗試從U盤啟動(dòng)進(jìn)入恢復(fù)系統(tǒng),目前使用的恢復(fù)系統(tǒng)均為alpine

  4. 通過ssh或者TTL串口登陸alpine恢復(fù)系統(tǒng)。默認(rèn)主機(jī)名是imou-sn1,root密碼是admin

ssh root@imou-sn1
  1. 在alpine恢復(fù)系統(tǒng)中執(zhí)行emmc-install.sh,將固件寫入emmc
    刷寫過程中,硬盤燈會(huì)變成紅色,刷寫完成后變?yōu)榘咨?/li>
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. 寫入完成后,執(zhí)行poweroff將機(jī)器關(guān)機(jī),拔出U盤后再上電,刷機(jī)步驟完成

注意事項(xiàng)

  • Archlinuxarm在進(jìn)去系統(tǒng)后需要執(zhí)行以下兩步操作初始化pacman密鑰環(huán):
pacman-key --init
pacman-key --populate archlinuxarm
  • u-boot默認(rèn)的啟動(dòng)順序?yàn)?code>usb -> mmc0,如果在USB2.0接口上插入了u-boot能夠識(shí)別系統(tǒng)的U盤,那就會(huì)從U盤啟動(dòng)。如果要修改默認(rèn)啟動(dòng)順序,可以修改u-boot環(huán)境變量boot_targets
    例如,在u-boot控制臺(tái)中修改:
setenv boot_targets "mmc0 usb"
saveenv
  • 在u-boot中設(shè)置ethaddr環(huán)境變量可以修改mac地址,例如:
setenv ethaddr "96:00:3f:29:ee:20"
saveenv
  • 在Linux系統(tǒng)中可以使用fw_printenvfw_setenv查看或修改u-boot環(huán)境變量

  • 如果需要恢復(fù)原來備份的安卓鏡像,只需啟動(dòng)到U盤恢復(fù)系統(tǒng),用dd將原先備份的鏡像寫回emmc即可
    注意:原廠安卓固件中,emmc是/dev/mmcblk0,而在Linux系統(tǒng)中是/dev/mmcblk1

dd if=/path/to/emmc.dd of=/dev/mmcblk1 bs=1M conv=fsync
  • 如果要刷入build-imou-sn1里面的其它Linux發(fā)行版,只需要從步驟11開始操作即可。不需要接TTL,可以用ssh登陸alpine恢復(fù)系統(tǒng)

  • LED燈控制

# sata-white默認(rèn)的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

# 關(guān)閉所有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

參考資料

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容