烧写固件
PhoenixSuit:基于 Windows 的系统的烧写工具,是最常用的烧写工具,通过数据线将 PC 和开发板连接,把固件烧到开发板上,支持分区烧写,适用于开发和小规模生产使用。建议开发者开发时使用该工具进行固件升级。
PhoenixSuit 使用简介
下面主要介绍用 PhoenixSuit 烧写的方法,LiveSuit 和 PhoenixUSBpro 烧写的方法类似。
PhoenixSuit 下载地址:固件烧写工具PhoenixSuit
同时需安装全志 USB 驱动,下载链接:全志USB驱动
*企业开发者在安装 APST 的同时也会安装全志 USB 驱动,无需单独再安装
具体步骤如下:
(1)打开 PhoenixSuit,当设备上电启动并插入 USB 与 PC 相连的时,PhoenixSuit 会提示识别到设备;
(2)点击 一键刷机-浏览
选择要烧写的固件;
(3)点击 立即升级
,此时会通过 USB 给设备发送重启命令,设备会带着烧写标识重启,并在重启阶段进入烧写模式;
(4)设备重新到 boot 的时候会自动进行烧写,可以看到 PhoenixSuit 的进度条在动;
(5)烧写成功,设备重启。
空设备烧写
当设备第一次烧写时(即设备内没有系统),PC 打开烧写工具,设备插入 USB,烧写工具工具会自动弹出烧写提示,此时按 YES 按钮即可进行烧写(需提前在固件处选好要烧写的固件)。
按住 fel 按键烧写
在开发板正面中间位置有一个 fel 按键,PC 打开烧写工具后,按住 fel 按键再插入 USB 上电,此时也会如空设备烧写一样进入烧写模式.
*提示:当 PC 识别到设备弹出提示后,即可松掉 fel 键,不用一直按着
已有设备固件烧写
对于已经烧过固件的设备,在开发过程中,可以在串口或 ADB 终端输入烧写重启命令 reboot efex
重启设备,此时设备会重启并在启动过程中自动进入烧写模式,后续烧写过程同上 PhoenixSuit 使用简介 。
*串口及 ADB 调试方法见: USB及串口调试
RootFS
咱们这里介绍的方式贼简单,大家只要有一台 X86 电脑,装上 Docker 就行,接下来我们演示一下。
简单准备
咱们以本次活动推荐的统一实验环境 Linux Lab Disk 为例(其他环境请自行安装 Docker)。
Linux Lab Disk 已经支持 6 大主流 Linux 发行版,包括 Ubuntu, Kali, Mint (薄荷) , Deepin, Manjaro, Fedora 等,这里任选了一个 Kali 版本来做实验。
首先是打开桌面的 Cloud Lab Manager
,并安装 qemu-user-static
,以 Ubuntu, Kali, Mint (薄荷) , Deepin 版本为例,除了软件安装命令略有差异,其他都一样。
$ sudo apt install -y qemu-user-static jq
复制代码
接着是直接进入到 Linux Lab 的工作目录:
$ pwd~/Develop/cloud-lab$ cd labs/linux-lab
复制代码
查询支持的 RISC-V Linux 发行版
然后检索 Docker 中已经支持的 riscv64 发行版:
$ docker search riscv64 | grep ^riscv64/riscv64/debian Debian is a Linux distribution that's compos… 1riscv64/busybox Busybox base image. 0riscv64/alpine A minimal Docker image based on Alpine Linux… 0riscv64/ubuntu Ubuntu is a Debian-based Linux operating sys… 0
复制代码
可以看到已经有 busybox, debian, alpine (高山) 和 ubuntu,接下来以 ubuntu 为例,先看看支持的 tags:
$ ../../tools/docker/tags riscv64/ubuntu"latest""devel""jammy""jammy-20220315""22.04""rolling""impish""impish-20220316""21.10""focal"
复制代码
可以看到,最新已经支持 Ubuntu 22.04 了。
任选一个下载下来
这里来选 22.04
下载下来:
$ tools/root/docker/extract.sh riscv64/ubuntu:22.04LOG: Pulling riscv64/ubuntu:22.0422.04: Pulling from riscv64/ubuntu779c5da60b92: Pull completeDigest: sha256:4de0b5a51c63b54d27ad151217f6cefaa4114a5db33abce6f47fc6a1f2c3bc2bStatus: Downloaded newer image for riscv64/ubuntu:22.04docker.io/riscv64/ubuntu:22.04LOG: Running riscv64/ubuntu:22.04WARNING: The requested image's platform (linux/riscv64) does not match the detected host platform (linux/amd64) and no specific platform was requestedLOG: Creating temporary rootdir: /home/kali/Develop/cloud-lab/labs/linux-lab/prebuilt/fullroot/tmp/riscv64-ubuntu-22.04LOG: Extract docker image to /home/kali/Develop/cloud-lab/labs/linux-lab/prebuilt/fullroot/tmp/riscv64-ubuntu-22.04[sudo] password for kali:LOG: Removing docker container2b3b9d005682e664f40f4ff80ce483e3673828eaafef51809757e2d91b2ba090LOG: Chroot into new rootfsLinux linux-lab-host 5.10.0-kali9-amd64 #1 SMP Debian 5.10.46-4kali1 (2021-08-09) riscv64 riscv64 riscv64 GNU/LinuxUbuntu Jammy Jellyfish (development branch) \n \l
复制代码
极速体验目标 Linux 系统
然后通过 chroot 运行:
$ tools/root/docker/chroot.sh riscv64/ubuntu:22.04LOG: Chroot into /home/kali/Develop/cloud-lab/labs/linux-lab/prebuilt/fullroot/tmp/riscv64-ubuntu-22.04root@linux-lab-host:/#root@linux-lab-host:/# uname -aLinux linux-lab-host 5.10.0-kali9-amd64 #1 SMP Debian 5.10.46-4kali1 (2021-08-09) riscv64 riscv64 riscv64 GNU/Linuxroot@linux-lab-host:/# uname -mriscv64root@linux-lab-host:/# exit
复制代码
如果不想持久化保存运行的结果,那么可以直接用 tools/root/docker/run.sh
,用完即弃!
测试
git clone https://gitee.com/tinylab/riscv-linux
cd riscv-linux/test/microbench
make logging PRODUCT='D1-H-nezha' O=0
make logging PRODUCT='D1-H-nezha' O=1
复制代码
结果
Run on (1 X 1008 MHz CPU )
Load Average: 1.43, 1.21, 1.10
-------------------------------------------------------------------------
Benchmark Time CPU Iterations
-------------------------------------------------------------------------
BM_nop 10.1 ns 10.0 ns 69957559
BM_ub 10.2 ns 10.0 ns 69873414
BM_bnez 10.1 ns 10.0 ns 69937321
BM_beqz 10.1 ns 10.0 ns 69938862
BM_load_bnez 12.2 ns 12.0 ns 58255983
BM_load_beqz 12.2 ns 12.0 ns 58298861
BM_cache_miss_load_bnez 24.3 ns 12.0 ns 58107258
BM_cache_miss_load_beqz 24.3 ns 12.0 ns 58252024
BM_branch_miss_load_bnez 24.2 ns 12.0 ns 58267620
BM_branch_miss_load_beqz 24.3 ns 12.0 ns 58236516
BM_cache_branch_miss_load_bnez 24.4 ns 12.0 ns 58232276
BM_cache_branch_miss_load_beqz 24.7 ns 12.0 ns 58142354
复制代码
参考文档
两分钟内极速体验 RISC-V Linux 系统发行版 - 泰晓科技 (tinylab.org)
评论