diff --git a/README.md b/README.md index f1d7637f004d4bdc46a05c4c719621d5e1ede5fd..1cddd390e2228a06c785e143cea16fc6bd94ecee 100644 --- a/README.md +++ b/README.md @@ -76,6 +76,7 @@ RT-Thread Smart 是基于 RT-Thread 操作系统上的混合操作系统,简 - [正点原子阿波罗 STM32F429 上手指南](/rt-thread-version/rt-thread-standard/tutorial/quick-start/stm32f429-atk-apolo/quick-start.md) - [野火 I.MX RT1052 上手指南](/rt-thread-version/rt-thread-standard/tutorial/quick-start/imxrt1052-fire-mini/quick-start.md) - [正点原子 I.MX RT1052 号令者上手指南](/rt-thread-version/rt-thread-standard/tutorial/quick-start/imxrt1052-atk-commander/quick-start.md) +- [OPENHW Core-V-MCU](/rt-thread-version/rt-thread-standard/tutorial/quick-start/OPENHW-Core-V-MCU/quick-start.md) - [其他...](/rt-thread-version/rt-thread-standard/tutorial/quick-start/iot_board/quick-start.md) #### 内核学习 diff --git a/rt-thread-version/rt-thread-standard/_sidebar.md b/rt-thread-version/rt-thread-standard/_sidebar.md index 12f442a01118ff1a6ee32f170d5d82083adb1204..cc00af8facc7ff424757024ad3c69b79af761f56 100644 --- a/rt-thread-version/rt-thread-standard/_sidebar.md +++ b/rt-thread-version/rt-thread-standard/_sidebar.md @@ -19,6 +19,7 @@ - [新唐NK-980IOT](/rt-thread-version/rt-thread-standard/tutorial/quick-start/nk-980iot/quick-start.md) - [Nordic-nRF5x](/rt-thread-version/rt-thread-standard/tutorial/quick-start/nordic-nrf5x/quick-start.md) - [英飞凌 CY8CPROTO-062-4343W](/rt-thread-version/rt-thread-standard/tutorial/quick-start/CY8CPROTO-062-4343W/quick-start.md) + - [OPENHW Core-V-MCU](/rt-thread-version/rt-thread-standard/tutorial/quick-start/OPENHW-Core-V-MCU/quick-start.md) - [其他开发板...](/rt-thread-version/rt-thread-standard/tutorial/quick-start/more.md) - 内核 - [内核基础](/rt-thread-version/rt-thread-standard/programming-manual/basic/basic.md) diff --git a/rt-thread-version/rt-thread-standard/tutorial/quick-start/OPENHW-Core-V-MCU/figures/CORE-V-MCU_Block_Diagram.png b/rt-thread-version/rt-thread-standard/tutorial/quick-start/OPENHW-Core-V-MCU/figures/CORE-V-MCU_Block_Diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..63ec66b7d8a99e7e1afb27da0008227c6fb4d220 Binary files /dev/null and b/rt-thread-version/rt-thread-standard/tutorial/quick-start/OPENHW-Core-V-MCU/figures/CORE-V-MCU_Block_Diagram.png differ diff --git a/rt-thread-version/rt-thread-standard/tutorial/quick-start/OPENHW-Core-V-MCU/figures/IDE-MAKE.png b/rt-thread-version/rt-thread-standard/tutorial/quick-start/OPENHW-Core-V-MCU/figures/IDE-MAKE.png new file mode 100644 index 0000000000000000000000000000000000000000..e98217b248ee20f949d04e5b86b1afa2b931e301 Binary files /dev/null and b/rt-thread-version/rt-thread-standard/tutorial/quick-start/OPENHW-Core-V-MCU/figures/IDE-MAKE.png differ diff --git a/rt-thread-version/rt-thread-standard/tutorial/quick-start/OPENHW-Core-V-MCU/figures/Properites.png b/rt-thread-version/rt-thread-standard/tutorial/quick-start/OPENHW-Core-V-MCU/figures/Properites.png new file mode 100644 index 0000000000000000000000000000000000000000..7a1dc843b5ffe7bd64cbef12efea58ac2340d9d8 Binary files /dev/null and b/rt-thread-version/rt-thread-standard/tutorial/quick-start/OPENHW-Core-V-MCU/figures/Properites.png differ diff --git a/rt-thread-version/rt-thread-standard/tutorial/quick-start/OPENHW-Core-V-MCU/figures/compilation result of core-v-mcu .png b/rt-thread-version/rt-thread-standard/tutorial/quick-start/OPENHW-Core-V-MCU/figures/compilation result of core-v-mcu .png new file mode 100644 index 0000000000000000000000000000000000000000..eeda881a62944c110ccd9ab0c03f64749de59d07 Binary files /dev/null and b/rt-thread-version/rt-thread-standard/tutorial/quick-start/OPENHW-Core-V-MCU/figures/compilation result of core-v-mcu .png differ diff --git a/rt-thread-version/rt-thread-standard/tutorial/quick-start/OPENHW-Core-V-MCU/figures/debug.png b/rt-thread-version/rt-thread-standard/tutorial/quick-start/OPENHW-Core-V-MCU/figures/debug.png new file mode 100644 index 0000000000000000000000000000000000000000..b92ffbb9ce5f728f338fdae2d84f4719775518ca Binary files /dev/null and b/rt-thread-version/rt-thread-standard/tutorial/quick-start/OPENHW-Core-V-MCU/figures/debug.png differ diff --git a/rt-thread-version/rt-thread-standard/tutorial/quick-start/OPENHW-Core-V-MCU/figures/debug2.png b/rt-thread-version/rt-thread-standard/tutorial/quick-start/OPENHW-Core-V-MCU/figures/debug2.png new file mode 100644 index 0000000000000000000000000000000000000000..a6195aa82061d7edfac588e30dbfb9ca7121d193 Binary files /dev/null and b/rt-thread-version/rt-thread-standard/tutorial/quick-start/OPENHW-Core-V-MCU/figures/debug2.png differ diff --git a/rt-thread-version/rt-thread-standard/tutorial/quick-start/OPENHW-Core-V-MCU/figures/import_2.png b/rt-thread-version/rt-thread-standard/tutorial/quick-start/OPENHW-Core-V-MCU/figures/import_2.png new file mode 100644 index 0000000000000000000000000000000000000000..8cea991e974449e161912b289d584366084247da Binary files /dev/null and b/rt-thread-version/rt-thread-standard/tutorial/quick-start/OPENHW-Core-V-MCU/figures/import_2.png differ diff --git a/rt-thread-version/rt-thread-standard/tutorial/quick-start/OPENHW-Core-V-MCU/figures/make.png b/rt-thread-version/rt-thread-standard/tutorial/quick-start/OPENHW-Core-V-MCU/figures/make.png new file mode 100644 index 0000000000000000000000000000000000000000..80c64b9cc906fa4e1ff432da43335ce62ab8d2a7 Binary files /dev/null and b/rt-thread-version/rt-thread-standard/tutorial/quick-start/OPENHW-Core-V-MCU/figures/make.png differ diff --git a/rt-thread-version/rt-thread-standard/tutorial/quick-start/OPENHW-Core-V-MCU/figures/makefile project.png b/rt-thread-version/rt-thread-standard/tutorial/quick-start/OPENHW-Core-V-MCU/figures/makefile project.png new file mode 100644 index 0000000000000000000000000000000000000000..578186aa5e9e42de8e52c27ffbc3c44efa9d3ea9 Binary files /dev/null and b/rt-thread-version/rt-thread-standard/tutorial/quick-start/OPENHW-Core-V-MCU/figures/makefile project.png differ diff --git a/rt-thread-version/rt-thread-standard/tutorial/quick-start/OPENHW-Core-V-MCU/figures/openocd.png b/rt-thread-version/rt-thread-standard/tutorial/quick-start/OPENHW-Core-V-MCU/figures/openocd.png new file mode 100644 index 0000000000000000000000000000000000000000..0091126337ef941eaa8f714ab6c5396ab1cd4bfe Binary files /dev/null and b/rt-thread-version/rt-thread-standard/tutorial/quick-start/OPENHW-Core-V-MCU/figures/openocd.png differ diff --git a/rt-thread-version/rt-thread-standard/tutorial/quick-start/OPENHW-Core-V-MCU/figures/register file.png b/rt-thread-version/rt-thread-standard/tutorial/quick-start/OPENHW-Core-V-MCU/figures/register file.png new file mode 100644 index 0000000000000000000000000000000000000000..4753066c3bda0c6366a110cacfded412f574250a Binary files /dev/null and b/rt-thread-version/rt-thread-standard/tutorial/quick-start/OPENHW-Core-V-MCU/figures/register file.png differ diff --git a/rt-thread-version/rt-thread-standard/tutorial/quick-start/OPENHW-Core-V-MCU/figures/remove ifdef.png b/rt-thread-version/rt-thread-standard/tutorial/quick-start/OPENHW-Core-V-MCU/figures/remove ifdef.png new file mode 100644 index 0000000000000000000000000000000000000000..36866d176570d018126d3a9866506376282d9d55 Binary files /dev/null and b/rt-thread-version/rt-thread-standard/tutorial/quick-start/OPENHW-Core-V-MCU/figures/remove ifdef.png differ diff --git a/rt-thread-version/rt-thread-standard/tutorial/quick-start/OPENHW-Core-V-MCU/figures/run.png b/rt-thread-version/rt-thread-standard/tutorial/quick-start/OPENHW-Core-V-MCU/figures/run.png new file mode 100644 index 0000000000000000000000000000000000000000..719ced7cf69e7b1c2827886fbd6a74184a333cfb Binary files /dev/null and b/rt-thread-version/rt-thread-standard/tutorial/quick-start/OPENHW-Core-V-MCU/figures/run.png differ diff --git a/rt-thread-version/rt-thread-standard/tutorial/quick-start/OPENHW-Core-V-MCU/figures/settings.png b/rt-thread-version/rt-thread-standard/tutorial/quick-start/OPENHW-Core-V-MCU/figures/settings.png new file mode 100644 index 0000000000000000000000000000000000000000..4bacec3a64eba06632c20e24a9f5b64ccfb6c4de Binary files /dev/null and b/rt-thread-version/rt-thread-standard/tutorial/quick-start/OPENHW-Core-V-MCU/figures/settings.png differ diff --git a/rt-thread-version/rt-thread-standard/tutorial/quick-start/OPENHW-Core-V-MCU/figures/svd.png b/rt-thread-version/rt-thread-standard/tutorial/quick-start/OPENHW-Core-V-MCU/figures/svd.png new file mode 100644 index 0000000000000000000000000000000000000000..e0aa493badeb161262660b79e99c97c97028e828 Binary files /dev/null and b/rt-thread-version/rt-thread-standard/tutorial/quick-start/OPENHW-Core-V-MCU/figures/svd.png differ diff --git a/rt-thread-version/rt-thread-standard/tutorial/quick-start/OPENHW-Core-V-MCU/figures/test-result1.png b/rt-thread-version/rt-thread-standard/tutorial/quick-start/OPENHW-Core-V-MCU/figures/test-result1.png new file mode 100644 index 0000000000000000000000000000000000000000..5588e848428a816b859c37d31fbf691b81a525a1 Binary files /dev/null and b/rt-thread-version/rt-thread-standard/tutorial/quick-start/OPENHW-Core-V-MCU/figures/test-result1.png differ diff --git a/rt-thread-version/rt-thread-standard/tutorial/quick-start/OPENHW-Core-V-MCU/figures/test-result2.png b/rt-thread-version/rt-thread-standard/tutorial/quick-start/OPENHW-Core-V-MCU/figures/test-result2.png new file mode 100644 index 0000000000000000000000000000000000000000..cb7e905a8d358cd4f6d2666a18bc7349fbaff613 Binary files /dev/null and b/rt-thread-version/rt-thread-standard/tutorial/quick-start/OPENHW-Core-V-MCU/figures/test-result2.png differ diff --git a/rt-thread-version/rt-thread-standard/tutorial/quick-start/OPENHW-Core-V-MCU/quick-start.md b/rt-thread-version/rt-thread-standard/tutorial/quick-start/OPENHW-Core-V-MCU/quick-start.md new file mode 100644 index 0000000000000000000000000000000000000000..5ff63f0541197f2bc73bb594aa4027bb49d32777 --- /dev/null +++ b/rt-thread-version/rt-thread-standard/tutorial/quick-start/OPENHW-Core-V-MCU/quick-start.md @@ -0,0 +1,198 @@ +# Core-V-MCU 说明 + +## 1 MCU简介 + +Core-V-MCU的目的是展示cv32e40p,这是Open Hardware Group(OpenHW)提供的经过充分验证的RISC-V内核。cv32e40p核心连接到一组具有代表性的外围设备。 + +![CORE-V-MCU_Block_Diagram](figures/CORE-V-MCU_Block_Diagram.png) + +**Core-V-MCU资源:** + +- 2xUART +- 2xI2C master +- 1xI2C slave +- 2xQSPI master +- 1xCAMERA +- 1xSDIO +- 4xPWM +- eFPGA with 4 math units + +更多信息请访问[Core-V-MCU介绍](https://docs.openhwgroup.org/projects/core-v-mcu/doc-src/overview.html) + +更多资源[OpenHW官网](https://www.openhwgroup.org/) + +## 2 编译说明 + +板级包支持 RISC-V GCC 开发环境,以下是具体版本信息: + +| IDE/编译器 | 已测试版本 | +| ---------- | ----------------------- | +| GCC | riscv32-unknown-elf-gcc | + +## 3 使用说明 + +>本章节是为在Core-V-MCU上使用RT-Thread的用户提供,Core-V-MCU目前没有实际的硬件,采用QEMU的方式实现模拟,本文使用的qemu为ubuntu18.04环境下编译qemu。 + +### 3.1 使用Env编译BSP + +本节讲解如何使用Env工具来编译BSP工程。 + +#### 3.1.1 编译BSP + +1. 准备工作1:[下载Linux环境下GCC编译工具链](https://github.com/Yaochenger/openhw-/tree/master/toolchain)),将下载的工具链放在自己的Linux环境下。 + +2. 准备工作2:在Linux环境下安装ENV,在控制台运行以下命令。 + + ```shell + wget https://gitee.com/RT-Thread-Mirror/env/raw/master/install_ubuntu.sh + chmod 777 install_ubuntu.sh + ./install_ubuntu.sh --gitee + ``` + +3. 准备工作3:在Linux环境下编译PLCT实验室提供的[qemu]([plctlab/plct-qemu at plct-corev-upstream-sync-dma (github.com)](https://github.com/plctlab/plct-qemu/tree/plct-corev-upstream-sync-dma)),参考README.rst中给出的编译方法编译Linux环境下的qemu,或使用笔者编译好的[qemu](https://github.com/Yaochenger/openhw-/releases/tag/qemu-linux)。 + +4. Windows环境下载RT-Thread[最新源码](https://github.com/RT-Thread/rt-thread/archive/refs/heads/master.zip),此步骤同样可以在Linux环境下完成。 + +5. Windows环境下载当前BSP根目录下打开Env工具并执行以下命令编译,`scons --exec-path=工具链路径`,Windows下的工具链可以直接使用RT-Studio下载,工具链的路径依据用户的具体环境进行配置,此步骤同样可以在Linux环境下完成,示例命令如下: + + ```shell + scons --exec-path=D:\RT-ThreadStudio\repo\Extract\ToolChain_Support_Packages + \RISC-V\RISC-V-GCC-RV32\2022-04-12\bin + ``` + + 在指定工具链位置的同时直接编译,编译后生成rtthread.elf文件。 + + ![compilation result of core-v-mcu ](figures/compilation result of core-v-mcu .png) + +6. 试运行rtthread.elf,将上步生成的rtthread.elf拷贝到编到编译的qemu工具的bin文件目录下,执行以下命令 + + ```shell + ./qemu-system-riscv32 -M core_v_mcu -bios none -kernel rtthread.elf -nographic -monitor none -serial stdio + ``` + + 运行结果如下: + + ![test-result1](figures/test-result1.png) + + 7.运行以下命令生成完整可拷贝的工程 + +```shell +scons --dist +``` + +将生成的独立工程拷贝到Linux环境下。 + +### 3.2Liunx环境下编译运行工程 + +#### 3.2.1 配置工程 + +1.在上文拷贝的完整的工程根目录下找到**rtconfig.h**,去掉该文件中的预编译命令**#ifndef RT_CONFIG_H__**,**#define RT_CONFIG_H__**,**#ifndef RT_CONFIG_H__**,**#endif**,一定要执行这步操作,否则会编译报错。 + +![remove ifdef](figures/remove ifdef.png) + +2.执行以下命令生成makefile工程 + +```shell +scons --target=makefile +``` + +3.在命令行输入**make**编译工程 + +4.运行以下命令,启动qemu运行编译出rtthread.elf,`/home/wangshun/bin/qemu-riscv/bin/qemu-system-riscv32`为Linux环境的工具链路径,这里设置为用户的工具链路径。 + +```shell +/home/wangshun/bin/qemu-riscv/bin/qemu-system-riscv32 -M core_v_mcu -bios none -kernel rtthread.elf -nographic -monitor none -serial stdio +``` + +BSP支持RT-Thread的Finsh组件,输入version可以查看rt-thread的版本信息,Tap键可以查看支持的命令,运行结果如下: + +![test-result2](figures/test-result2.png) + +至此,基于Core-V-MCU的RT-Thread工程的配置与运行测试完成。 + +### 3.3 将RT-Thread工程导入OpenHW的Core-V-IDE + +1.下载安装[core-v-sdk](https://github.com/openhwgroup/core-v-sdk),按照[README.md](https://github.com/openhwgroup/core-v-sdk#readme)中的步骤安装Linux环境下的IDE。 + +2.在主目录下创建workspace文件夹,打开IDE将workspace文件夹作为工作路径。 + +3.选择`Import projects选项 `。 + +![import_2](figures/import_2.png) + +4.选择`Existing Code as Makefile Project选项` + +![makefile project](figures/makefile project.png) + +5.设置如下 + +![settings](figures/settings.png) + +6.工程配置设置 + +![Properites](figures/Properites.png) + +7.修改编译命令 + +![make](figures/make.png) + +8.清空工程编译出的文件,重新编译工程 + +![IDE-MAKE](figures/IDE-MAKE.png) + +9.在使用IDE编译的工程的根目录下运行以下命令,结果和**3.2.1**运行的结果一致IDE下的工程便配置完成,至此,IDE导入Core-V-MCU的RT-Thread工程的导入与运行测试完成。 + +```shell +/home/wangshun/bin/qemu-riscv/bin/qemu-system-riscv32 -M core_v_mcu -bios none -kernel rtthread.elf -nographic -monitor none -serial stdio +``` + +### 3.4调试配置 + +1.Debug Configurations 配置 + +![debug](figures/debug.png) + +2.双击`GDB OpenOCD Debugging`,生成调试配置选项 + +![openocd](figures/openocd.png) + +3.导入片上外设寄存器文件 + +文件路径`OpenHW/CORE-V-SDKv0.0.0.4/registers/csr`,具体路径根据用户安装的SDK路径配置。 + +![register file](figures/register file.png) + +3.导入片上外设寄存器文件 + +文件路径`/home/wangshun/OpenHW/CORE-V-SDKv0.0.0.4/registers/peripheral`,具体路径根据用户安装的SDK路径配置。 + +![svd](figures/svd.png) + +3.配置qemu运行环境 + +取消`Start OpenOCD locally的勾选`,配置参数如下 + +![debug2](figures/debug2.png) + +4.运行下述指令 + +```shell +/home/wangshun/bin/qemu-riscv/bin/qemu-system-riscv32 -M core_v_mcu -bios none -kernel rtthread.elf -nographic -monitor none -serial stdio -s -S +``` + +5.点击debug开始调试 + + ![run](figures/run.png) + +### 4.CLI组件 + +​ OPENHW提供的FreeRTOS工程支持一个CLI组件用于测试,在使用RT-Thread时为了兼容原有的CLI,所以将原来的CLI做成了独立的软件包,同时该软件包自动开启FreeRTOS兼容层,所以该软件包既可以支持原有的CLI组件,同时用户可以自行选择使用FreeRTOS的API或者RT-Thread的API。 + +#### 4.1使用方法 + +​ 在ENV工具中使用menuconfig配置开启CorevMCU_CL软件包,将example.c中的示例代码放到main.c提示的地方。使用menuconfig配置的步骤如下: + +> `RT-Thread online packages` +> `miscellaneous packages --->` +> ` [*] CorevMCU_CLI` +