mirror of
https://github.com/RT-Thread/rt-thread.git
synced 2026-02-07 01:44:41 +08:00
@@ -1,10 +1,12 @@
|
||||
# GD32VF103-RVSTAR #
|
||||
# 芯来科技RVSTAR开发板 #
|
||||
|
||||
## 简介
|
||||
|
||||
gd32vf103v-rvstar 是由芯来科技公司推出的基于采用芯来科技RISC-V架构处理器芯片的GD32VF103的开发板。
|
||||
**RVSTAR开发板** 是由芯来科技公司推出的基于采用芯来科技RISC-V架构处理器芯片的GD32VF103的开发板。
|
||||
|
||||
### 板载资源:
|
||||
更多关于 **RVSTAR开发板** 开发板的详细资料请参见 [RVSTAR开发板快速入门](https://www.rvmcu.com/quickstart-quickstart-index-u-RV_STAR.html)
|
||||
|
||||
### 板载资源
|
||||
|
||||
| 硬件 | 描述 |
|
||||
| --- | --- |
|
||||
@@ -12,107 +14,181 @@ gd32vf103v-rvstar 是由芯来科技公司推出的基于采用芯来科技RISC-
|
||||
| 架构 | 32-bit RV32IMAC |
|
||||
| 主频 | 108 MHz |
|
||||
|
||||
## 编译说明
|
||||
## 工具安装
|
||||
|
||||
### 导入工程
|
||||
打开 Eclipse 选择工作空间
|
||||
|
||||

|
||||
|
||||
打开 Eclipse 后需要导入 RT-Thread 工程
|
||||
|
||||

|
||||
|
||||
选择以存在的工程,并指定工程路径
|
||||
|
||||

|
||||
|
||||
指定工程路径
|
||||
|
||||

|
||||
### 安装工具链
|
||||
|
||||
请根据[安装Nuclei RISC-V GCC Toolchain和OpenOCD](https://doc.nucleisys.com/nuclei_sdk/quickstart.html#setup-tools-and-environment) 来安装依赖的工具链。
|
||||
|
||||
### 添加环境变量
|
||||
设置 Build Tools Path
|
||||
|
||||

|
||||
将Nuclei RISC-V GCC Toolchain和OpenOCD的环境变量进行设置。
|
||||
|
||||
点击 MCU 列表中的 Build Tools Path 选项,为其选择 SDK 文件包中提供的对应工具
|
||||
#### Windows
|
||||
|
||||
设置 OpenOCD Path
|
||||
假设工具安装在 **D:\Software\Nuclei**目录下,则可以修改系统环境变量**PATH**,
|
||||
将**D:\Software\Nuclei\gcc\bin;D:\Software\Nuclei\openocd\bin;**增加到**PATH**中。
|
||||
|
||||

|
||||
#### Linux
|
||||
|
||||
点击 MCU 列表中的 OpenOCD Path 选项,为其选择 SDK 文件包中提供的对应工具。
|
||||
假设工具安装在 **~/Software/Nuclei**目录下,通过在Linux的``.bashrc``增加如下一行代码
|
||||
来添加环境变量。
|
||||
|
||||
设置 RISC-V Toolchains Path
|
||||
|
||||

|
||||
|
||||
点击 MCU 列表中的 RISC-V Toolchains Paths 选项,为其选择 SDK 文件包中提供的对应工具。
|
||||
|
||||
按照以上步骤设置好路径点击编译即可编译工程
|
||||
|
||||

|
||||
~~~bash
|
||||
export PATH=~/Software/Nuclei/gcc/bin:~/Software/Nuclei/openocd/bin:$PATH
|
||||
~~~
|
||||
|
||||
## 烧写及执行
|
||||
|
||||
### 替换驱动
|
||||
### [驱动设置](https://doc.nucleisys.com/nuclei_board_labs/hw/hw.html#on-board-debugger-driver)
|
||||
|
||||
1. 执行 JLink_Windows_V622c.exe (可以是任意版本)安装 JLink 驱动程序。
|
||||
2. 执行 Zadig.exe,点击 Options->List All Devices。
|
||||
3. 在下图 1 处选择 J-Link,2 处选择 WinUSB, 之后点击 3 处 Replace Driver 进行驱动替换。
|
||||
### 编译程序
|
||||
|
||||

|
||||
下载好[RT-Thread](https://github.com/RT-Thread/rt-thread)的代码和[ENV工具](https://www.rt-thread.org/document/site/tutorial/env-video/)以后。
|
||||
|
||||
安装完成之后会弹出如下窗口:
|
||||
按照ENV工具的教程,在**rt-thread\bsp\nuclei\gd32vf103_rvstar**目录打开ENV工具命令行。
|
||||
|
||||

|
||||
**注意**: 请确保Nuclei GCC和Nuclei OpenOCD的路径设置正确无误。
|
||||
|
||||
### 配置 GDB 调试
|
||||
1. 运行 ``pkgs --update``来下载最新的依赖的**Nuclei SDK**开发包
|
||||
2. **可选**: 运行 ``menuconfig``来进行内核配置
|
||||
3. 运行 ``scons -c``清理之前的编译结果
|
||||
4. 运行 ``scons``来进行代码的编译
|
||||
|
||||
在菜单栏中,点击 Run->Debug Configurations,进入 Debug 配置界面,如下图所示:
|
||||
### 下载程序
|
||||
|
||||

|
||||
在保证程序能够正常编译后,在相同ENV终端执行``scons --run upload``进行代码的下载。
|
||||
|
||||
这里使用 OpenOCD 作为 GDB Server,使用GCC工具链中的 GDB 工具作为 GDB Client。双击 GDB OpenOCD Debugging,新建一套 OpenOCD 的配置选项。
|
||||
正常下载的输出如下:
|
||||
|
||||
Main 选项卡
|
||||
~~~
|
||||
scons: Reading SConscript files ...
|
||||
Supported downloaded modes for board gd32vf103v_rvstar are flashxip, chosen downloaded mode is flashxip
|
||||
Upload application rtthread.elf using openocd and gdb
|
||||
riscv-nuclei-elf-gdb rtthread.elf -ex "set remotetimeout 240" -ex "target remote | openocd --pipe -f D:/workspace/Sourcecode/rt-thread/bsp/nuclei/gd32vf103_rvstar/packages/nuclei_sdk-latest/SoC/gd32vf103/Board/gd32vf103v_rvstar/openocd_gd32vf103.cfg" --batch -ex "monitor halt" -ex "monitor flash protect 0 0 last off" -ex "load" -ex "monitor resume" -ex "monitor shutdown" -ex "quit"
|
||||
D:\Software\Nuclei\gcc\bin\riscv-nuclei-elf-gdb.exe: warning: Couldn't determine a path for the index cache directory.
|
||||
|
||||
Main 选项卡配置界面
|
||||
Nuclei OpenOCD, 64-bit Open On-Chip Debugger 0.10.0+dev-00014-g0eae03214 (2019-12-12-07:43)
|
||||
Licensed under GNU GPL v2
|
||||
For bug reports, read
|
||||
http://openocd.org/doc/doxygen/bugs.html
|
||||
rt_thread_idle_entry (parameter=0x0) at D:\workspace\Sourcecode\rt-thread\src\idle.c:251
|
||||
251 if (idle_hook_list[i] != RT_NULL)
|
||||
cleared protection for sectors 0 through 127 on flash bank 0
|
||||
|
||||

|
||||
Loading section .init, size 0x264 lma 0x8000000
|
||||
Loading section .text, size 0x140de lma 0x8000280
|
||||
Loading section .rodata, size 0x37c0 lma 0x8014360
|
||||
Loading section .data, size 0x404 lma 0x8017b20
|
||||
Start address 0x800015c, load size 98054
|
||||
Transfer rate: 8 KB/sec, 10894 bytes/write.
|
||||
shutdown command invoked
|
||||
A debugging session is active.
|
||||
|
||||
选择当前工程 GD32VF103,并且选择当前型号的可执行文件,例如:GD32VF103xB\GD32VF103xB.elf。
|
||||
Inferior 1 [Remote target] will be detached.
|
||||
|
||||
Debugger 选项卡
|
||||
Debugger 选项卡配置界面
|
||||
|
||||

|
||||
|
||||
在 Debugger 选项卡中,确认红圈中的配置正确。
|
||||
其中,“Config options” 是为 OpenOCD 选择配置文件,需要根据当前使用的下载器选择不同的 cfg 文件。
|
||||
|
||||
上述配置内容配置好后,点击应用调试。
|
||||
### 运行结果
|
||||
Quit anyway? (y or n) [answered Y; input not from terminal]
|
||||
Remote communication error. Target disconnected.: Success.
|
||||
~~~
|
||||
|
||||
下载程序之后,连接串口(115200-N-8-1),可以看到 RT-Thread 的输出信息:
|
||||
|
||||
```
|
||||
initialize rti_board_start:0 done
|
||||
|
||||
\ | /
|
||||
- RT - Thread Operating System
|
||||
/ | \ 4.0.2 build Jul 24 2019
|
||||
2006 - 2019 Copyright by rt-thread team
|
||||
msh >
|
||||
/ | \ 4.0.3 build Apr 9 2020
|
||||
2006 - 2020 Copyright by rt-thread team
|
||||
do components initialization.
|
||||
initialize rti_board_end:0 done
|
||||
initialize dfs_init:0 done
|
||||
initialize libc_system_init:0 done
|
||||
initialize finsh_system_init:0 done
|
||||
msh />
|
||||
```
|
||||
|
||||
在串口终端(我这里使用的是TeraTerm)输入``ps``即可查看当前线程工作情况:
|
||||
|
||||
~~~
|
||||
msh />ps
|
||||
thread pri status sp stack size max used left tick error
|
||||
-------- --- ------- ---------- ---------- ------ ---------- ---
|
||||
thread01 19 suspend 0x00000158 0x0000018c 87% 0x00000005 000
|
||||
thread00 19 suspend 0x00000158 0x0000018c 87% 0x00000005 000
|
||||
tshell 20 running 0x00000258 0x00001000 18% 0x00000004 000
|
||||
tidle0 31 ready 0x000000a8 0x0000018c 59% 0x0000000e 000
|
||||
timer 4 suspend 0x000000f8 0x00000200 49% 0x00000009 000
|
||||
main 10 suspend 0x00000168 0x00000800 36% 0x00000006 000
|
||||
msh />
|
||||
~~~
|
||||
|
||||
### 调试程序
|
||||
|
||||
在保证程序编译成功后,在相同ENV终端执行``scons --run debug``进行代码在命令行下进行GDB调试。
|
||||
|
||||
正常的调试输出如下:
|
||||
|
||||
~~~
|
||||
scons: Reading SConscript files ...
|
||||
Supported downloaded modes for board gd32vf103v_rvstar are flashxip, chosen downloaded mode is flashxip
|
||||
Debug application rtthread.elf using openocd and gdb
|
||||
riscv-nuclei-elf-gdb rtthread.elf -ex "set remotetimeout 240" -ex "target remote | openocd --pipe -f D:/workspace/Sourcecode/rt-thread/bsp/nuclei/gd32vf103_rvstar/packages/nuclei_sdk-latest/SoC/gd32vf103/Board/gd32vf103v_rvstar/openocd_gd32vf103.cfg"
|
||||
D:\Software\Nuclei\gcc\bin\riscv-nuclei-elf-gdb.exe: warning: Couldn't determine a path for the index cache directory.
|
||||
GNU gdb (GDB) 8.3.0.20190516-git
|
||||
Copyright (C) 2019 Free Software Foundation, Inc.
|
||||
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
|
||||
This is free software: you are free to change and redistribute it.
|
||||
There is NO WARRANTY, to the extent permitted by law.
|
||||
Type "show copying" and "show warranty" for details.
|
||||
This GDB was configured as "--host=i686-w64-mingw32 --target=riscv-nuclei-elf".
|
||||
Type "show configuration" for configuration details.
|
||||
For bug reporting instructions, please see:
|
||||
<http://www.gnu.org/software/gdb/bugs/>.
|
||||
Find the GDB manual and other documentation resources online at:
|
||||
<http://www.gnu.org/software/gdb/documentation/>.
|
||||
|
||||
For help, type "help".
|
||||
Type "apropos word" to search for commands related to "word"...
|
||||
Reading symbols from rtthread.elf...
|
||||
Remote debugging using | openocd --pipe -f D:/workspace/Sourcecode/rt-thread/bsp/nuclei/gd32vf103_rvstar/packages/nuclei_sdk-latest/SoC/gd32vf103/Board/gd32vf103v_rvstar/openocd_gd32vf103.cfg Nuclei OpenOCD, 64-bit Open On-Chip Debugger 0.10.0+dev-00014-g0eae03214 (2019-12-12-07:43)
|
||||
Licensed under GNU GPL v2
|
||||
For bug reports, read
|
||||
http://openocd.org/doc/doxygen/bugs.html
|
||||
rt_thread_idle_entry (parameter=0x0) at D:\workspace\Sourcecode\rt-thread\src\idle.c:249
|
||||
249 for (i = 0; i < RT_IDLE_HOOK_LIST_SIZE; i++)
|
||||
(gdb)
|
||||
(gdb) b main.c:35
|
||||
Breakpoint 1 at 0x8000290: file applications\main.c, line 35.
|
||||
(gdb) c
|
||||
Continuing.
|
||||
Note: automatically using hardware breakpoints for read-only addresses.
|
||||
|
||||
Breakpoint 1, thread_entry (parameter=0x0) at applications\main.c:35
|
||||
35 rt_thread_mdelay(500);
|
||||
(gdb)
|
||||
~~~
|
||||
|
||||
调试例子参见如下文档:
|
||||
|
||||
* https://doc.nucleisys.com/nuclei_sdk/quickstart.html#debug-application
|
||||
|
||||
为了更方便的进行调试,也可以下载**Nuclei Studio**集成开发环境,创建一个Debug Configuration,选择编译好的
|
||||
ELF文件,然后配置OPENOCD和GDB即可,OPENOCD配置文件路径为**bsp\nuclei\gd32vf103_rvstar\packages\nuclei_sdk-latest\SoC\gd32vf103\Board\gd32vf103v_rvstar\openocd_gd32vf103.cfg**
|
||||
|
||||
|
||||
## 驱动支持情况
|
||||
|
||||
| 驱动 | 支持情况 | 备注 |
|
||||
| ------ | ---- | :------: |
|
||||
| USART | 支持 | UART0_TX/RX:GPIO 9/10 |
|
||||
| UART | 支持 | RV-STAR板载串口是UART4 |
|
||||
|
||||
## 5. 联系人信息
|
||||
**注:**
|
||||
|
||||
- 适配RT-Thread的驱动框架的代码在 [../libraries/gd32vf103/HAL_Drivers](../libraries/gd32vf103/HAL_Drivers)目录下。
|
||||
- 如果有开发者想适配更多的驱动,请在对应目录下增加驱动适配支持。
|
||||
|
||||
## 联系人信息
|
||||
|
||||
维护人:
|
||||
- [fanghuaqi](https://github.com/fanghuaqi)
|
||||
|
||||
Reference in New Issue
Block a user