目錄
- Hi3798MV200 恩兔N2 NS-1 (一): 設(shè)備介紹和刷機(jī)說明
- Hi3798MV200 恩兔N2 NS-1 (二): HiNAS海納思使用和修改
- Hi3798MV200 恩兔N2 NS-1 (三): 制作 Ubuntu rootfs
- Hi3798MV200 恩兔N2 NS-1 (四): 制作 Debian rootfs
介紹
恩兔N2是一個家庭存儲的系列產(chǎn)品, NS-1 是其中體積最小的一個型號, 基于海思Hi3798MV200. 和其他設(shè)備相比, 特點(diǎn)是內(nèi)置2.5寸SATA盤位, 并且?guī)д拙W(wǎng)口. 這個設(shè)備比較小眾, 存量很小, 不如斐訊N1, 玩客云那樣有廣泛的認(rèn)知度, 甚至在百度和Google上搜索都沒什么結(jié)果. 生產(chǎn)商恩兔科技這個公司已經(jīng)停止經(jīng)營, 其網(wǎng)站 n2yun.com 也已經(jīng)無法訪問. 因?yàn)橛泻K?Hi3798 系列內(nèi)核的SDK和刷機(jī)工具, 使得這個盒子可以發(fā)揮余熱, 物盡其用.
本文的內(nèi)容, 大量參考自以下鏈接
- 帶圖說明 https://www.wdmomo.fun:81/doc/index.html?file=003_各類礦渣/013_恩兔NS-1
- 刷機(jī)說明 https://github.com/xiayang0521/n2ns-1/
- HiNAS https://www.ecoo.top/hitool.html
實(shí)物圖
包裝
正面
正面是一個帶指示燈的按鈕, 和三個指示燈. 這四個指示燈都是紅綠雙色, 可以用紅綠橙三色顯示狀態(tài)
背面
背面包含一個用于供電的 USB Type-C 口, 一個 HDMI 口, 一個千兆網(wǎng)口, 一個USB口和一個SD Card卡槽.
內(nèi)部
螺絲在包裝的塑料袋里, 盒子默認(rèn)沒上螺絲, 用指甲沿兩邊可以輕松撬開. 內(nèi)部可以看到一個標(biāo)準(zhǔn)的2.5寸SATA盤位. 這個高度可以放7mm和9mm厚度的硬盤, 不確定是否能放更厚的15mm厚盤.
PCB特寫
正面和背面
TTL 接口
硬件配置
Part | Specs | Notes |
---|---|---|
CPU | Hi3798MV200 | 型號 Hi3798MRBCV2010D000, 四核A53, T450 GPU, 詳細(xì)信息 |
RAM | DDR4 1GB | K4A4G165WE-BCRC * 2, 單顆256M 16b, 最高支持ddr2400 |
Flash | eMMC 4GB | 東芝THGBMDG5D1LBAIT |
Ethernet | 10/100/1000M * 1 | Realtek RTL8211 |
USB 2.0 | USB 2.0 * 1 | |
HDMI | HDMI 2.0 * 1 | |
HDD | SATA 3.0 * 1 | 2.5 Inch |
Power Supply | DC 5V 2A | USB-TypeC |
Other Interfaces | SD Card Reader * 1 |
刷機(jī)前的準(zhǔn)備工作
硬件部分
- 一臺正常工作的, 運(yùn)行Win10的電腦
- 網(wǎng)線, 用于連接 N2NS1 到交換機(jī)或路由器
- 用于USB轉(zhuǎn)串口, USB2TTL的串口模塊, 常見的 CH340 模塊即可
軟件部分
軟件部分主要是刷機(jī)工具和固件
刷機(jī)工具
刷機(jī)工具是基于 Eclipse 框架開發(fā)的, Windows版下載地址列表
- https://oss.histb.com/HiTool-windows.7z
- http://xz.w10a.com/small/HiTool.7z
- https://dl.ecoo.top/HiTool-soft/HiTool-windows.7z
- https://www.xitongzhijia.net/soft/211748.html
- http://www.hihope.org/en/download/download.aspx?mtt=36 需要注冊
Linux的版本比較舊, 未嘗試使用
- https://oss.histb.com/hitool_linux.tar.gz
- https://dl.ecoo.top/HiTool-soft/hitool_linux.tar.gz
固件
常見固件的下載
- HiNAS https://dl.ecoo.top/
這是一個功能比較完整的集成系統(tǒng), 內(nèi)核4.4.35, 選擇恩兔N2 NS1定制的 TTL-hi3798mv200-202307-64-n2ns1.zip - Debian https://pan.baidu.com/s/1Dx58Zc43P3b3cx3tnhLlmw?pwd=9qte
這是我基于4.4.35內(nèi)核做的Debian10系統(tǒng), 比較干凈的版本, 未安裝各種服務(wù)軟件 - 合集 https://github.com/xiayang0521/n2ns-1/releases
這里包含了稍息版的 Debian 10, 以及 Centos7 等系統(tǒng)的固件
備份和刷機(jī)
海思燒錄的基本原理(摘抄自幫助手冊)
HiBurn工具在開始燒寫后,
- 首先與bootrom進(jìn)行交互, 工具將 DDR 參數(shù)傳送到傳到bootrom, 即為uboot下載階段5%處, 然后初始化DDR
- 把uboot傳輸?shù)紻DR中, uboot下載階段100%處表示傳輸完畢
- 從DDR啟動uboot
- uboot啟動完成后, 工具開始與uboot進(jìn)行交互, 發(fā)送燒寫命令, 將DDR中的uboot燒寫到Flash對應(yīng)地址中
uboot部分是通過TTL傳輸, 其他鏡像分區(qū)燒寫, 如kernel, rootfs等分區(qū), 工具默認(rèn)采用網(wǎng)口傳輸?shù)姆绞? 客戶可選擇裸燒和非裸燒兩種方式進(jìn)行燒寫
- 裸燒即為在按分區(qū)燒寫或按Emmc燒寫中勾選uboot進(jìn)行燒寫,此時uboot會被燒寫到Flash中
- 非裸燒即為不勾選uboot, 僅勾選其他分區(qū)進(jìn)行燒寫, 此時需要保證當(dāng)前單板上已經(jīng)存在uboot, 燒寫時工具會啟動uboot, 與其交互, 通過向uboot發(fā)送TFTP命令與Write命令, 完成燒寫.
準(zhǔn)備工作
準(zhǔn)備 TTL2USB, 排針和網(wǎng)線, 主板上的四孔接口為 TTL, 接口定義參考前面的圖.
方孔為VCC不連接, 工作時測得電壓為3.3V, 因此切勿用5V的電壓連接, 平時最好不連接. USB轉(zhuǎn)串口模塊連接電腦和盒子, USB轉(zhuǎn)串口模塊的 RX 接盒子的 TX, TX 接盒子的 RX.
本機(jī)(上位機(jī))打開 HiTool, 芯片選擇 Hi3798MV200, 點(diǎn)擊運(yùn)行 HiBurn, 點(diǎn)擊刷新, 本機(jī)會自動識別IP和存在的串口, 將串口修改為USB2TTL所在的串口, 盒子(下位機(jī))的IP和本機(jī)IP要在同一網(wǎng)段, 例如本機(jī)為 192.168.9.123, 板子的IP就可以設(shè)為 192.168.9.100, 不要和網(wǎng)段中其它機(jī)器沖突即可. 傳輸方式選擇網(wǎng)口.
MAC 地址可以自行設(shè)置, 軟件將根據(jù)設(shè)置在刷機(jī)過程中使用該 MAC 地址作為板端 MAC
備份
準(zhǔn)備分區(qū)表
盒子先上電啟動一次, 通過串口 TTL 軟件看啟動日志, 或者在命令行中查看dmesg, 可以得到當(dāng)前的分區(qū)信息, 其格式為
blkdevparts=mmcblk0:2M(fastboot),1M(bootargs),4M(deviceinfo),6M(stbinfo),8M(baseparam),20M(logo),8M(pqparam),40M(private),10M(privatebak),80M(factory),40M(trustedcore_linux),80M(kernel0),80M(kernel1),150M(root0),150M(root1),300M(roothome),-(userdata)
根據(jù)上述信息在分區(qū)部分逐個添加分區(qū), 最后選擇保存分區(qū)表.
除了大小, 分區(qū)類型在首次備份可以全部選擇 none, 也就是以 raw 方式備份, 備份完成后用 binwalk 等工具測試分區(qū)到底是 raw 還是 ext4, squash. 除了 roothome 和 userdata, 其它全是raw, 也就是none. 都使用raw類型對備份無影響.
執(zhí)行備份
分區(qū)表選擇剛才設(shè)置保存的路徑, 然后逐個選擇文件路徑(備份的目標(biāo)文件名, 主機(jī)上目前沒有)
programmer 文件為刷機(jī)模式使用的臨時 fastboot, 可以從別的固件提取, 也可以通過 TFTP 手動備份, 如果留空則使用 eMMC 內(nèi)置的, 這種情況要求 eMMC 中有 UBOOT, 否則備份失敗.
選擇上載, 按照提示給盒子上電, 備份需要大約20分鐘.
刷機(jī)
準(zhǔn)備分區(qū)表和刷機(jī)文件
- 解壓需要刷機(jī)的固件
- 運(yùn)行 HiTool, 在啟動對話框選擇正確的芯片型號, 選擇默認(rèn)的按分區(qū)燒錄
- 在 partition file 那一行點(diǎn)擊瀏覽, 選擇對應(yīng)的分區(qū)表文件. 此時 HiTool 會顯示定義好的分區(qū)列表, 對應(yīng)的大小和文件
- 在列表中, 勾選的部分是會被執(zhí)行操作的, 要備份/擦寫/寫入哪個部分, 就勾上哪個部分
這里以 Debian 固件下載鏈接 為例進(jìn)行說明, 其分區(qū)表文件為 partition_debian.xml, 對應(yīng)的六個分區(qū)分別是
- fastboot(UBOOT)
- bootargs(啟動參數(shù))
- stock_kernel(recovery內(nèi)核, 小內(nèi)核)
- stock_squash(recovery系統(tǒng), 小系統(tǒng))
- kernel(64位目標(biāo)內(nèi)核)
- rootfs(64位目標(biāo)系統(tǒng))
通過 HiTool 寫入
點(diǎn)擊燒寫/Burn按鈕后, 根據(jù)日志窗口提示斷電然后上電, 工具會檢測到盒子狀態(tài), 自動開始燒錄
日志窗口會顯示進(jìn)度, 等待燒寫完畢后會自動reset, 時間大概需要五六分鐘
Debian系統(tǒng)的使用
- 通過TTL終端軟件在串口可以直接登錄, 也可以在路由器中查到盒子的IP后, 通過SSH登錄.
- 默認(rèn)用戶為 root / root
- 剛刷完的根目錄所在分區(qū), 可用空間為0, 登錄后執(zhí)行 local-resize.sh 對分區(qū)進(jìn)行擴(kuò)容.
通過 Recovery 模式恢復(fù)或刷機(jī)
在固件的6個分區(qū)中, stock_kernel 和 stock_squash 組成了一套可以獨(dú)立運(yùn)行的 recovery 系統(tǒng), 如果要讓盒子啟動進(jìn)入 recovery 系統(tǒng), 只需要修改 bootargs 分區(qū).
在 HiTool 中僅勾選 bootargs, 將對應(yīng)的文件改為 bootargs_stock 進(jìn)行燒錄, 重啟后就會通過 stock_kernel / stock_squash 啟動, 進(jìn)入 recovery 命令行
進(jìn)入 recovery 命令行, 登錄用戶 root, 密碼為空
- 選項(xiàng)一: 機(jī)器連接串口, 通過串口操作
- 選項(xiàng)二: 機(jī)器連接網(wǎng)線, 在路由器找到設(shè)備IP, telnet連接
以稍息版的 Debian 刷機(jī)包為例說明如何寫入系統(tǒng).
-
將 stretch.tar.bz2 和 bootargs2 文件放入U盤根目錄, 插上盒子的USB口.
-
執(zhí)行以下命令 開啟U盤供電
echo 33 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio33/direction
echo 1 > /sys/class/gpio/gpio33/value
命令行會輸出識別到的 usb storage 設(shè)備
# usb-storage 1-1:1.0: USB Mass Storage device detected
scsi host1: usb-storage 1-1:1.0
scsi 1:0:0:0: Direct-Access Generic Flash Disk 8.07 PQ: 0 ANSI: 4
sd 1:0:0:0: [sda] 15974400 512-byte logical blocks: (8.18 GB/7.62 GiB)
sd 1:0:0:0: [sda] Write Protect is off
sd 1:0:0:0: [sda] Write cache: disabled, read cache: enabled, doesn't support DPO or FUA sda:
sd 1:0:0:0: [sda] Attached SCSI removable disk
udisk1110 -> /dev/sda
-
用 blkid 能看到U盤對應(yīng)的分區(qū), 根據(jù)U盤分區(qū)方式的不同可能是 /dev/sda 也可能是 /dev/sda1
-
掛載U盤到 /mnt/usb1
mount /dev/sda /mnt/usb1
# 或者
mount /dev/sda1 /mnt/usb1
這時候ls /mnt/usb1
要能看到 stretch.tar.bz2 和 bootargs2 這兩個文件
- /dev/mmcblk0p6 是用于放置新系統(tǒng)的目標(biāo)分區(qū), 先格式化
mkfs.ext4 /dev/mmcblk0p6
然后掛載到 /tmp/mmc, 如果提示couldn't mount as ext3 due to feature incompatibilities
, 可以忽略
mkdir /tmp/mmc
mount /dev/mmcblk0p6 /tmp/mmc
- 解壓 Debian 到 /tmp/mmc, 如果要看詳細(xì)輸出, 加上 v 參數(shù)
tar xjpf /mnt/usb1/stretch.tar.bz2 -C /tmp/mmc
注意結(jié)束時的輸出, 如果最后提示一個 magic 寫入錯誤, 可以忽略, 如果是顯示其它類型的錯誤, 要檢查一下, 是否U盤文件損壞
- 用 bootargs2 覆蓋當(dāng)前的 bootargs
dd if=/mnt/usb1/bootargs2 of=/dev/mmcblk0p2
這一步用于改變啟動參數(shù), 重啟后將從 /dev/mmcblk0p5 (64bit kernel) 啟動.
附錄
進(jìn)入 Fastboot
通過TTL連接后, 在啟動階段按 Ctrl + C, 會進(jìn)入 Fastboot 命令行
SDK Version: HiSTBLinuxV100R005C00SPC061_20181030
Reserve Memory
Start Addr: 0x3FFFE000
Bound Addr: 0xF900000
Free Addr: 0x3FFFE000
Alloc Block: Addr Size
Press Ctrl+C to stop autoboot
fastboot# <INTERRUPT>
fastboot# <INTERRUPT>
fastboot# <INTERRUPT>
可以通過 printenv 查看啟動參數(shù), 通過 setenv 進(jìn)行修改
fastboot# printenv
baudrate=115200
ethaddr=00:00:00:00:00:00
ipaddr=192.168.1.10
netmask=255.255.255.0
gatewayip=192.168.1.1
serverip=192.168.1.1
bootcmd=mmc read 0 0x1FFFFC0 0x24000 0x10000;bootm 0x1FFFFC0
bootargs_512M=mem=512M mmz=ddr,0,0,48M vmalloc=500M
bootargs_1G=mem=1G mmz=ddr,0,0,48M vmalloc=500M
bootargs_2G=mem=2G mmz=ddr,0,0,48M vmalloc=500M
bootargs_768M=mem=768M mmz=ddr,0,0,48M vmalloc=500M
bootargs_1536M=mem=1536M mmz=ddr,0,0,48M vmalloc=500M
bootargs_3840M=mem=3840M mmz=ddr,0,0,48M vmalloc=500M
bootargs=console=ttyAMA0,115200 root=/dev/mmcblk0p6 rootfstype=ext4 rootwait blkdevparts=mmcblk0:1M(fastboot),1M(bootargs),10M(stock_kernel),60M(stock_squash),32M(kernel),-(rootfs)
bootdelay=0
stdin=serial
stdout=serial
stderr=serial
ethact=up
ver=Fastboot 3.3.0 (htpc@htpc4105) (Dec 17 2021 - 11:19:34)
Environment size: 800/65532 bytes
GPIO 操作
通過GPIO操作LED
# 打開
echo 255 > /sys/class/leds/green:fn/brightness
# 關(guān)閉
echo 0 > /sys/class/leds/green:fn/brightness
觸發(fā), 如閃爍、管理mmc讀寫等. 通過cat命令可以看到 LED 支持的觸發(fā)方式, 通過echo回寫相應(yīng)的字符串可以實(shí)現(xiàn) LED 的自動觸發(fā), 如heartbeat代表閃爍, mmc0 代表 mmc0 的讀寫觸發(fā) LED 等等
env 記錄
正常啟動的 bootargs 參數(shù)文章來源:http://www.zghlxwxcb.cn/news/detail-627199.html
root@n2ns1:~# fw_printenv
bootdelay=1
baudrate=115200
bootfile="uImage"
ethaddr=C6:04:53:66:0E:36
filesize=3702000
fileaddr=1000000
netmask=255.255.255.0
ipaddr=192.168.1.10
serverip=192.168.1.254
bootargs_stock=mem=1G mmz=ddr,0,0,60M vmalloc=500M console=ttyAMA0,115200 initrd=0x11000000,0x4600000 root=/dev/ram blkdevparts=mmcblk0:1M(fastboot),1M(bootargs),10M(stock_kernel),60M(stock_squash),32M(kernel),-(rootfs)
bootargs_debian=mem=1G mmz=ddr,0,0,120M console=ttyAMA0,115200 root=/dev/mmcblk0p6 rw blkdevparts=mmcblk0:1M(fastboot),1M(bootargs),10M(stock_kernel),60M(stock_squash),32M(kernel),-(rootfs)
bootargs_512M=mem=512M mmz=ddr,0,0,256M
bootargs_1G=mem=1G mmz=ddr,0,0,380M
bootargs_2G=mem=2G mmz=ddr,0,0,600M
ethact=up
bootcmd_debian=mmc read 0 0x10000000 0x24000 0x10000;setenv bootargs ${bootargs_debian};bootm 0x10000000
bootcmd_stock=mmc read 0 0x10000000 0x1000 0x5000;mmc read 0 0x11000000 0x6000 0x1e000;setenv bootargs ${bootargs_stock};bootm 10000000
stdin=serial
stdout=serial
stderr=serial
ver=Fastboot 3.3.0 (htpc@htpc4105) (Dec 17 2021 - 11:19:34)
bootcmd=mmc read 0 0x10000000 0x24000 0x10000;setenv bootargs ${bootargs_debian};bootm 0x10000000
recovery 環(huán)境的 env 帶引導(dǎo)的命令和內(nèi)核參數(shù)文章來源地址http://www.zghlxwxcb.cn/news/detail-627199.html
# printenv
USER=root
LD_LIBRARY_PATH=/lib:/usr/local/lib:/usr/lib:/usr/share/bluetooth/lib:/hybroad/lib
SHLVL=1
TERMINFO=/usr/share/terminfo
HOME=/root
LOGNAME=root
TERM=vt100
PATH=/hybroad/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin
SHELL=/bin/sh
PWD=/root
到了這里,關(guān)于Hi3798MV200 恩兔N2 NS-1 (一): 設(shè)備介紹和刷機(jī)說明的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!