RISCV开发环境使用指南


REVISION HISTORY

Revision No.
Description
Date
1.0
  • Initial release
  • 10/30/2022

    1. 概述

    RISCV开发环境基于MounRiver Studio。MRS(www.mounriver.com)是一款针对嵌入式项目(RISC-V/ARM)的集成开发环境,提供了包括编辑器、C编译器、宏汇编、链接器、库管理、仿真调试器等在内的完整开发资源。

    2. MounRiver Studio安装

    2.1. 下载

    从MounRiver官网下载安装包(MounRiver_Studio_Setup_V183.zip):

    http://www.mounriver.com/download

    2.2. 安装

    解压安装包,双击Setup进行安装

    2.3. MounRiver帮助文档

    2.3.1. 在线帮助文档

    http://www.mounriver.com/help

    2.3.2. IDE集成帮助文档

    img

    离线帮助文档打开步骤:

    1. 点击IDE上面Help按钮

    2. 在弹窗中选择“Help Manual”

    3. 在打开的“Help Manual”窗口左边,选择“帮助手册(中文)”

    4. 后边就会显示帮助手册的目录,可以依次或按需浏览。

    3. Python环境安装

    3.1.下载

    从python官网下载3.8版本的安装包,推荐3.8.10版本:

    https://www.python.org/ftp/python/3.8.10/python-3.8.10-amd64.exe

    3.2. 安装

    双击下载好的安装程序进行安装,记得要勾选上”Add Python to PATH”选项

    img

    4. 安装SDK模板

    4.1. FreeRTOS SDK模板安装

    1. 通过"Project"菜单,打开模板管理器

      img

    2. 在模板管理器中,导入FreeRTOS SDK模板

      img

    4.2. NonOS SDK模板安装

    1. 通过"Project"菜单,打开模板管理器

      img

    2. 在模板管理器中,导入NonOS SDK模板

      img

    5. FreeRTOS项目

    5.1. 创建FreeRTOS项目

    1. 点击File->New->MounRiver Project

      img

    2. 选择项目模板

      img

      步骤说明:

      • 步骤一选择项目名称

      • 步骤二去掉ARM Core前面的够,过滤掉ARM MCU

      • 步骤三选择FreeRTOS

      • 步骤四选择SSTAR SSU [RISCV-V]

      • 步骤五选择SSU9383

      • 步骤六点击Finish完成项目创建

    5.2. 目录结构

    img

    目录说明:

    • 目录1,hdrs,是sdk的头文件目录,所有以library形式release的库,其对应的头文件都在这个目录中

    • 目录2,libs/product,是sdk的库文件目录,所有以library形式release的库,都在这个目录下

    • 目录3,obj,是MounRiver编译的输出目录,里面有自动生成的makefile,以及编译结果文件,如SSU9383.fw就是可以烧入到flash上,让RISCV运行的固件。

    • 目录4,sc,是sdk中以源代码形式release的库和app所在的目录,其中application下的是demo程序,而driver目录下的是驱动

    • 目录5,scatter,是link script所在目录

    • 目录6,tools,是存放需要用用到的tools的目录,比如把ELF转换成可以烧入到flash上被执行的固件的脚本(postprocess.py)就在这个目录下面。

    5.3. Demo application介绍

    img

    • 目录1,inc,存放的是模块(module)内部的头文件,不被其他模块使用的头文件

    • 目录2,pub,存放的是会被其他模块使用的头文件

    • 目录3,src,则是模块的源代码文件

    • 函数4,rtos_application_initcall(),用来指定application模块的入口函数,第一个参数是函数名,第二个参数用于设置模块入口函数的执行顺序,一般都配置为0,当存在多个application模块时,可以通过配置参数0,1,2,3来决定application函数的执行顺序

    • Bench模块的入口函数RtosAppMainEntry()只是单纯的调用coremark_main()函数,执行coremark操作

    5.4. 编译

    img

    • 点击按钮1,Build,就可以进行Build了

    • 点击按钮2,Rebuild,会先进行clean操作,然后再执行Build操作

    • Build完成后,就可以在obj目录下生成固件SSU9383.fw,覆盖烧入images中的riscvfw文件,把它烧入到flash中,重新开机系统会使用它启动RISCV。

    6. NoNOS项目

    6.1. 创建NonOS项目

    1. 点击File->New->MounRiver Project

      img

    2. 选择项目模板

      img

      步骤说明:

      • 步骤一选择项目名称

      • 步骤二去掉ARM Core前面的够,过滤掉ARM MCU

      • 步骤三选择NonOS

      • 步骤四选择SSTAR SSU [RISCV-V]

      • 步骤五选择SSU9383

      • 步骤六点击Finish完成项目创建

    6.2. 目录结构

    img

    目录说明:

    • 目录1,hdrs,是sdk的头文件目录,所有以library形式release的库,其对应的头文件都在这个目录中

    • 目录2,libs/product,是sdk的库文件目录,所有以library形式release的库,都在这个目录下

    • 目录3,obj,是MounRiver编译的输出目录,里面有自动生成的makefile,以及编译结果文件,如SSU9383.fw就是可以烧入到flash上,让RISCV运行的固件。

    • 目录4,sc,是sdk中以源代码形式release的库和app所在的目录,其中application下的是demo程序,而driver目录下的是驱动

    • 目录5,scatter,是link script所在目录

    • 目录6,tools,是存放需要用用到的tools的目录,比如把ELF转换成可以烧入到flash上被执行的固件的脚本(postprocess.py)就在这个目录下面。

    6.3. Demo application介绍

    img

    • 目录1,inc,存放的是模块(module)内部的头文件,不被其他模块使用的头文件

    • 目录2,pub,存放的是会被其他模块使用的头文件

    • 目录3,src,则是模块的源代码文件

    • 函数4,rtos_application_initcall(),用来指定application模块的入口函数,第一个参数是函数名,第二个参数用于设置模块入口函数的执行顺序,一般都配置为0,当存在多个application模块时,可以通过配置参数0,1,2,3来决定application函数的执行顺序

    • Bench模块的入口函数RtosAppMainEntry()只是单纯的调用coremark_main()函数,执行coremark操作

    6.4. 编译

    img

    • 点击按钮1,Build,就可以进行Build了

    • 点击按钮2,Rebuild,会先进行clean操作,然后再执行Build操作

    Build完成后,就可以在obj目录下生成固件SSU9383.fw,覆盖烧入images中的riscvfw文件,把它烧入到flash中,重新开机系统会使用它启动RISCV。

    添加project的方式:

    SSU9383.fw替换project/board/p5/riscv/pioneer5_ssc028a_riscv_isw.bin