openharmony_kernel_liteos_m/targets/riscv_nuclei_demo_soc_gcc
kenneth d5725b2264 fix: 修复arch目录调整影响到的target目录下的文件
将arch目录从kernel中移到根目录下 影响target目录下面的readme、makefile文件。

close #I4JM7Z

Signed-off-by: kenneth <zhushangyuan@huawei.com>
2021-11-24 15:10:22 +08:00
..
GCC fix: 修复arch目录调整影响到的target目录下的文件 2021-11-24 15:10:22 +08:00
OS_CONFIG feat: L0 支持低功耗框架 2021-06-22 13:15:06 +08:00
SoC/demosoc fix:correct spelling 2021-05-08 10:00:57 +08:00
Src fix: fix __cplusplus typo 2021-05-18 09:51:34 +08:00
doc/image Add makefile based project for Nuclei ddr200T board 2021-04-25 02:19:24 -07:00
.gitignore Add makefile based project for Nuclei ddr200T board 2021-04-25 02:19:24 -07:00
README.md fix: 修复arch目录调整影响到的target目录下的文件 2021-11-24 15:10:22 +08:00

README.md

Nuclei DDR200T开发板LiteOS使用说明

Nuclei DDR200T开发板简介

Nuclei DDR200T开发板是一款集成了FPGA和通用MCU的RISC-V评估开发板。其中FPGA子系统采用Xilinx XC7A200T-2 FPGA芯片提供板载FPGA JTAG下载器、丰富的板载存储Flash,DDR,eMMC,EEPROM)、丰富的接口资源数字、模拟以及蜂鸟调试器接口。MCU子系统采用GD32VF103 MCU芯片提供板载调试器以及JTAG调试接口。

开发板资料链接:

文件结构

├── components                            # 可选组件
│   ├── cppsupport                        # C++支持
│   └── cpup                              # CPUP功能
├── kal                                   # 内核抽象层
│   └── posix                             # posix标准接口支持
├── arch                                  # 内核指令架构层代码
│   ├── risc-v                            # risc-v架构的代码
│   │   └── nuclei                        # nuclei内核相关代码
│   │       └── gcc                       # gcc编译器相关代码
│   │           └── nmsis                 # nmsis内核标准
│   └── include                           # 对外接口存放目录
│       ├── los_atomic.h                  # 定义通用arch的原子操作
│       ├── los_context.h                 # 定义通用arch的上下文切换
│       ├── los_arch.h                    # 定义通用arch初始化
│       └── los_interrupt.h               # 定义通用arch中断
├── kernel                                # 内核最小功能集支持
│   ├── 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_demo_soc_gcc         # Nuclei DDR200T开发板相关代码
│       ├── GCC                           # 编译相关
│       ├── OS_CONFIG                     # 开发板配置功能开关和配置参数
│       ├── SoC                           # SOC相关代码
│       └── Src                           # application相关代码
└── utils                                 # 通用公共目录
    ├── include
    │   ├── los_compiler.h                # 编译工具配置,类型定义
    │   ├── los_debug.h                   # debugprintf相关
    │   ├── los_error.h                   # 错误定义
    │   └── los_list.h
    └── src

使用说明

软件需求linux环境

硬件需求Nuclei DDR200T开发板

环境配置

编译源码

下载调试、运行

本示例将新建并运行两个任务,可以在控制台查看任务执行打印信息。

环境配置

  • 工具链配置

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

  1. 新建一个Nuclei 文件夹,比如~/home/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_demo_soc_gcc/GCC位置输入如下指令开始编译

make all

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

   text    data     bss     dec     hex filename
  21900     112   65426   87438   1558e build/Nuclei-demo-soc.elf

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

make clean

下载调试、运行

调试或运行前请先是用蜂鸟调试器连接Nuclei DDR200T开发板确保已按照环境配置中驱动配置部分配置完成。

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

make debug

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

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

make upload

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

运行时参考输出如下:

Nuclei SDK Build Time: Mar 31 2021, 03:29:57
Download Mode: ILM
CPU Frequency 7998996 Hz
entering kernel init...
TaskSampleEntry1 running...
TaskSampleEntry1 running...
TaskSampleEntry1 running...
TaskSampleEntry1 running...
TaskSampleEntry2 running...
TaskSampleEntry1 running...
TaskSampleEntry1 running...
TaskSampleEntry1 running...
TaskSampleEntry1 running...
TaskSampleEntry1 running...
TaskSampleEntry2 running...
TaskSampleEntry1 running...