milk-v duo rt-smart 编译运行(指路rt-thread github仓库)

根据前文

燕十三:milk-v duo原厂Linux_SDK上手2 赞同 · 0 评论文章

描述 milk-v duo 使用的是算能 CV1800B。目前 rt-thread 已经支持该芯片,仓库地址:

https://github.com/RT-Thread/rt-thread/tree/master/bsp/cv1800b​github.com/RT-Thread/rt-thread/tree/master/bsp/cv1800b

。CV1800B 大核是RISC-V 64 位的 C906,支持 MMU,所以运行的是 rt-smart 系统。

1、Toolchain 下载

下载 riscv64-unknown-linux-musl-gcc 的工具链:

https://github.com/RT-Thread/toolchains-ci/releases/download/v1.7/riscv64-linux-musleabi_for_x86_64-pc-linux-gnu_latest.tar.bz2​github.com/RT-Thread/toolchains-ci/releases/download/v1.7/riscv64-linux-musleabi_for_x86_64-pc-linux-gnu_latest.tar.bz2

注: 当前 bsp 只支持 Linux 编译

正确解压后,在rtconfig.py中将 riscv64-unknown-linux-musl-gcc 工具链的本地路径加入 EXEC_PATH 或通过 RTT_EXEC_PATH 环境变量指定路径。

$ export RTT_EXEC_PATH=/opt/riscv64-linux-musleabi_for_x86_64-pc-linux-gnu/bin

2、编译

  1. 依赖安装
$ sudo apt install -y device-tree-compiler

执行 scons -j10scons -j10 --verbose 来编译这个板级支持包。或者通过 scons --exec-path="GCC工具链路径" 命令,在指定工具链位置的同时直接编译。编译正确无误,会产生rtthread.elf文件。编译完成后脚本自动调用 ./mksdimg.sh 脚本进行打包,并生成 boot.sd, 该文件即为 SD 卡启动的 kernel 文件。

  1. 如需进行 menuconfig 配置内核或下载软件包,Linux平台下可以执行:
$ scons --menuconfig

它会自动下载 env 相关脚本到 ~/.env 目录,然后执行

$ source ~/.env/env.sh
$ pkgs --update

更新完软件包后,重新编译。

3、运行

  1. 将 SD 卡分为 2 个分区,第 1 个分区用于存放 bin 文件,第 2 个分区用于作为数据存储分区,分区格式为 FAT32
  2. 将根目录下的 fip.binboot.sd 复制 SD 卡第一个分区中。后续更新固件只需要复制 boot.sd 文件即可。 其中:
  3. fip.bin:fsbl、 opensbi 和 uboot 打包后的 bin 文件
  4. boot.sd:kernel 打包后的 bin 文件

更新完 boot.sd 后, 重新上电可以看到串口的输出信息:

U-Boot 2021.10 (Jun 26 2023 - 14:09:06 +0800)cvitek_cv180x

DRAM:  63.3 MiB
gd->relocaddr=0x82435000. offset=0x2235000
MMC:   cv-sd@4310000: 0
Loading Environment from <NULL>... OK
In:    serial
Out:   serial
Err:   serial
Net:   
Warning: ethernet@4070000 (eth0) using random MAC address - 62:80:19:6c:d4:64
eth0: ethernet@4070000
Hit any key to stop autoboot:  0 
Boot from SD ...
switch to partitions #0, OK
mmc0 is current device
132692 bytes read in 12 ms (10.5 MiB/s)
## Loading kernel from FIT Image at 81400000 ...
   Using 'config-cv1800b_milkv_duo_sd' configuration
   Trying 'kernel-1' kernel subimage
   Verifying Hash Integrity ... crc32+ OK
## Loading fdt from FIT Image at 81400000 ...
   Using 'config-cv1800b_milkv_duo_sd' configuration
   Trying 'fdt-cv1800b_milkv_duo_sd' fdt subimage
   Verifying Hash Integrity ... sha256+ OK
   Booting using the fdt blob at 0x8141b590
   Uncompressing Kernel Image
   Decompressing 296768 bytes used 42ms
   Loading Device Tree to 0000000081be5000, end 0000000081becb60 ... OK

Starting kernel ...

heap: [0x802766b0 - 0x812766b0]

 \ | /
- RT -     Thread Smart Operating System
 / | \     5.0.1 build Jun 28 2023 23:44:36
 2006 - 2022 Copyright by RT-Thread team
Hello RT-Smart!
msh />

驱动支持列表

驱动 支持情况 备注
UART 支持 默认波特率115200

支持开发板

本文转载自:milk-v duo rt-smart 编译运行 - 知乎 感谢PLCT RTT负责人@燕十三