niobe/kernel/liteos_m/targets/riscv_nuclei_gd32vf103_soc_gcc
houpengfei 396aa09915 init 2021-09-22 21:52:48 +08:00
..
GCC init 2021-09-22 21:52:48 +08:00
OS_CONFIG init 2021-09-22 21:52:48 +08:00
SoC/gd32vf103 init 2021-09-22 21:52:48 +08:00
Src init 2021-09-22 21:52:48 +08:00
doc/image init 2021-09-22 21:52:48 +08:00
.gitignore init 2021-09-22 21:52:48 +08:00
README.md init 2021-09-22 21:52:48 +08:00

README.md

RV-STAR开发板LiteOS使用说明

RV-STAR开发板简介

RV-STAR是一款基于GD32VF103 MCU的RISC-V评估开发板提供了板载调试器、Reset和Wakeup用户按键、RGB LED、USB OTG以及EXMC、Arduino和PMOD扩展接口等资源。

开发板资料链接:

文件结构

├── components                            # 可选组件
│   ├── cppsupport                        # C++支持
│   └── cpup                              # CPUP功能
├── kal                                   # 内核抽象层
│   └── posix                             # posix标准接口支持
├── kernel                                # 内核最小功能集支持
│   ├── arch                              # 内核指令架构层代码
│   │   ├── risc-v                        # risc-v架构的代码
│   │   │   └── nuclei                    # nuclei内核相关代码
│   │   │       └── gcc                   # gcc编译器相关代码
│   │   │           ├── nmsis             # nmsis内核标准
│   │   └── include                       # 对外接口存放目录
│   │       ├── los_arch_atomic.h         # 定义通用arch的原子操作
│   │       ├── los_arch_context.h        # 定义通用arch的上下文切换
│   │       ├── los_arch.h                # 定义通用arch初始化
│   │       └── los_arch_interrupt.h      # 定义通用arch中断
│   ├── include                           # 对外接口存放目录
│   │   ├── los_config.h                  # 功能开关和配置参数
│   │   ├── los_event.h                   # 事件
│   │   ├── los_liteos.h                  # liteos最小功能集对外提供的头文件
│   │   ├── los_memory.h                  # 堆内存管理
│   │   ├── los_mutex.h                   # 互斥锁
│   │   ├── los_queue.h                   # 队列
│   │   ├── los_scheduler.h               # 调度算法
│   │   ├── los_sem.h                     # 信号量
│   │   ├── los_task.h                    # 任务
│   │   └── los_timer.h                   # 定时器
│   └── src                               # 内核最小功能集源码
├── targets                               # 板级工程目录
│   ├── riscv_nuclei_gd32vf103_soc_gcc    # RV-STAR开发板相关代码
│       ├── GCC                           # 编译相关
│       ├── OS_CONFIG                     # 开发板配置功能开关和配置参数
│       ├── SoC                           # gd32vf103 SOC相关代码
│       └── Src                           # application相关代码
├── utils                                 # 通用公共目录
    ├── include
    │   ├── los_compiler.h                # 编译工具配置,类型定义
    │   ├── los_debug.h                   # debugprintf相关
    │   ├── los_error.h                   # 错误定义
    │   └── los_list.h
    └── src

使用说明

软件需求linux环境

硬件需求RV-STAR开发板

环境配置

编译源码

下载调试、运行

本示例将新建并运行两个任务PA0按键为外部中断按下后可以查看任务列表信息。

环境配置

  • 工具链配置

请先确认您使用的是centos系统或Ububntu 64bit。

  1. 新建一个Nuclei 文件夹,比如~/Software/Nuclei
  2. 参考下图,从Nuclei Download Center下载工具链和OpenOCD。
    • CentOS或Ubuntu系统请点击图中红框1下载RISC-V GNU工具链
    • 点击图中蓝框2-1下载64bit的OpenOCD
    • 确保Make工具版本不低于3.82: ubuntu系统使用sudo apt-get install make指令安装make工具, CentOS系统使用sudo yum install make指令安装。

图1 Linux环境要下载的Nuclei Tools

Nuclei Tools need to be downloaded for Linux

  1. 在之前新建的Nuclei文件夹中新建gcc文件夹和openocd文件夹。
    • 解压缩之前下载的gnu工具链到任意文件夹中,复制其中bin文件件所在层级的所有内容到gcc文件夹中。
    • 同样解压缩之前下载的OpenOCD到任意文件夹中,复制其中bin文件件所在层级的所有内容到openocd文件夹中。

注意:

请务必下载并解压缩Linux版本的工具不要下载windows版本工具。

  • 驱动配置

驱动配置步骤如下:

  1. 连接开发板到Linux中确保USB被Linux识别出来。

  2. 在控制台中使用lsusb指令查看信息参考的打印信息如下

    Bus 001 Device 010: ID 0403:6010 Future Technology Devices International, Ltd FT2232xxxx
    
  3. 将githubhttps://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指令复制文件到指定路径下。

  4. 断开调试器再重新连接到Linux系统中。

  5. 使用ls /dev/ttyUSB*命令查看ttyUSB信息参考输出如下

    /dev/ttyUSB0 /dev/ttyUSB1
    
  6. 使用ls -l /dev/ttyUSB1命令查看分组信息参考输出如下:

    crw-rw-r-- 1 root plugdev 188, 1 Nov 28 12:53 /dev/ttyUSB1
    

    可以看到ttyUSB1已经加入plugdev组接下来我们要将自己添加到plugdev组。使用whoami命令查看当前用户名我们将其记录为< your_user_name >。

  7. 使用sudo usermod -a -G plugdev <your_user_name>命令将自己添加进plugdev组。

  8. 再次确认当前用户名已属于plugdev组使用groups命令可以看到打印信息中有plugdev即成功将当前用户添加至plugdev组。

编译源码

使用git clone复制代码到任意目录下,打开进入到工程根目录下,输入git submodule update --init --recursive下载更新子模块。

编译前请在当前控制台中配置NUCLEI_TOOL_ROOT路径,假设Nuclei文件夹所在路径为/home/Nuclei,输入export NUCLEI_TOOL_ROOT=/home/Nuclei 。或者使用时make选项增加NUCLEI_TOOL_ROOT=/home/Nuclei

配置路径后打开至代码根目录下的/target/riscv_nuclei_gd32vf103_soc_gcc/GCC位置输入如下指令开始编译

make all

编译结束后部分参考输出如下:

   text    data     bss     dec     hex filename
  24330     112   16768   41210    a0fa build/Nuclei-rvstar-gd32vf103-soc.elf

若编译前想清理工程,请使用如下指令:

make clean

下载调试、运行

调试或运行前请先连接RV-STAR开发板确保已按照环境配置中驱动配置部分配置完成。

同样配置好NUCLEI_TOOL_ROOT路径并打开至代码根目录下的/target/riscv_nuclei_gd32vf103_soc_gcc/GCC位置输入如下指令进入GDB调试

make debug

等待到进入GDB调试界面时输入load指令下载编译好的elf文件就可以开始调试。

若想直接运行,请在调试时所在位置输入如下指令:

make upload

运行时可以查看串口打印内容,使用串口查看工具,这里以minicom为例,若未安装此工具可自行安装或使用其他串口查看工具。打开控制台,输入minicom -D /dev/ttyUSB1 -b 115200指令打开串口查看工具。

运行时参考输出如下:

Nuclei SDK Build Time: Mar 30 2021, 18:26:53
Download Mode: FLASHXIP
CPU Frequency 108540000 Hz
entering kernel init...
TaskSampleEntry1 running...
TaskSampleEntry1 running...
TaskSampleEntry1 running...
TaskSampleEntry1 running...
TaskSampleEntry2 running...
TaskSampleEntry1 running...
TaskSampleEntry1 running...
EXTI0_IRQHandler running...
ID  Pri    Status     name 
--  ---    ---------  ----
0    0     QueuePend      Swt_Task 
1    31     Running      IdleCore000 
2    6     Delay      TaskSampleEntry1 
3    7     Delay      TaskSampleEntry2 
TaskSampleEntry1 running...
TaskSampleEntry1 running...
TaskSampleEntry1 running...
TaskSampleEntry2 running...