rt-thread-official/bsp/hifive1
Yaochenger b9e4fcfc68
[libcpu][riscv]整合libcpu/riscv中的移植文件 提供一份公共代码于common (#6941)
整合libcpu/riscv中的移植文件 提供一份公共代码于common

在提交本pr时,除hpmicro的内核,rv32内核bsp已完成去除大部分的冗余,大部分代码采用common中的实现。本pr的作用是进一步统一common中的文件,从而提供一份公用代码,新移植的RV32内核的BSP可以全部使用common代码。

- 在common中提供一份公用文件:interrupt_gcc.S
- 修改原有的文件,将原有的中断中上下文切换代码替换为interrupt_gcc.S
- 基于上述修改,修改仓库中risc-v内核的BSP与移植相关的部分 (主要包含中断入口函数 中断栈等)
- 在common中提供一份公用文件:trap_common.c;提供统一中断入口函数,中断入口函数初始化,中断入口注册等函数,并完善异常时的信息输出

- 在common中提供一份公用文件:rt_hw_stack_frame.h;将栈帧结构体剥离,供用户使用

- 在上述工作完成后,在上述工作的基础上测试仓库中risc-v内核的BSP

- 完善函数中的命名,完善中断栈的获取

- 提供一份详细的基于现有common文件的移植指南

  #### 在什么测试环境下测试通过 

- 1.CH32V307V-R1-R0
- 2.CH32V208W-R0-1V4
- 3.HPM6750EVKMINI
- 4.GD32VF103V-EVAL
- 5.qemu(CORE-V-MCU )

> 与上述开发板使用同样芯片的BSP均测试通过

在CH32V307V-R1-R0与HPM6750EVKMINI上基于现有移植文件进行多线程复杂场景下的长时间测试,测试过程系统运行正常。
2023-03-01 01:32:43 -05:00
..
applications [bsp][applications][sconscript] 整理统一sconscript格式 (#6481) 2022-10-03 10:43:08 -04:00
drivers [libcpu][riscv]整合libcpu/riscv中的移植文件 提供一份公共代码于common (#6941) 2023-03-01 01:32:43 -05:00
figures [bsp][hifive1]更新 README,添加编译及下载运行方法 2018-09-30 18:07:57 +08:00
freedom-e-sdk [libcpu][riscv]整合libcpu/riscv中的移植文件 提供一份公共代码于common (#6941) 2023-03-01 01:32:43 -05:00
.config modify RT_ALIGN_SIZE as 8 by default 2023-01-12 22:47:23 -05:00
Kconfig format Kconfig and sconscript 2023-01-08 22:52:13 -05:00
Makefile [bsp][hifive1] add Makefile file 2018-09-30 10:33:34 +08:00
README.md [bsp][readme] 增加scons --exec-path=xxx 命令的使用说明 2022-10-10 09:42:44 +08:00
SConscript [bsp] add new bsp: hifive1 2018-05-31 14:58:59 +08:00
SConstruct format Kconfig and sconscript 2023-01-08 22:52:13 -05:00
openocd.cfg [bsp] add new bsp: hifive1 2018-05-31 14:58:59 +08:00
openocd.sh [bsp] add new bsp: hifive1 2018-05-31 14:58:59 +08:00
rtconfig.h modify RT_ALIGN_SIZE as 8 by default 2023-01-12 22:47:23 -05:00
rtconfig.py [BSP] Update Hifive1 BSP with unified RV porting. 2018-12-08 10:42:40 +08:00

README.md

HIFIVE1

简介

HIFIVE1 是由 SiFive 公司推出的全球首款基于开源指令集 RISC-V 架构的商用 SoC Freedom E310 的开发板。

1538284005769

板载资源:

硬件 描述
Soc SiFive Freedom E310 (FE310)
内核 SiFive E31 RISC-V Core
架构 32-bit RV32IMAC
主频 320+ MHz
性能 1.61 DMIPs/MHz, 2.73 Coremark/MHz
SRAM 16KB
Flash 16MB QSPI + 16KB 指令Cache

编译说明

下载 Freedom Studio

Freedom Studio 是 SiFive 公司推出的一个集成开发环境,用来编写和调试基于 SiFive 处理器的软件。内嵌了编译好的 RISC-V GCC 工具链、OpenOCD、以及一些示例和文档。

下载地址:官网下载

1538295358180

下载成功之后,解压到和 rt-thread 源码同一目录下

1538295750998

配置工具链

工具链就在解压开的 IDE F:\FreedomStudio\SiFive\riscv64-unknown-elf-gcc-20171231-x86_64-w64-mingw32\bin 目录下。

在源码 rt-thread/bsp/hifive1/ 目录下,运行 env 工具,输入下面的命令设置 gcc 工具链路径

set RTT_EXEC_PATH=F:\FreedomStudio\SiFive\riscv64-unknown-elf-gcc-20171231-x86_64-w64-mingw32\bin

或者通过scons --exec-path="GCC工具链路径"命令,在指定工具链位置的同时直接编译。

添加环境变量

工具链编译工具的路径 添加到环境变量里,输入命令如下

set path=%path%;工具链的路径;编译工具的路径;

例如:

set path=%path%;F:\FreedomStudio\SiFive\riscv64-unknown-elf-gcc-20171231-x86_64-w64-mingw32\bin;F:\FreedomStudio\build-tools\bin

1538296570129

从 env 工具打开 IDE

利用 cd 命令,切换到解压开的 IDE 目录

1538296766437

输入 Freedom Studio 按 Tab 键 自动补全,然后按回车运行 IDE。

1538296878924

在弹出的窗口输入 workspace 创建工作空间,然后点击启动打开 IDE。

1538296978929

导入工程

在菜单栏点击 File->Import

1538297215062

按照下面的图片导入工程

1538297303505

1538297553367

编译

1538297679868

然后等待编译完成

1538297922206

烧写及执行

安装驱动

  1. 使用 Micro USB 线连接电脑和开发板。

  2. 然后双击安装 IDE 目录 F:\FreedomStudio\SiFive\Drivers 下的驱动文件

添加字符串定义

点击菜单栏 Window->preferences 按下图的步骤将 字符串 cross_prefix 定义为 riscv64-unknown-elf-

1538298633528

配置 Debug 参数

选中生成的 rtthread.elf 文件,右键配置 Debug 参数,如下图所示

1538298914673

按下图新建一个 Debug 选项

1538299063801

打开 Debugger 选项卡 添加如下参数

-f openocd.cfg

set mem inaccessible-by-default off
set arch riscv:rv32
set remotetimeout 250

如下图所示:

1538299273874

打开 startup 选项卡,去掉主机模式复位命令

1538299521246

然后待程序停止在 main 函数处,然后点击继续运行程序就运行起来了。

1538299736730

运行结果

下载程序之后,连接串口(115200-N-8-1)可以看到RT-Thread的输出信息

 \ | /
- RT -     Thread Operating System
 / | \     3.0.4 build May 30 2018
 2006 - 2018 Copyright by rt-thread team
msh >

4. 驱动支持情况及计划

驱动 支持情况 备注
UART 支持 UART0_RX/TXGPIO 16/17

4.1 IO在板级支持包中的映射情况

IO号 板级包中的定义
GPIO19 LED_GREEN
GPIO21 LED_BLUE
GPIO22 LED_RED

5. 联系人信息

维护人:

6. 参考