mirror of
https://github.com/RT-Thread/rt-thread.git
synced 2025-02-28 01:17:07 +08:00
[bsp/cvitek]update cv18xx series README.md
update cv18xx series README.md
This commit is contained in:
parent
4ffcbfef2a
commit
b1a6508929
@ -8,13 +8,14 @@
|
|||||||
|
|
||||||
| 芯片名称 | 芯片架构 | 内存大小 | 默认日志串口 | 备注 |
|
| 芯片名称 | 芯片架构 | 内存大小 | 默认日志串口 | 备注 |
|
||||||
| ------- | ------- |------- | -------- | -------- |
|
| ------- | ------- |------- | -------- | -------- |
|
||||||
| cv180x | RISC-V C906 | 64MByte | uart0 | 默认开启 MMU,运行 RT-SMART 模式 |
|
| cv180x | RISC-V C906 | 64MByte | uart0 | 支持 MMU, 支持 RT-Thread 标准版 和 RT-SMART 模式,默认运行 RT-Thread 标准版本 |
|
||||||
|
| cv181x | RISC-V C906 或 Cortex A53 通过硬件 IO 二选一 | 64MByte | uart0 | 支持 MMU, 支持 RT-Thread 标准版 和 RT-SMART 版,默认运行 RT-Thread 标准版本 |
|
||||||
|
|
||||||
- 小核
|
- 小核
|
||||||
|
|
||||||
| 目录 | 内存大小 | 默认日志串口 | 备注 |
|
| 目录 | 内存大小 | 默认日志串口 | 备注 |
|
||||||
| ---- | ------- | -------- | --- |
|
| ---- | ------- | -------- | --- |
|
||||||
| c906-little | 与大核共享 | uart1 | 无 MMU,运行 RT-Thread 标准 |
|
| c906-little | 与大核共享 | uart1 | 无 MMU,运行 RT-Thread 标准版 |
|
||||||
|
|
||||||
> 注:异构芯片需单独编译每个核的 OS
|
> 注:异构芯片需单独编译每个核的 OS
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
#
|
#
|
||||||
CONFIG_RT_NAME_MAX=8
|
CONFIG_RT_NAME_MAX=8
|
||||||
# CONFIG_RT_USING_ARCH_DATA_TYPE is not set
|
# CONFIG_RT_USING_ARCH_DATA_TYPE is not set
|
||||||
CONFIG_RT_USING_SMART=y
|
# CONFIG_RT_USING_SMART is not set
|
||||||
# CONFIG_RT_USING_NANO is not set
|
# CONFIG_RT_USING_NANO is not set
|
||||||
# CONFIG_RT_USING_AMP is not set
|
# CONFIG_RT_USING_AMP is not set
|
||||||
# CONFIG_RT_USING_SMP is not set
|
# CONFIG_RT_USING_SMP is not set
|
||||||
@ -25,10 +25,10 @@ CONFIG_RT_HOOK_USING_FUNC_PTR=y
|
|||||||
# CONFIG_RT_USING_HOOKLIST is not set
|
# CONFIG_RT_USING_HOOKLIST is not set
|
||||||
CONFIG_RT_USING_IDLE_HOOK=y
|
CONFIG_RT_USING_IDLE_HOOK=y
|
||||||
CONFIG_RT_IDLE_HOOK_LIST_SIZE=4
|
CONFIG_RT_IDLE_HOOK_LIST_SIZE=4
|
||||||
CONFIG_IDLE_THREAD_STACK_SIZE=1024
|
CONFIG_IDLE_THREAD_STACK_SIZE=8192
|
||||||
CONFIG_RT_USING_TIMER_SOFT=y
|
CONFIG_RT_USING_TIMER_SOFT=y
|
||||||
CONFIG_RT_TIMER_THREAD_PRIO=4
|
CONFIG_RT_TIMER_THREAD_PRIO=4
|
||||||
CONFIG_RT_TIMER_THREAD_STACK_SIZE=2048
|
CONFIG_RT_TIMER_THREAD_STACK_SIZE=8192
|
||||||
|
|
||||||
#
|
#
|
||||||
# kservice optimization
|
# kservice optimization
|
||||||
@ -89,7 +89,6 @@ CONFIG_RT_USING_CACHE=y
|
|||||||
# CONFIG_ARCH_CPU_STACK_GROWS_UPWARD is not set
|
# CONFIG_ARCH_CPU_STACK_GROWS_UPWARD is not set
|
||||||
# CONFIG_RT_USING_CPU_FFS is not set
|
# CONFIG_RT_USING_CPU_FFS is not set
|
||||||
CONFIG_ARCH_MM_MMU=y
|
CONFIG_ARCH_MM_MMU=y
|
||||||
CONFIG_KERNEL_VADDR_START=0x80000000
|
|
||||||
CONFIG_ARCH_RISCV=y
|
CONFIG_ARCH_RISCV=y
|
||||||
CONFIG_ARCH_RISCV64=y
|
CONFIG_ARCH_RISCV64=y
|
||||||
|
|
||||||
@ -98,7 +97,7 @@ CONFIG_ARCH_RISCV64=y
|
|||||||
#
|
#
|
||||||
CONFIG_RT_USING_COMPONENTS_INIT=y
|
CONFIG_RT_USING_COMPONENTS_INIT=y
|
||||||
CONFIG_RT_USING_USER_MAIN=y
|
CONFIG_RT_USING_USER_MAIN=y
|
||||||
CONFIG_RT_MAIN_THREAD_STACK_SIZE=6144
|
CONFIG_RT_MAIN_THREAD_STACK_SIZE=8192
|
||||||
CONFIG_RT_MAIN_THREAD_PRIORITY=10
|
CONFIG_RT_MAIN_THREAD_PRIORITY=10
|
||||||
# CONFIG_RT_USING_LEGACY is not set
|
# CONFIG_RT_USING_LEGACY is not set
|
||||||
CONFIG_RT_USING_MSH=y
|
CONFIG_RT_USING_MSH=y
|
||||||
@ -125,25 +124,14 @@ CONFIG_RT_USING_DFS=y
|
|||||||
CONFIG_DFS_USING_POSIX=y
|
CONFIG_DFS_USING_POSIX=y
|
||||||
CONFIG_DFS_USING_WORKDIR=y
|
CONFIG_DFS_USING_WORKDIR=y
|
||||||
CONFIG_DFS_FD_MAX=16
|
CONFIG_DFS_FD_MAX=16
|
||||||
|
# CONFIG_RT_USING_DFS_V1 is not set
|
||||||
CONFIG_RT_USING_DFS_V2=y
|
CONFIG_RT_USING_DFS_V2=y
|
||||||
# CONFIG_RT_USING_DFS_ELMFAT is not set
|
# CONFIG_RT_USING_DFS_ELMFAT is not set
|
||||||
CONFIG_RT_USING_DFS_DEVFS=y
|
CONFIG_RT_USING_DFS_DEVFS=y
|
||||||
# CONFIG_RT_USING_DFS_ROMFS is not set
|
# CONFIG_RT_USING_DFS_ROMFS is not set
|
||||||
CONFIG_RT_USING_DFS_PTYFS=y
|
|
||||||
# CONFIG_RT_USING_DFS_CROMFS is not set
|
# CONFIG_RT_USING_DFS_CROMFS is not set
|
||||||
# CONFIG_RT_USING_DFS_TMPFS is not set
|
# CONFIG_RT_USING_DFS_TMPFS is not set
|
||||||
# CONFIG_RT_USING_DFS_MQUEUE is not set
|
# CONFIG_RT_USING_DFS_MQUEUE is not set
|
||||||
CONFIG_RT_USING_PAGECACHE=y
|
|
||||||
|
|
||||||
#
|
|
||||||
# page cache config
|
|
||||||
#
|
|
||||||
CONFIG_RT_PAGECACHE_COUNT=4096
|
|
||||||
CONFIG_RT_PAGECACHE_ASPACE_COUNT=1024
|
|
||||||
CONFIG_RT_PAGECACHE_PRELOAD=4
|
|
||||||
CONFIG_RT_PAGECACHE_HASH_NR=1024
|
|
||||||
CONFIG_RT_PAGECACHE_GC_WORK_LEVEL=90
|
|
||||||
CONFIG_RT_PAGECACHE_GC_STOP_LEVEL=70
|
|
||||||
# CONFIG_RT_USING_FAL is not set
|
# CONFIG_RT_USING_FAL is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
@ -153,7 +141,7 @@ CONFIG_RT_PAGECACHE_GC_STOP_LEVEL=70
|
|||||||
CONFIG_RT_USING_DEVICE_IPC=y
|
CONFIG_RT_USING_DEVICE_IPC=y
|
||||||
CONFIG_RT_UNAMED_PIPE_NUMBER=64
|
CONFIG_RT_UNAMED_PIPE_NUMBER=64
|
||||||
CONFIG_RT_USING_SYSTEM_WORKQUEUE=y
|
CONFIG_RT_USING_SYSTEM_WORKQUEUE=y
|
||||||
CONFIG_RT_SYSTEM_WORKQUEUE_STACKSIZE=2048
|
CONFIG_RT_SYSTEM_WORKQUEUE_STACKSIZE=8192
|
||||||
CONFIG_RT_SYSTEM_WORKQUEUE_PRIORITY=23
|
CONFIG_RT_SYSTEM_WORKQUEUE_PRIORITY=23
|
||||||
CONFIG_RT_USING_SERIAL=y
|
CONFIG_RT_USING_SERIAL=y
|
||||||
CONFIG_RT_USING_SERIAL_V1=y
|
CONFIG_RT_USING_SERIAL_V1=y
|
||||||
@ -223,11 +211,9 @@ CONFIG_RT_LIBC_TZ_DEFAULT_SEC=0
|
|||||||
CONFIG_RT_USING_POSIX_FS=y
|
CONFIG_RT_USING_POSIX_FS=y
|
||||||
CONFIG_RT_USING_POSIX_DEVIO=y
|
CONFIG_RT_USING_POSIX_DEVIO=y
|
||||||
CONFIG_RT_USING_POSIX_STDIO=y
|
CONFIG_RT_USING_POSIX_STDIO=y
|
||||||
# CONFIG_RT_USING_POSIX_POLL is not set
|
CONFIG_RT_USING_POSIX_POLL=y
|
||||||
# CONFIG_RT_USING_POSIX_SELECT is not set
|
# CONFIG_RT_USING_POSIX_SELECT is not set
|
||||||
# CONFIG_RT_USING_POSIX_EVENTFD is not set
|
# CONFIG_RT_USING_POSIX_EVENTFD is not set
|
||||||
# CONFIG_RT_USING_POSIX_EPOLL is not set
|
|
||||||
# CONFIG_RT_USING_POSIX_SIGNALFD is not set
|
|
||||||
# CONFIG_RT_USING_POSIX_TIMERFD is not set
|
# CONFIG_RT_USING_POSIX_TIMERFD is not set
|
||||||
# CONFIG_RT_USING_POSIX_SOCKET is not set
|
# CONFIG_RT_USING_POSIX_SOCKET is not set
|
||||||
CONFIG_RT_USING_POSIX_TERMIOS=y
|
CONFIG_RT_USING_POSIX_TERMIOS=y
|
||||||
@ -280,24 +266,6 @@ CONFIG_RT_USING_ADT_HASHMAP=y
|
|||||||
CONFIG_RT_USING_ADT_REF=y
|
CONFIG_RT_USING_ADT_REF=y
|
||||||
# CONFIG_RT_USING_RT_LINK is not set
|
# CONFIG_RT_USING_RT_LINK is not set
|
||||||
# CONFIG_RT_USING_VBUS is not set
|
# CONFIG_RT_USING_VBUS is not set
|
||||||
CONFIG_RT_USING_LWP=y
|
|
||||||
# CONFIG_LWP_DEBUG is not set
|
|
||||||
CONFIG_RT_LWP_MAX_NR=30
|
|
||||||
CONFIG_LWP_TASK_STACK_SIZE=16384
|
|
||||||
CONFIG_RT_CH_MSG_MAX_NR=1024
|
|
||||||
CONFIG_LWP_CONSOLE_INPUT_BUFFER_SIZE=1024
|
|
||||||
CONFIG_LWP_TID_MAX_NR=64
|
|
||||||
CONFIG_RT_LWP_SHM_MAX_NR=64
|
|
||||||
CONFIG_RT_USING_LDSO=y
|
|
||||||
# CONFIG_ELF_DEBUG_ENABLE is not set
|
|
||||||
# CONFIG_ELF_LOAD_RANDOMIZE is not set
|
|
||||||
CONFIG_LWP_USING_TERMINAL=y
|
|
||||||
CONFIG_LWP_PTY_MAX_PARIS_LIMIT=64
|
|
||||||
|
|
||||||
#
|
|
||||||
# Memory management
|
|
||||||
#
|
|
||||||
# CONFIG_RT_USING_MEMBLOCK is not set
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# RT-Thread Utestcases
|
# RT-Thread Utestcases
|
||||||
@ -1114,6 +1082,6 @@ CONFIG_BSP_USING_CV18XX=y
|
|||||||
CONFIG_C906_PLIC_PHY_ADDR=0x70000000
|
CONFIG_C906_PLIC_PHY_ADDR=0x70000000
|
||||||
CONFIG_IRQ_MAX_NR=64
|
CONFIG_IRQ_MAX_NR=64
|
||||||
CONFIG_TIMER_CLK_FREQ=25000000
|
CONFIG_TIMER_CLK_FREQ=25000000
|
||||||
CONFIG___STACKSIZE__=4096
|
CONFIG___STACKSIZE__=8192
|
||||||
# CONFIG_BOARD_TYPE_MILKV_DUO is not set
|
# CONFIG_BOARD_TYPE_MILKV_DUO is not set
|
||||||
CONFIG_BOARD_TYPE_MILKV_DUO256M=y
|
CONFIG_BOARD_TYPE_MILKV_DUO256M=y
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
**中文** | [English](README_en.md)
|
**中文** | [English](README_en.md)
|
||||||
|
|
||||||
## 概述
|
## 概述
|
||||||
CV180ZB/CV1800B/CV1801B 是面向民用消费监控 IP 摄像机、居家智能等多项产品领域而推出的高性能、低功耗芯片,集成了 H.264/H.265 视频压缩编码器和 ISP;支持数字寛动态、 3D 降噪、除雾、镜头畸变校正等多种图像增强和矫正算法,为客户提供专业级的视频图像质量。
|
CV18xx 系列芯片面向民用消费监控 IP 摄像机、居家智能等多项产品领域而推出的高性能、低功耗芯片,集成了 H.264/H.265 视频压缩编码器和 ISP;支持数字寛动态、 3D 降噪、除雾、镜头畸变校正等多种图像增强和矫正算法,为客户提供专业级的视频图像质量。
|
||||||
|
|
||||||
1. 处理器内核
|
1. 处理器内核
|
||||||
|
|
||||||
@ -34,30 +34,48 @@ CV180ZB/CV1800B/CV1801B 是面向民用消费监控 IP 摄像机、居家智能
|
|||||||
- 一个 USB Host / device 接口
|
- 一个 USB Host / device 接口
|
||||||
|
|
||||||
## Toolchain 下载
|
## 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](https://github.com/RT-Thread/toolchains-ci/releases/download/v1.7/riscv64-linux-musleabi_for_x86_64-pc-linux-gnu_latest.tar.bz2)
|
1. RT-Thread 标准版工具链:`riscv64-unknown-elf-gcc` 下载地址 [https://occ-oss-prod.oss-cn-hangzhou.aliyuncs.com/resource//1705395512373/Xuantie-900-gcc-elf-newlib-x86_64-V2.8.1-20240115.tar.gz](https://occ-oss-prod.oss-cn-hangzhou.aliyuncs.com/resource//1705395512373/Xuantie-900-gcc-elf-newlib-x86_64-V2.8.1-20240115.tar.gz)
|
||||||
|
|
||||||
|
2. RT-Smart 版工具链: `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](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 编译
|
当前 bsp 只支持 Linux 编译,推荐 ubuntu 22.04
|
||||||
|
|
||||||
正确解压后,在`rtconfig.py`中将 `riscv64-unknown-linux-musl-gcc` 工具链的本地路径加入 `EXEC_PATH` 或通过 `RTT_EXEC_PATH` 环境变量指定路径。
|
正确解压后,在`rtconfig.py`中将 `riscv64-unknown-elf-gcc` 或 `riscv64-unknown-linux-musl-gcc` 工具链的本地路径加入 `EXEC_PATH` 或通过 `RTT_EXEC_PATH` 环境变量指定路径。
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
|
# RT-Thread 标准版按照以下配置:
|
||||||
|
$ export RTT_CC_PREFIX=riscv64-unknown-elf-
|
||||||
|
$ export RTT_EXEC_PATH=/opt/Xuantie-900-gcc-elf-newlib-x86_64-V2.8.1/bin
|
||||||
|
|
||||||
|
# RT-Samrt 版按照以下配置:
|
||||||
|
$ export RTT_CC_PREFIX=riscv64-unknown-linux-musl-
|
||||||
$ export RTT_EXEC_PATH=/opt/riscv64-linux-musleabi_for_x86_64-pc-linux-gnu/bin
|
$ export RTT_EXEC_PATH=/opt/riscv64-linux-musleabi_for_x86_64-pc-linux-gnu/bin
|
||||||
```
|
```
|
||||||
|
|
||||||
## 编译
|
## 编译
|
||||||
1. 依赖安装
|
|
||||||
|
|
||||||
|
### 依赖安装
|
||||||
```shell
|
```shell
|
||||||
$ sudo apt install -y scons libncurses5-dev device-tree-compiler
|
$ sudo apt install -y scons libncurses5-dev device-tree-compiler
|
||||||
```
|
```
|
||||||
|
|
||||||
2. Linux平台下,可以先执行:
|
## 修改当前工程配置
|
||||||
|
|
||||||
|
Linux平台下,执行:
|
||||||
```shell
|
```shell
|
||||||
$ scons --menuconfig
|
$ scons --menuconfig
|
||||||
```
|
```
|
||||||
|
|
||||||
选择当前需要编译的目标开发板类型:
|
1. 默认编译为 RT-Thread 标准版,如果需要编译为 RT-Smart 版,请按照如下方式修改:
|
||||||
|
```shell
|
||||||
|
RT-Thread Kernel --->
|
||||||
|
[*] Enable RT-Thread Smart (microkernel on kernel/userland)
|
||||||
|
|
||||||
|
(0x80000000) The virtural address of kernel start
|
||||||
|
```
|
||||||
|
|
||||||
|
2. 选择当前需要编译的目标开发板类型:
|
||||||
```shell
|
```shell
|
||||||
Board Type (milkv-duo) --->
|
Board Type (milkv-duo) --->
|
||||||
( ) milkv-duo
|
( ) milkv-duo
|
||||||
@ -69,7 +87,7 @@ Board Type (milkv-duo) --->
|
|||||||
$ source ~/.env/env.sh
|
$ source ~/.env/env.sh
|
||||||
$ pkgs --update
|
$ pkgs --update
|
||||||
```
|
```
|
||||||
更新完软件包后,执行 `scons -j10` 或 `scons -j10 --verbose` 来编译这个板级支持包。或者通过 `scons --exec-path="GCC工具链路径"` 命令,在指定工具链位置的同时直接编译。编译正确无误,会产生 rtthread.elf 文件。
|
更新完软件包后,执行 `scons -j10` 或 `scons -j10 --verbose` 来编译这个板级支持包,编译正确无误,会产生 rtthread.elf 文件。
|
||||||
|
|
||||||
编译完成后脚本自动调用 `./mksdimg.sh` 脚本进行打包,并生成 `boot.sd`, 该文件即为 SD 卡启动的 kernel 文件。
|
编译完成后脚本自动调用 `./mksdimg.sh` 脚本进行打包,并生成 `boot.sd`, 该文件即为 SD 卡启动的 kernel 文件。
|
||||||
|
|
||||||
@ -118,22 +136,9 @@ Starting kernel ...
|
|||||||
heap: [0x802766b0 - 0x812766b0]
|
heap: [0x802766b0 - 0x812766b0]
|
||||||
|
|
||||||
\ | /
|
\ | /
|
||||||
- RT - Thread Smart Operating System
|
- RT - Thread Operating System
|
||||||
/ | \ 5.0.1 build Jun 28 2023 23:44:36
|
/ | \ 5.1.0 build Apr 7 2024 23:33:20
|
||||||
2006 - 2022 Copyright by RT-Thread team
|
2006 - 2024 Copyright by RT-Thread team
|
||||||
Hello RT-Smart!
|
Hello RISC-V!
|
||||||
msh />
|
msh />
|
||||||
```
|
```
|
||||||
## 驱动支持列表
|
|
||||||
|
|
||||||
| 驱动 | 支持情况 | 备注 |
|
|
||||||
| :--- | :------- | :---------------- |
|
|
||||||
| UART | 支持 | 默认波特率115200 |
|
|
||||||
|
|
||||||
|
|
||||||
## 支持开发板
|
|
||||||
- milk-v duo: [https://milkv.io/duo](https://milkv.io/duo)
|
|
||||||
|
|
||||||
## 联系人信息
|
|
||||||
|
|
||||||
维护人:[flyingcys](https://github.com/flyingcys)
|
|
@ -1,26 +1,26 @@
|
|||||||
[中文](README.md) | **English**
|
[中文](README.md) | **English**
|
||||||
|
|
||||||
## Overview
|
## Overview
|
||||||
CV180ZB/CV1800B/CV1801B are high-performance, low-power chips designed for consumer surveillance IP cameras, smart home devices, and other product areas. They integrate H.264/H.265 video compression encoders and ISPs, and support various image enhancement and correction algorithms such as digital wide dynamic range, 3D noise reduction, defogging, and lens distortion correction, providing professional-grade video image quality to customers.
|
The CV18xx series of chips are high-performance, low-power chips launched for various products in the field of civilian consumer surveillance IP cameras, smart homes, and more. These chips integrate H.264/H.265 video compression encoders, as well as ISP; they support various image enhancement and correction algorithms such as digital wide dynamic range, 3D noise reduction, defogging, and lens distortion correction, providing customers with professional-level video image quality.
|
||||||
|
|
||||||
1. Processor Core
|
1. Processor Core
|
||||||
- Main processor: RISCV C906 @ 1.0Ghz
|
- Main Processor: RISC-V C906 @ 1.0Ghz
|
||||||
- 32KB I-cache, 64KB D-Cache
|
- 32KB I-cache, 64KB D-Cache
|
||||||
- Integrated vector and floating-point units (FPU).
|
- Integrated Vector and Floating-Point Unit (FPU).
|
||||||
- Coprocessor: RISCV C906 @ 700Mhz
|
- Co-processor: RISC-V C906 @ 700Mhz
|
||||||
- Integrated floating-point unit (FPU).
|
- Integrated Floating-Point Unit (FPU)
|
||||||
|
|
||||||
2. Memory Interface
|
2. Storage Interface
|
||||||
- Built-in DRAM: DDR2 16bitx1, with a maximum speed of 1333Mbps, capacity of 512Mbit (64MB).
|
- Built-in DRAM: DDR2 16bitx1, with a maximum speed of 1333Mbps, and a capacity of 512Mbit (64MB)
|
||||||
- Support for SPI NOR flash interface (1.8V / 3.0V)
|
- Support for SPI NOR flash interface (1.8V / 3.0V)
|
||||||
- Support for 1, 2, 4-wire modes
|
- Supports 1, 2, 4 line modes
|
||||||
- Maximum support of 256MBytes
|
- Maximum support of 256MByte
|
||||||
- Support for SPI Nand flash interface (1.8V / 3.0V)
|
- Support for SPI Nand flash interface (1.8V / 3.0V)
|
||||||
- Support for 1KB/2KB/4KB page (corresponding to a maximum capacity of 16GB/32GB/64GB)
|
- Supports 1KB/2KB/4KB page (corresponding to maximum capacity of 16GB/32GB/64GB)
|
||||||
- Use the built-in ECC module of the device itself
|
- Utilizes the device's built-in ECC module
|
||||||
|
|
||||||
3. Peripherals
|
3. Peripherals
|
||||||
- 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 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 3x I2C
|
||||||
- Up to 5x UART
|
- Up to 5x UART
|
||||||
- Up to 1x SDIO1
|
- Up to 1x SDIO1
|
||||||
@ -29,58 +29,75 @@ CV180ZB/CV1800B/CV1801B are high-performance, low-power chips designed for consu
|
|||||||
- Up to 7x PWM
|
- Up to 7x PWM
|
||||||
- Up to 1x RUN
|
- Up to 1x RUN
|
||||||
- Up to 1x JTAG
|
- Up to 1x JTAG
|
||||||
- Integrated MAC PHY supporting 10/100Mbps full-duplex or half-duplex mode
|
- Integrated MAC PHY supports 10/100Mbps full or half duplex mode
|
||||||
- One USB Host / device interface
|
- One USB host/device interface
|
||||||
|
|
||||||
## Toolchain Download
|
## Toolchain Download
|
||||||
Download the `riscv64-unknown-linux-musl-gcc` toolchain from: [https://github.com/RT-Thread/toolchains-ci/releases/download/v1.7/riscv64-linux-musleabi_for_x86_64-pc-linux-gnu_latest.tar.bz2](https://github.com/RT-Thread/toolchains-ci/releases/download/v1.7/riscv64-linux-musleabi_for_x86_64-pc-linux-gnu_latest.tar.bz2)
|
1. RT-Thread Standard Edition Toolchain: `riscv64-unknown-elf-gcc` Download Link [https://occ-oss-prod.oss-cn-hangzhou.aliyuncs.com/resource//1705395512373/Xuantie-900-gcc-elf-newlib-x86_64-V2.8.1-20240115.tar.gz](https://occ-oss-prod.oss-cn-hangzhou.aliyuncs.com/resource//1705395512373/Xuantie-900-gcc-elf-newlib-x86_64-V2.8.1-20240115.tar.gz)
|
||||||
|
|
||||||
|
2. RT-Smart Edition Toolchain: `riscv64-unknown-linux-musl-gcc` Download Link [https://github.com/RT-Thread/toolchains-ci/releases/download/v1.7/riscv64-linux-musleabi_for_x86_64-pc-linux-gnu_latest.tar.bz2](https://github.com/RT-Thread/toolchains-ci/releases/download/v1.7/riscv64-linux-musleabi_for_x86_64-pc-linux-gnu_latest.tar.bz2)
|
||||||
|
|
||||||
> Note:
|
> Note:
|
||||||
The current BSP only supports Linux compilation.
|
The current bsp only supports Linux compilation, and it is recommended to use Ubuntu 22.04
|
||||||
|
|
||||||
After correct extraction, add the local path of the `riscv64-unknown-linux-musl-gcc` toolchain to `EXEC_PATH` in `rtconfig.py`, or specify the path through the `RTT_EXEC_PATH` environment variable.
|
After correctly extracting, add the local path of the `riscv64-unknown-elf-gcc` or `riscv64-unknown-linux-musl-gcc` toolchain to `EXEC_PATH` in `rtconfig.py` or specify the path through the `RTT_EXEC_PATH` environment variable.
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
|
# For RT-Thread Standard Edition, use the following configuration:
|
||||||
|
$ export RTT_CC_PREFIX=riscv64-unknown-elf-
|
||||||
|
$ export RTT_EXEC_PATH=/opt/Xuantie-900-gcc-elf-newlib-x86_64-V2.8.1/bin
|
||||||
|
|
||||||
|
# For RT-Smart Edition, use the following configuration:
|
||||||
|
$ export RTT_CC_PREFIX=riscv64-unknown-linux-musl-
|
||||||
$ export RTT_EXEC_PATH=/opt/riscv64-linux-musleabi_for_x86_64-pc-linux-gnu/bin
|
$ export RTT_EXEC_PATH=/opt/riscv64-linux-musleabi_for_x86_64-pc-linux-gnu/bin
|
||||||
```
|
```
|
||||||
|
|
||||||
## Compilation
|
## Compilation
|
||||||
1. Installing Dependencies
|
|
||||||
```shell
|
|
||||||
$ sudo apt install -y device-tree-compiler
|
|
||||||
```
|
|
||||||
On the Linux platform, you can execute:
|
|
||||||
|
|
||||||
|
### Dependency Installation
|
||||||
|
```shell
|
||||||
|
$ sudo apt install -y scons libncurses5-dev device-tree-compiler
|
||||||
|
```
|
||||||
|
|
||||||
|
## Modify Current Project Configuration
|
||||||
|
|
||||||
|
For the Linux platform, execute:
|
||||||
```shell
|
```shell
|
||||||
$ scons --menuconfig
|
$ scons --menuconfig
|
||||||
```
|
```
|
||||||
|
|
||||||
Select the type of target board that you want to compile:
|
1. By default, compile as RT-Thread Standard Edition. If you need to compile as RT-Smart Edition, modify as follows:
|
||||||
|
```shell
|
||||||
|
RT-Thread Kernel --->
|
||||||
|
[*] Enable RT-Thread Smart (microkernel on kernel/userland)
|
||||||
|
|
||||||
|
(0x80000000) The virtual address of kernel start
|
||||||
|
```
|
||||||
|
|
||||||
|
2. Select the current target development board type:
|
||||||
```shell
|
```shell
|
||||||
Board Type (milkv-duo) --->
|
Board Type (milkv-duo) --->
|
||||||
( ) milkv-duo
|
( ) milkv-duo
|
||||||
(X) milkv-duo256m
|
(X) milkv-duo256m
|
||||||
```
|
```
|
||||||
|
|
||||||
It will automatically download environment-related scripts to the ~/.env directory, and then execute
|
It will automatically download relevant scripts to the ~/.env directory, then execute:
|
||||||
```shell
|
```shell
|
||||||
$ source ~/.env/env.sh
|
$ source ~/.env/env.sh
|
||||||
$ pkgs --update
|
$ pkgs --update
|
||||||
```
|
```
|
||||||
|
After updating the software package, execute `scons -j10` or `scons -j10 --verbose` to compile this board support package. If the compilation is successful, an rtthread.elf file will be generated.
|
||||||
|
|
||||||
After updating the software packages, use `scons -j10` or `scons -j10 --verbose` to compile this board support package. Alternatively, you can use the command `scons --exec-path="GCC_toolchain_path"` to specify the toolchain location for compilation. If the compilation is successful, an rtthread.elf file will be generated.
|
After the compilation is complete, the script automatically calls the `./mksdimg.sh` script to package and generate `boot.sd`, which is the kernel file for SD card startup.
|
||||||
|
|
||||||
After the compilation is completed, the script automatically calls the `./mksdimg.sh` script to package and generate the `boot.sd` file, which is the kernel file for SD card boot.
|
|
||||||
|
|
||||||
## Running
|
## Running
|
||||||
1. Divide the SD card into 2 partitions, with the first partition used to store bin files and the second partition used as a data storage partition. The partition format is FAT32.
|
1. Divide the SD card into 2 partitions, with the first partition used to store bin files, and the second partition used as a data storage partition, with `FAT32` format.
|
||||||
|
2. Copy the `fip.bin` and `boot.sd` files from the root directory to the first partition of the SD card. Subsequent firmware updates only require copying the `boot.sd` file.
|
||||||
2. Copy the `fip.bin` and `boot.sd` files from the root directory to the first partition of the SD card. For subsequent firmware updates, you only need to copy the `boot.sd` file.
|
|
||||||
Where:
|
Where:
|
||||||
- fip.bin: the bin file after fsbl、opensbi and U-Boot are packaged
|
- fip.bin: fsbl, opensbi, and uboot packaged bin file
|
||||||
- boot.sd: the bin file after the kernel is packaged
|
- boot.sd: kernel packaged bin file
|
||||||
|
|
||||||
After updating `boot.sd`, power on again and you will see the serial output information:
|
After updating `boot.sd`, restart to see the serial port output:
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
U-Boot 2021.10 (Jun 26 2023 - 14:09:06 +0800)cvitek_cv180x
|
U-Boot 2021.10 (Jun 26 2023 - 14:09:06 +0800)cvitek_cv180x
|
||||||
@ -92,10 +109,10 @@ Loading Environment from <NULL>... OK
|
|||||||
In: serial
|
In: serial
|
||||||
Out: serial
|
Out: serial
|
||||||
Err: serial
|
Err: serial
|
||||||
Net:
|
Net:
|
||||||
Warning: ethernet@4070000 (eth0) using random MAC address - 62:80:19:6c:d4:64
|
Warning: ethernet@4070000 (eth0) using random MAC address - 62:80:19:6c:d4:64
|
||||||
eth0: ethernet@4070000
|
eth0: ethernet@4070000
|
||||||
Hit any key to stop autoboot: 0
|
Hit any key to stop autoboot: 0
|
||||||
Boot from SD ...
|
Boot from SD ...
|
||||||
switch to partitions #0, OK
|
switch to partitions #0, OK
|
||||||
mmc0 is current device
|
mmc0 is current device
|
||||||
@ -118,21 +135,9 @@ Starting kernel ...
|
|||||||
heap: [0x802766b0 - 0x812766b0]
|
heap: [0x802766b0 - 0x812766b0]
|
||||||
|
|
||||||
\ | /
|
\ | /
|
||||||
- RT - Thread Smart Operating System
|
- RT - Thread Operating System
|
||||||
/ | \ 5.0.1 build Jun 28 2023 23:44:36
|
/ | \ 5.1.0 build Apr 7 2024 23:33:20
|
||||||
2006 - 2022 Copyright by RT-Thread team
|
2006 - 2024 Copyright by RT-Thread team
|
||||||
Hello RT-Smart!
|
Hello RISC-V!
|
||||||
msh />
|
msh />
|
||||||
```
|
```
|
||||||
## Driver Support List
|
|
||||||
|
|
||||||
| Driver | Support Status | Remarks |
|
|
||||||
| :----- | :------------- | :--------------------- |
|
|
||||||
| UART | Supported | Default baud rate 115200 |
|
|
||||||
|
|
||||||
## Supported Development Boards
|
|
||||||
- milk-v duo: [https://milkv.io/duo](https://milkv.io/duo)
|
|
||||||
|
|
||||||
## Contact information
|
|
||||||
|
|
||||||
Maintenance person:[flyingcys](https://github.com/flyingcys)
|
|
@ -13,7 +13,10 @@
|
|||||||
|
|
||||||
int main(void)
|
int main(void)
|
||||||
{
|
{
|
||||||
|
#ifdef RT_USING_SMART
|
||||||
rt_kprintf("Hello RT-Smart!\n");
|
rt_kprintf("Hello RT-Smart!\n");
|
||||||
|
#else
|
||||||
|
rt_kprintf("Hello RISC-V!\n");
|
||||||
|
#endif
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -7,7 +7,6 @@
|
|||||||
/* RT-Thread Kernel */
|
/* RT-Thread Kernel */
|
||||||
|
|
||||||
#define RT_NAME_MAX 8
|
#define RT_NAME_MAX 8
|
||||||
#define RT_USING_SMART
|
|
||||||
#define RT_CPUS_NR 1
|
#define RT_CPUS_NR 1
|
||||||
#define RT_ALIGN_SIZE 8
|
#define RT_ALIGN_SIZE 8
|
||||||
#define RT_THREAD_PRIORITY_32
|
#define RT_THREAD_PRIORITY_32
|
||||||
@ -18,10 +17,10 @@
|
|||||||
#define RT_HOOK_USING_FUNC_PTR
|
#define RT_HOOK_USING_FUNC_PTR
|
||||||
#define RT_USING_IDLE_HOOK
|
#define RT_USING_IDLE_HOOK
|
||||||
#define RT_IDLE_HOOK_LIST_SIZE 4
|
#define RT_IDLE_HOOK_LIST_SIZE 4
|
||||||
#define IDLE_THREAD_STACK_SIZE 1024
|
#define IDLE_THREAD_STACK_SIZE 8192
|
||||||
#define RT_USING_TIMER_SOFT
|
#define RT_USING_TIMER_SOFT
|
||||||
#define RT_TIMER_THREAD_PRIO 4
|
#define RT_TIMER_THREAD_PRIO 4
|
||||||
#define RT_TIMER_THREAD_STACK_SIZE 2048
|
#define RT_TIMER_THREAD_STACK_SIZE 8192
|
||||||
|
|
||||||
/* kservice optimization */
|
/* kservice optimization */
|
||||||
|
|
||||||
@ -57,7 +56,6 @@
|
|||||||
#define ARCH_CPU_64BIT
|
#define ARCH_CPU_64BIT
|
||||||
#define RT_USING_CACHE
|
#define RT_USING_CACHE
|
||||||
#define ARCH_MM_MMU
|
#define ARCH_MM_MMU
|
||||||
#define KERNEL_VADDR_START 0x80000000
|
|
||||||
#define ARCH_RISCV
|
#define ARCH_RISCV
|
||||||
#define ARCH_RISCV64
|
#define ARCH_RISCV64
|
||||||
|
|
||||||
@ -65,7 +63,7 @@
|
|||||||
|
|
||||||
#define RT_USING_COMPONENTS_INIT
|
#define RT_USING_COMPONENTS_INIT
|
||||||
#define RT_USING_USER_MAIN
|
#define RT_USING_USER_MAIN
|
||||||
#define RT_MAIN_THREAD_STACK_SIZE 6144
|
#define RT_MAIN_THREAD_STACK_SIZE 8192
|
||||||
#define RT_MAIN_THREAD_PRIORITY 10
|
#define RT_MAIN_THREAD_PRIORITY 10
|
||||||
#define RT_USING_MSH
|
#define RT_USING_MSH
|
||||||
#define RT_USING_FINSH
|
#define RT_USING_FINSH
|
||||||
@ -90,24 +88,13 @@
|
|||||||
#define DFS_FD_MAX 16
|
#define DFS_FD_MAX 16
|
||||||
#define RT_USING_DFS_V2
|
#define RT_USING_DFS_V2
|
||||||
#define RT_USING_DFS_DEVFS
|
#define RT_USING_DFS_DEVFS
|
||||||
#define RT_USING_DFS_PTYFS
|
|
||||||
#define RT_USING_PAGECACHE
|
|
||||||
|
|
||||||
/* page cache config */
|
|
||||||
|
|
||||||
#define RT_PAGECACHE_COUNT 4096
|
|
||||||
#define RT_PAGECACHE_ASPACE_COUNT 1024
|
|
||||||
#define RT_PAGECACHE_PRELOAD 4
|
|
||||||
#define RT_PAGECACHE_HASH_NR 1024
|
|
||||||
#define RT_PAGECACHE_GC_WORK_LEVEL 90
|
|
||||||
#define RT_PAGECACHE_GC_STOP_LEVEL 70
|
|
||||||
|
|
||||||
/* Device Drivers */
|
/* Device Drivers */
|
||||||
|
|
||||||
#define RT_USING_DEVICE_IPC
|
#define RT_USING_DEVICE_IPC
|
||||||
#define RT_UNAMED_PIPE_NUMBER 64
|
#define RT_UNAMED_PIPE_NUMBER 64
|
||||||
#define RT_USING_SYSTEM_WORKQUEUE
|
#define RT_USING_SYSTEM_WORKQUEUE
|
||||||
#define RT_SYSTEM_WORKQUEUE_STACKSIZE 2048
|
#define RT_SYSTEM_WORKQUEUE_STACKSIZE 8192
|
||||||
#define RT_SYSTEM_WORKQUEUE_PRIORITY 23
|
#define RT_SYSTEM_WORKQUEUE_PRIORITY 23
|
||||||
#define RT_USING_SERIAL
|
#define RT_USING_SERIAL
|
||||||
#define RT_USING_SERIAL_V1
|
#define RT_USING_SERIAL_V1
|
||||||
@ -139,6 +126,7 @@
|
|||||||
#define RT_USING_POSIX_FS
|
#define RT_USING_POSIX_FS
|
||||||
#define RT_USING_POSIX_DEVIO
|
#define RT_USING_POSIX_DEVIO
|
||||||
#define RT_USING_POSIX_STDIO
|
#define RT_USING_POSIX_STDIO
|
||||||
|
#define RT_USING_POSIX_POLL
|
||||||
#define RT_USING_POSIX_TERMIOS
|
#define RT_USING_POSIX_TERMIOS
|
||||||
#define RT_USING_POSIX_DELAY
|
#define RT_USING_POSIX_DELAY
|
||||||
#define RT_USING_POSIX_CLOCK
|
#define RT_USING_POSIX_CLOCK
|
||||||
@ -164,19 +152,6 @@
|
|||||||
#define RT_USING_ADT_BITMAP
|
#define RT_USING_ADT_BITMAP
|
||||||
#define RT_USING_ADT_HASHMAP
|
#define RT_USING_ADT_HASHMAP
|
||||||
#define RT_USING_ADT_REF
|
#define RT_USING_ADT_REF
|
||||||
#define RT_USING_LWP
|
|
||||||
#define RT_LWP_MAX_NR 30
|
|
||||||
#define LWP_TASK_STACK_SIZE 16384
|
|
||||||
#define RT_CH_MSG_MAX_NR 1024
|
|
||||||
#define LWP_CONSOLE_INPUT_BUFFER_SIZE 1024
|
|
||||||
#define LWP_TID_MAX_NR 64
|
|
||||||
#define RT_LWP_SHM_MAX_NR 64
|
|
||||||
#define RT_USING_LDSO
|
|
||||||
#define LWP_USING_TERMINAL
|
|
||||||
#define LWP_PTY_MAX_PARIS_LIMIT 64
|
|
||||||
|
|
||||||
/* Memory management */
|
|
||||||
|
|
||||||
|
|
||||||
/* RT-Thread Utestcases */
|
/* RT-Thread Utestcases */
|
||||||
|
|
||||||
@ -312,7 +287,7 @@
|
|||||||
#define C906_PLIC_PHY_ADDR 0x70000000
|
#define C906_PLIC_PHY_ADDR 0x70000000
|
||||||
#define IRQ_MAX_NR 64
|
#define IRQ_MAX_NR 64
|
||||||
#define TIMER_CLK_FREQ 25000000
|
#define TIMER_CLK_FREQ 25000000
|
||||||
#define __STACKSIZE__ 4096
|
#define __STACKSIZE__ 8192
|
||||||
#define BOARD_TYPE_MILKV_DUO256M
|
#define BOARD_TYPE_MILKV_DUO256M
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -16,7 +16,7 @@ if os.getenv('RTT_CC'):
|
|||||||
|
|
||||||
if CROSS_TOOL == 'gcc':
|
if CROSS_TOOL == 'gcc':
|
||||||
PLATFORM = 'gcc'
|
PLATFORM = 'gcc'
|
||||||
EXEC_PATH = r'/opt/riscv64-linux-musleabi_for_x86_64-pc-linux-gnu/bin'
|
EXEC_PATH = r'/opt/Xuantie-900-gcc-elf-newlib-x86_64-V2.8.1/bin'
|
||||||
else:
|
else:
|
||||||
print('Please make sure your toolchains is GNU GCC!')
|
print('Please make sure your toolchains is GNU GCC!')
|
||||||
exit(0)
|
exit(0)
|
||||||
@ -30,7 +30,7 @@ CHIP_TYPE = 'cv180x'
|
|||||||
if PLATFORM == 'gcc':
|
if PLATFORM == 'gcc':
|
||||||
# toolchains
|
# toolchains
|
||||||
#PREFIX = 'riscv64-unknown-elf-'
|
#PREFIX = 'riscv64-unknown-elf-'
|
||||||
PREFIX = os.getenv('RTT_CC_PREFIX') or 'riscv64-unknown-linux-musl-'
|
PREFIX = os.getenv('RTT_CC_PREFIX') or 'riscv64-unknown-elf-'
|
||||||
CC = PREFIX + 'gcc'
|
CC = PREFIX + 'gcc'
|
||||||
CXX = PREFIX + 'g++'
|
CXX = PREFIX + 'g++'
|
||||||
AS = PREFIX + 'gcc'
|
AS = PREFIX + 'gcc'
|
||||||
|
Loading…
x
Reference in New Issue
Block a user