Linux 环境下烧写镜像
对于第一次使用 ICE-RVB、ICE-EVB 开发板的开发者,需要根据以下几个步骤完成开发板的镜像烧写:
- 第一步:烧录前准备:安装烧录工具(thead-tools、fastboot)、检查开发板与电脑的串口连接情况
- 第二步:下载镜像文件(ice_images)
- 第三步:通过 thead-tools 将 u-boot 镜像烧写到开发板的 eMMC 存储器
- 第四步:在 u-boot 环境下使用 fastboot 工具,将 boot.ext4 (内核、openSBI、dtb)、rootfs.ext4 (根文件系统) 镜像烧写到 eMMC
- 第五步:重启开发板,即可以进入Linux 控制台
推荐开发者使用 ubuntu18.04 或 ubuntu20.04 环境开发。
第一步:烧录前准备
安装 thead-tools
通过 pip 命令来安装 thead-tools 到你的系统中,thead-tools 支持 python2.7+、python3.6+,建议使用 python2 作为默认 python。
sudo pip install thead-tools
# 如果使用官方地址下载过慢,可使用国内清华镜像源加速
sudo pip install -i https://pypi.tuna.tsinghua.edu.cn/simple thead-tools
如果未找到 pip
命令,请先安装 pythonp-pip,如:sudo apt install python-pip
。
thead-tools 使用
通过 thead-tools 命令可以烧写 u-boot 镜像,更详细的 thead-tools 使用说明可以参见:thead-tools 使用说明,通过命令: thead cct --help
查使用说明:
root@linux > thead cct --help
Usage: thead cct <uart|list|download> [param]
Options:
-h, --help show this help message and exit
-u UART CCT serial port device
-f FILE
-o OFFSET Device start address
-b BLOCK, --block=BLOCK
-d DEVICE, --device=DEVICE
Device name
-c, --compress
-D, --debug Enable debbug trace info
安装 fastboot
发行版可通过包管理器安装 fastboot 工具,如 ubuntu下通过 sudo apt install fastboot
安装,或者从官网下载二进制文件,下载地址:https://developer.android.google.cn/studio/releases/platform-tools 。
第二步:下载镜像
访问 https://gitee.com/thead-linux/ice_images/releases 下载最新镜像,可直接使用下面命令行下载 Linux SDK 镜像文件:
wget "https://gitee.com/thead-linux/ice_images/repository/archive/master?format=zip" -O ice_images.zip
unzip ice_images.zip
cd ice_images
ls -l
需要用到的是如下几个文件:
-rw-r--r-- 1 lihm staff 30M May 18 21:30 boot.ext4
-rw-r--r-- 1 lihm staff 160M May 18 21:30 debian-rootfs.ext4
-rw-r--r-- 1 lihm staff 550K May 18 21:30 u-boot-with-spl_ice-evb.bin
-rw-r--r-- 1 lihm staff 550K May 18 21:30 u-boot-with-spl_ice-rvb.bin
- u-boot-with-spl_ice-rvb.bin: ICE-RVB uboot 引导镜像文件
- u-boot-with-spl_ice-evb.bin: ICE-EVB uboot 引导镜像文件
- boot.ext4: /boot 分区文件系统,ext4格式,包含 fw_jump.bin、uImage、hw.dtb
- debian-rootfs.ext4: Debian 基础根文件系统镜像,ext4 格式
第三步:烧写 uboot
查看电脑串口
参考 开发板接线 《烧写系统连接图》完成开发板的串口连接,通过 thead-tools 烧写 u-boot 时需要使用开发板的 CCT 烧写串口,通过命令thead cct uart
命令看到电脑上安装的串口列表,并确认电脑上串口与开发板串的对应关系:
root@linux > thead cct uart
uart device list:
/dev/ttyUSB0 - USB-Serial Controller
/dev/ttyUSB1 - USB-Serial Controller
查找开发板存储器列表
通过命令:thead cct -u /dev/ttyUSB0 list
可以查看开发板支持的烧写存储器列表,如下:
root@linux > thead cct -u /dev/ttyUSB0 list
Wait .....................
CCT Version: 2
memory device list:
dev = ram0 , size = 256.0KB
dev = emmc0 , size = 2.0MB
dev = emmc1 , size = 2.0MB
dev = emmc2 , size = 3.7GB
注意:使用该命令时,先确定串口的连接是否正确,运行命令前先关闭开发板电源后再运行该命令,等到出现Wait ..........
信息后再开启开发板电源,正常情况下电源开启后在1秒内会出现如下信息:
CCT Version: 2
memory device list:
dev = ram0 , size = 256.0KB
dev = emmc0 , size = 2.0MB
dev = emmc1 , size = 2.0MB
dev = emmc2 , size = 3.7GB
如果未出现上述打印信息,同时电脑是接有多个串口,请更新另一个串口再尝试一次,如 thead cct -u /dev/ttyUSB1 list
。如果所有串口都尝试后均未出现上述打印机信息,请检查串口与开发板的连接是否符合,详细连接参见:开发板接线 。
烧写 u-boot
通过命令:thead cct -u /dev/ttyUSB0 download -f u-boot-with-spl_ice-xxx.bin -d emmc0
将 u-boot 镜像烧写到 eMMC 的 0号分区,烧写过程信息如下:
CCT Version: 2
Send file 'u-boot-with-spl_ice-xxx.bin' to 21:0 ...
Writing at 0x00009800... (3%)
待打印 File u-boot-with-spl_ice-xxx.bin download success.
后,烧写成功后,可以通过开发板的 Console 串口看到正确的启动信息:
U-Boot 2020.01-g6cc5d59b0d (Dec 20 2020 - 08:37:37 +0000)
CPU: rv64imafdcvsu
Model: T-HEAD c910 ice
DRAM: 4 GiB
GPU ChipDate is:0x20151217
GPU Frequency is:500000KHz
NPU ChipDate is:0x20190514
DPU ChipDate is:0x20161213
MMC: mmc0@3fffb0000: 0
Loading Environment from MMC... OK
In: serial@3fff73000
Out: serial@3fff73000
Err: serial@3fff73000
Net:
Warning: ethernet@3fffc0000 (eth0) using random MAC address - e6:e2:ea:7a:30:ce
eth0: ethernet@3fffc0000
Hit any key to stop autoboot: 1
第四步:烧写开发板镜像
开发板 u-boot 配置
参考 开发板接线 《系统连接图》完成开发板的串口连接,开发板重新开机后进入 u-boot 命令模式,当 Console 串口出现如下提示时,按任键即可进行命令模式。关于 u-boot 的详细命令介绍可参见: u-boot 章节中关于命令使用的介绍。
Warning: ethernet@3fffc0000 (eth0) using random MAC address - a6:7d:bc:02:7d:4d
eth0: ethernet@3fffc0000
Hit any key to stop autoboot: 3 <--- 出现此信息时按任意键进入uboot
u-boot 配置命令列表如下(通过串口终端,在开发板上执行):
# 恢复默认值
env default -a
# 配置 eMMC 分区
setenv uuid_rootfs "80a5a8e9-c744-491a-93c1-4f4194fd690b"
setenv partitions "name=table,size=2031KB"
setenv partitions "$partitions;name=boot,size=60MiB,type=boot"
setenv partitions "$partitions;name=root,size=-,type=linux,uuid=$uuid_rootfs"
gpt write mmc 0 $partitions
# 配置网络
# !!!!!!!!!!!!!!!!!!!! 特别注意 !!!!!!!!!!!!!!!!!!!!!!!!
# 如果网络中接入多块 ICE-EVB 开发板,每块开发板的 ethaddr 要唯一
setenv ethaddr 00:a0:a0:a0:a0:a1 # 如果网络中接入多块 ICE-EVB 开发板,ethaddr 要唯一
setenv ipaddr 192.168.1.100 # 开发板 IP 地址
setenv netmask 255.255.255.0
# ping 192.168.1.1 # ping 主机的IP,检验网络是否正常
saveenv # 将配置保存到 eMMC, 下次启动时无需再配置
# 开启fastboot模式
fastboot udp
烧写 boot 分区
在 Linux 终端上使用 fastboot 命令完成镜像烧写,192.168.1.100 是开发板的运行 u-boot 时配置的 IP 地址,使用 fastboot
命令前确认电脑与开发板在同一个子网。在电脑的终端上执行:
fastboot -s udp:192.168.1.100 flash boot boot.ext4
烧写镜像
ICE-EVB 开发板提供三种根文件系统镜像,开发者可以根据自己的需要选择下载:
镜像 | 下载地址 | 大小 |
---|---|---|
基本镜像(debian-base) | http://mirrors.aliyun.com/thead/images/riscv64-ice/debian-rootfs.ext4.gz | 59MB |
开发镜像 (debian-dev) | http://mirrors.aliyun.com/thead/images/riscv64-ice/debian-dev-rootfs.ext4.gz | 197MB |
xfce 桌面(debian-desktop) | http://mirrors.aliyun.com/thead/images/riscv64-ice/debian-desktop-rootfs.ext4.gz | 517MB |
选项一:烧写基本系统镜像
在下载的 ice_images 中默认提供 debian-rootfs.ext4
镜像,使用 fastboot
命令烧写:
fastboot -s udp:192.168.1.100 flash root debian-rootfs.ext4
选项二:烧写开发者镜像
需要另外下载 debian-dev-rootfs.ext4
镜像,再用 fastboot
命令烧写:
wget "http://mirrors.aliyun.com/thead/images/riscv64-ice/debian-dev-rootfs.ext4.gz"
gzip -d debian-dev-rootfs.ext4.gz
fastboot -s udp:192.168.1.100 flash root debian-dev-rootfs.ext4
选项三:烧写 xFce 桌面系统镜像
需要另外下载 debian-desktop-rootfs.ext4
镜像,再用 fastboot
命令烧写:
wget "http://mirrors.aliyun.com/thead/images/riscv64-ice/debian-desktop-rootfs.ext4.gz"
gzip -d debian-desktop-rootfs.ext4.gz
fastboot -s udp:192.168.1.100 flash root debian-desktop-rootfs.ext4
第五步:启动开发板 Linux 系统
完成 Linux 镜像烧写后,重新启动开发板,Console 串口显示如下:
[ OK ] Started Serial Getty on hvc0.
[ OK ] Started Serial Getty on ttyS0.
[ OK ] Reached target Login Prompts.
[ OK ] Started System Logging Service.
[ OK ] Finished Remove Stale Onli…ext4 Metadata Check Snapshots.
[ OK ] Reached target Multi-User System.
[ OK ] Reached target Graphical Interface.
Starting Update UTMP about System Runlevel Changes...
[ OK ] Finished Update UTMP about System Runlevel Changes.
Debian GNU/Linux bullseye/sid thead-910 ttyS0
thead-910 login: [ 94.362252] random: crng init done
[ 94.365674] random: 6 urandom warning(s) missed due to ratelimiting
thead-910 login:
登录用户名 root
,初始无密码,开发者可根据需要更改密码。
完成开发板的镜像烧写后,下一步进入 系统配置 章节,进行开发板的基本系统配置。