大家期待已久的milk-v duo 运行RTOS系统来了!支持RT-Thread/RT-SMART

大家期待已久的milk-v duo 运行RTOS系统来了!!!

2023年6月6号,本人在 rt-thrad论坛 挖了一个坑,寻找大牛移植rt-smart到milk-v duohttps://club.rt-thread.org/ask/article/380845ada41b0661.html

自从帖子发出后,获得了群友的积极反馈,加群的加群,买板子的板子。群里面已经有 30 多位 risc-v 爱好者加入(没有灌输的技术群)。

本着给大家开个头的(自己挖坑自己埋),还是我来把 milk-v duo 开发板(芯片 cv1800b) 基础 bs p来做出来了。当然 cb1800b已经正式合并入 rt-thread 主仓库,大家可以尝鲜体验。当然目前只跑通了 rt-smart,可以支持 msh 功能,其他功能还需要有兴趣的小伙伴一起加入来完善。(如果你觉得基础 bsp 太垃圾了不屑于玩,可以再等等)

仓库地址:https://github.com/RT-Thread/rt-thread/tree/master/bsp/cv1800b

下面简单介绍一下cv1800b 这个bsp的基础情况(bsp里面的readme复制过来的)。

概述

CV180ZB/CV1800B/CV1801B 是面向民用消费监控 IP 摄像机、居家智能等多项产品领域而推出的高性能、低功耗芯片,集成了 H.264/H.265 视频压缩编码器和 ISP;支持数字寛动态、 3D 降噪、除雾、镜头畸变校正等多种图像增强和矫正算法,为客户提供专业级的视频图像质量。

  1. 处理器内核
  • 主处理器 RISCV C906 @ 1.0Ghz
    • 32KB I-cache, 64KB D-Cache
    • 集成矢量(Vector)及浮点运算单元 (FPU) .
  • 协处理器 RISCV C906 @ 700Mhz
    • 集成浮点运算单元 (FPU)
  1. 存储器接口
  • 内建 DRAM : DDR2 16bitx1, 最高速率达 1333Mbps , 容量512Mbit (64MB)
  • 支持SPI NOR flash 接口 (1.8V / 3.0V)
    • 支持 1, 2, 4 线模式
    • 最大支持 256MByte
  • 支持 SPI Nand flash 接口 (1.8V / 3.0V)
    • 支持 1KB/2KB/4KB page (对应的最大容量 16GB/32GB/64GB)
    • 使用器件本身内建的 ECC 模块
  1. 外设
  • Up to 26 GPIO pins on the MilkV-Duo 40-pin header provide access to internal peripherals such as SDIO, I2C, PWM, SPI, J-TAG, and UART
  • Up to 3x I2C
  • Up to 5x UART
  • Up to 1x SDIO1
  • Up to 1x SPI
  • Up to 2x ADC
  • Up to 7x PWM
  • Up to 1x RUN
  • Up to 1x JTAG
  • 集成 MAC PHY 支持 10/100Mbps 全双工或半双工模式
  • 一个 USB Host / device 接口

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

注:
当前 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

编译

  1. 依赖安装
$ sudo apt install -y device-tree-compiler
  1. Linux平台下,可以先执行:
$ scons --menuconfig

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

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

更新完软件包后,执行 scons -j10scons -j10 --verbose 来编译这个板级支持包。或者通过 scons --exec-path="GCC工具链路径" 命令,在指定工具链位置的同时直接编译。编译正确无误,会产生rtthread.elf文件。

编译完成后脚本自动调用 ./mksdimg.sh 脚本进行打包,并生成 boot.sd, 该文件即为 SD 卡启动的 kernel 文件。

运行

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

支持开发板

依然是广告

对 RISC-V、对 milk-v duo rtsmart、rt-thread以及 双核适配,运行有兴趣的小伙伴,可以扫码加入群聊,群里面有大佬出没。

当然也会提供移植适配指导。

或者加我微信 flyingcys 拉你进群

4 Likes

有支持microPython的吗,求大佬移植一个

2 Likes

大佬 我跳到kernel就直接乱码了,怎么回事?
132452 bytes read in 8 ms (15.8 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 0x8141b4a0
Uncompressing Kernel Image
Decompressing 295024 bytes used 43ms
Loading Device Tree to 0000000081be5000, end 0000000081becb60 … OK

Starting kernel …

h??浡?矒搾?崅笂2域5
?釧紌? 扱A? bY褉J+榇z琳?W薻伋?W峨
?釧??燤