Nuclei: Update README.md

Signed-off-by: Huaqi Fang <578567190@qq.com>
This commit is contained in:
Huaqi Fang
2020-04-09 14:55:22 +08:00
parent 4c8beb204b
commit 1be40bc50b

View File

@@ -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 选择工作空间
![指定工作空间](figures/open_eclipse.png)
打开 Eclipse 后需要导入 RT-Thread 工程
![导入工程](figures/file.png)
选择以存在的工程,并指定工程路径
![选择存在工程](figures/exist.png)
指定工程路径
![指定工程路径](figures/finish_port.png)
### 安装工具链
请根据[安装Nuclei RISC-V GCC Toolchain和OpenOCD](https://doc.nucleisys.com/nuclei_sdk/quickstart.html#setup-tools-and-environment) 来安装依赖的工具链。
### 添加环境变量
设置 Build Tools Path
![build_path](figures/build_path.png)
将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**中。
![open_ocd](figures/open_ocd.png)
#### Linux
点击 MCU 列表中的 OpenOCD Path 选项,为其选择 SDK 文件包中提供的对应工具。
假设工具安装在 **~/Software/Nuclei**目录下通过在Linux的``.bashrc``增加如下一行代码
来添加环境变量。
设置 RISC-V Toolchains Path
![risc-v](figures/risc-v-tool.png)
点击 MCU 列表中的 RISC-V Toolchains Paths 选项,为其选择 SDK 文件包中提供的对应工具。
按照以上步骤设置好路径点击编译即可编译工程
![build](figures/build_project.png)
~~~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-Link2 处选择 WinUSB 之后点击 3 处 Replace Driver 进行驱动替换。
### 编译程序
![zadig](figures/zadig.png)
下载好[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工具命令行。
![close](figures/close.png)
**注意**: 请确保Nuclei GCC和Nuclei OpenOCD的路径设置正确无误。
### 配置 GDB 调试
1. 运行 ``pkgs --update``来下载最新的依赖的**Nuclei SDK**开发包
2. **可选**: 运行 ``menuconfig``来进行内核配置
3. 运行 ``scons -c``清理之前的编译结果
4. 运行 ``scons``来进行代码的编译
在菜单栏中,点击 Run->Debug Configurations进入 Debug 配置界面,如下图所示:
### 下载程序
![open_debug](figures/open_debug.png)
在保证程序能够正常编译后在相同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
![main_select](figures/main_select.png)
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 选项卡配置界面
![debug_select](figures/debug_select.png)
在 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/RXGPIO 9/10 |
| UART | 支持 | RV-STAR板载串口是UART4 |
## 5. 联系人信息
**注:**
- 适配RT-Thread的驱动框架的代码在 [../libraries/gd32vf103/HAL_Drivers](../libraries/gd32vf103/HAL_Drivers)目录下。
- 如果有开发者想适配更多的驱动,请在对应目录下增加驱动适配支持。
## 联系人信息
维护人:
- [fanghuaqi](https://github.com/fanghuaqi)