• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# RV-STAR开发板LiteOS使用说明
2
3## RV-STAR开发板简介
4
5RV-STAR是一款基于GD32VF103 MCU的RISC-V评估开发板,提供了板载调试器、Reset和Wakeup用户按键、RGB LED、USB OTG,以及EXMC、Arduino和PMOD扩展接口等资源。
6
7开发板资料链接:
8
9- [RV-STAR开发板电路原理图](https://www.rvmcu.com/quickstart-doc-u-pdf-id-235.html)
10- [RV-STAR开发板用户手册(Segger Embedded Studio IDE版)](https://www.rvmcu.com/quickstart-doc-u-pdf-id-236.html)
11- [RV-STAR开发板用户手册(Nuclei Studio IDE版)](https://www.rvmcu.com/quickstart-doc-u-pdf-id-531.html)
12- [RV-STAR板载GD32VF103芯片资料](https://www.rvmcu.com/quickstart-doc-u-gd32vf103.html)
13- [芯来RISC-V Bumblebee内核指令集手册](https://www.rvmcu.com/quickstart-doc-u-pdf-id-8.html)
14
15## 文件结构
16
17```
18├── components                            # 可选组件
19│   ├── cppsupport                        # C++支持
20│   └── cpup                              # CPUP功能
21├── kal                                   # 内核抽象层
22│   └── posix                             # posix标准接口支持
23├── arch                                  # 内核指令架构层代码
24│   ├── risc-v                            # risc-v架构的代码
25│   │   └── nuclei                        # nuclei内核相关代码
26│   │       └── gcc                       # gcc编译器相关代码
27│   │           └── nmsis                 # nmsis内核标准
28│   └── include                           # 对外接口存放目录
29│       ├── los_atomic.h                  # 定义通用arch的原子操作
30│       ├── los_context.h                 # 定义通用arch的上下文切换
31│       ├── los_arch.h                    # 定义通用arch初始化
32│       └── los_interrupt.h               # 定义通用arch中断
33├── kernel                                # 内核最小功能集支持
34│   ├── include                           # 对外接口存放目录
35│   │   ├── los_config.h                  # 功能开关和配置参数
36│   │   ├── los_event.h                   # 事件
37│   │   ├── los_liteos.h                  # liteos最小功能集对外提供的头文件
38│   │   ├── los_memory.h                  # 堆内存管理
39│   │   ├── los_mutex.h                   # 互斥锁
40│   │   ├── los_queue.h                   # 队列
41│   │   ├── los_scheduler.h               # 调度算法
42│   │   ├── los_sem.h                     # 信号量
43│   │   ├── los_task.h                    # 任务
44│   │   └── los_timer.h                   # 定时器
45│   └── src                               # 内核最小功能集源码
46├── targets                               # 板级工程目录
47│   └── riscv_nuclei_gd32vf103_soc_gcc    # RV-STAR开发板相关代码
48│       ├── GCC                           # 编译相关
49│       ├── OS_CONFIG                     # 开发板配置功能开关和配置参数
50│       ├── SoC                           # gd32vf103 SOC相关代码
51│       └── Src                           # application相关代码
52└── utils                                 # 通用公共目录
53    ├── include
54    │   ├── los_compiler.h                # 编译工具配置,类型定义
55    │   ├── los_debug.h                   # debug,printf相关
56    │   ├── los_error.h                   # 错误定义
57    │   └── los_list.h
58    └── src
59```
60
61## 使用说明
62
63软件需求:linux环境
64
65硬件需求:RV-STAR开发板
66
67[环境配置](#sectionb1)
68
69[编译源码](#sectionb2)
70
71[下载调试、运行](#sectionb3)
72
73本示例将新建并运行两个任务,PA0按键为外部中断,按下后可以查看任务列表信息。
74
75### 环境配置<a name="sectionb1"></a>
76
77- **工具链配置**
78
79请先确认您使用的是centos系统或Ubuntu 64bit。
80
811. 新建一个`Nuclei` 文件夹,比如`~/Software/Nuclei`
822. 参考下图,从[Nuclei Download Center](https://nucleisys.com/download.php)下载工具链和OpenOCD。
83   - CentOS或Ubuntu系统请点击图中红框1下载RISC-V GNU工具链
84   - 点击图中蓝框2-1下载64bit的OpenOCD
85   - **确保Make工具版本不低于3.82**: ubuntu系统使用`sudo apt-get install make`指令安装`make`工具, CentOS系统使用`sudo yum install make`指令安装。
86
87图1 Linux环境要下载的Nuclei Tools
88
89![Nuclei Tools need to be downloaded for Linux](doc/image/nuclei_tools_download_linux.png)
90
91
92
933. 在之前新建的`Nuclei`文件夹中新建`gcc`文件夹和`openocd`文件夹。
94   - 解压缩之前下载的**gnu工具链**到任意文件夹中,复制其中`bin`文件件所在层级的所有内容到`gcc`文件夹中。
95   - 同样解压缩之前下载的**OpenOCD**到任意文件夹中,复制其中`bin`文件件所在层级的所有内容到`openocd`文件夹中。
96
97> 注意:
98>
99> ​	请务必下载并解压缩Linux版本的工具,不要下载windows版本工具。
100
101- **驱动配置**
102
103驱动配置步骤如下:
104
1051. 连接开发板到Linux中,确保USB被Linux识别出来。
106
1072. 在控制台中使用lsusb指令查看信息,参考的打印信息如下:
108
109   ```
110   Bus 001 Device 010: ID 0403:6010 Future Technology Devices International, Ltd FT2232xxxx
111   ```
112
1133. 将github(https://github.com/riscv-mcu/ses_nuclei_sdk_projects/blob/master/misc/99-openocd.rules)上misc文件夹内99-openocd.rules文件复制到当前路径下,控制台中输入sudo cp 99-openocd.rules /etc/udev/rules.d/99-openocd.rules指令复制文件到指定路径下。
114
1154. 断开调试器再重新连接到Linux系统中。
116
1175. 使用ls /dev/ttyUSB*命令查看ttyUSB信息,参考输出如下:
118
119   ```
120   /dev/ttyUSB0 /dev/ttyUSB1
121   ```
122
1236. 使用ls -l /dev/ttyUSB1命令查看分组信息,参考输出如下:
124
125   ```
126   crw-rw-r-- 1 root plugdev 188, 1 Nov 28 12:53 /dev/ttyUSB1
127   ```
128
129   可以看到ttyUSB1已经加入plugdev组,接下来我们要将自己添加到plugdev组。使用whoami命令查看当前用户名,我们将其记录为\< your_user_name >。
130
1317. 使用sudo usermod -a -G plugdev \<your_user_name>命令将自己添加进plugdev组。
132
1338. 再次确认当前用户名已属于plugdev组,使用groups命令,可以看到打印信息中有plugdev即成功将当前用户添加至plugdev组。
134
135### 编译源码<a name="sectionb2"></a>
136
137使用`git clone`复制代码到任意目录下,打开进入到工程根目录下,输入`git submodule update --init --recursive`下载更新子模块。
138
139编译前请在当前控制台中配置`NUCLEI_TOOL_ROOT`路径,假设`Nuclei`文件夹所在路径为`/home/Nuclei`,输入`export NUCLEI_TOOL_ROOT=/home/Nuclei` 。或者使用时make选项增加`NUCLEI_TOOL_ROOT=/home/Nuclei`。
140
141配置路径后打开至代码根目录下的/target/riscv_nuclei_gd32vf103_soc_gcc/GCC位置,输入如下指令开始编译:
142
143```
144make all
145```
146
147编译结束后部分参考输出如下:
148
149```
150   text    data     bss     dec     hex filename
151  24330     112   16768   41210    a0fa build/Nuclei-rvstar-gd32vf103-soc.elf
152```
153
154若编译前想清理工程,请使用如下指令:
155
156```
157make clean
158```
159
160### 下载调试、运行<a name="sectionb3"></a>
161
162调试或运行前请先连接RV-STAR开发板,确保已按照[环境配置](#sectionb1)中驱动配置部分配置完成。
163
164同样配置好`NUCLEI_TOOL_ROOT`路径并打开至代码根目录下的/target/riscv_nuclei_gd32vf103_soc_gcc/GCC位置,输入如下指令进入GDB调试:
165
166```
167make debug
168```
169
170等待到进入GDB调试界面时,输入`load`指令下载编译好的elf文件,就可以开始调试。
171
172若想直接运行,请在调试时所在位置输入如下指令:
173
174```
175make upload
176```
177
178运行时可以查看串口打印内容,使用串口查看工具,这里以`minicom`为例,若未安装此工具可自行安装或使用其他串口查看工具。打开控制台,输入`minicom -D /dev/ttyUSB1 -b 115200`指令打开串口查看工具。
179
180运行时参考输出如下:
181
182```
183Nuclei SDK Build Time: Mar 30 2021, 18:26:53
184Download Mode: FLASHXIP
185CPU Frequency 108540000 Hz
186entering kernel init...
187TaskSampleEntry1 running...
188TaskSampleEntry1 running...
189TaskSampleEntry1 running...
190TaskSampleEntry1 running...
191TaskSampleEntry2 running...
192TaskSampleEntry1 running...
193TaskSampleEntry1 running...
194EXTI0_IRQHandler running...
195ID  Pri    Status     name
196--  ---    ---------  ----
1970    0     QueuePend      Swt_Task
1981    31     Running      IdleCore000
1992    6     Delay      TaskSampleEntry1
2003    7     Delay      TaskSampleEntry2
201TaskSampleEntry1 running...
202TaskSampleEntry1 running...
203TaskSampleEntry1 running...
204TaskSampleEntry2 running...
205```
206