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,初始无密码,开发者可根据需要更改密码。

完成开发板的镜像烧写后,下一步进入 系统配置 章节,进行开发板的基本系统配置。

results matching ""

    No results matching ""