165 lines
5.9 KiB
Markdown
165 lines
5.9 KiB
Markdown
# SparkFun RED-V #
|
||
|
||
## 1 简介
|
||
|
||
[SparkFun RED-V](https://www.sparkfun.com/products/15594) 是一款基于 RISC-V 架构的低成本开源开发板,核心 SoC Freedom E310-002 (FE310) 是 SiFive 的 Freedom Everywhere 可定制 SoCs 系列 FE310 的一个升级版本(兼容 HiFive1-rev-b)。最大主频提高了一倍多达到 320MHz,具有 SiFive 的高性能32位 RV32IMAC 核心,性能测试表现很突出,达到了 1.61 DMIPs/MHz,甚至超过了 Arm Cortex-M4 内核。适用于微控制器、嵌入式、物联网和可穿戴应用等领域。
|
||
|
||
![](figures/board.jpg)
|
||
|
||
### 1.1 板载资源
|
||
|
||
| 硬件 | 描述 |
|
||
| -- | -- |
|
||
|Soc| SiFive Freedom E310 (FE310-G002) |
|
||
| 内核 | SiFive E31 RISC-V Core |
|
||
| 架构 | 32-bit RV32IMAC |
|
||
| 主频 | 320+ MHz |
|
||
| 性能 | 1.61 DMIPs/MHz, 2.73 Coremark/MHz |
|
||
|SRAM| 16KB |
|
||
|Flash| 32 Mbit Off-Chip (ISSI SPI Flash) |
|
||
|
||
### 1.2 特性
|
||
|
||
- 16KB L1 指令缓存
|
||
- 16KB 数据 SRAM 暂存器
|
||
- 硬件乘/除
|
||
- 调试模块
|
||
- OTP 非易失性存储器
|
||
- 片上振荡器和 PLL 产生灵活的时钟
|
||
- 外围设备,包括 UART,QSPI,PWM 和定时器
|
||
- 多个电源域+低功耗待机模式
|
||
|
||
|
||
|
||
## 2 编译说明
|
||
|
||
### 2.2 下载 Freedom Studio
|
||
|
||
[Freedom Studio](https://www.sifive.com/software) 是 SiFive 公司推出的一个集成开发环境,用来编写和调试基于 SiFive 处理器的软件。内嵌了编译好的 RISC-V GCC 工具链、OpenOCD、以及一些示例和文档。
|
||
|
||
特别地,这里以 v2019.08.1 版本进行演示:
|
||
|
||
- [FreedomStudio-2019-08-1-lin64](https://static.dev.sifive.com/dev-tools/FreedomStudio/2019.08/FreedomStudio-2019-08-1-lin64.tar.gz)
|
||
- [FreedomStudio-2019-08-1-win64](https://static.dev.sifive.com/dev-tools/FreedomStudio/2019.08/FreedomStudio-2019-08-1-win64.zip)
|
||
- [FreedomStudio-2019-08-1-mac64](https://static.dev.sifive.com/dev-tools/FreedomStudio/2019.08/FreedomStudio-2019-08-1-mac64.tar.gz)
|
||
|
||
将 Freedom Studio 解压到非中文字符且不含空格的目录下,如果是 Windows 系统,还需要打开 `FreedomStudio-2019-08-1-win64\SiFive\Drivers` 文件夹,安装驱动文件。
|
||
|
||
- HiFive1_Driver.exe
|
||
- sifive-winusb-utility.exe
|
||
|
||
### 2.3 配置工具链
|
||
|
||
工具链的默认位置为 `SiFive/riscv64-unknown-elf-gcc-8.3.0-2019.08.0/bin/` 目录。运行 Env 工具,根据实际情况,输入以下命令设置环境变量:
|
||
|
||
```shell
|
||
set RTT_EXEC_PATH=工具链的路径
|
||
set path=%path%;工具链的路径
|
||
```
|
||
|
||
例如:
|
||
|
||
```shell
|
||
set RTT_EXEC_PATH=C:\FreedomStudio-2019-08-1-win64\SiFive\riscv64-unknown-elf-gcc-8.3.0-2019.08.0\bin
|
||
set path=%path%;C:\FreedomStudio-2019-08-1-win64\SiFive\riscv64-unknown-elf-gcc-8.3.0-2019.08.0\bin
|
||
```
|
||
|
||
### 2.4 从 Env 工具打开 IDE
|
||
|
||
在 Env 中使用 cd 命令切换到 FreedomStudio 解压后的目录中,再执行 `FreedomStudio.exe` 文件启动 IDE。例如:
|
||
|
||
```
|
||
cd C:\FreedomStudio-2019-08-1-win64
|
||
FreedomStudio.exe
|
||
```
|
||
|
||
### 2.5 导入工程
|
||
|
||
点击菜单栏左上角 `File -> Import...`,展开 `C/C++` ,选择 `Existing Code as Makefile Project` ,点击 Next 继续。
|
||
|
||
![](figures/import_makefile_project.png)
|
||
|
||
在编辑框中填入 bsp 文件所在目录,选择 `Cross GCC` ,点击 Finish 导入。
|
||
|
||
![](figures/import_makefile_project_bsp.png)
|
||
|
||
### 2.6 编译
|
||
|
||
选中要编译的工程,点击左上角的锤子图标开始编译。
|
||
|
||
![build](figures/freedomstudio_compile.png)
|
||
|
||
当窗口输出 `Build Finished` ,左侧文件列表出现 `rtthread.elf` 文件时,即为编译成功。
|
||
|
||
|
||
|
||
## 3 烧写及执行
|
||
|
||
### 3.1 配置 Debug 参数
|
||
|
||
使用 type-c usb 数据线连接电脑与开发板。右键列表中的 `rtthread.elf` 文件,选择 `Debug As->1 As JLink launch`。
|
||
|
||
点击 Debugger 选项卡,选择设备名称 `FE310`
|
||
|
||
![](figures/debug_Debugger.png)
|
||
|
||
点击 Config 选项卡,在 'Target Architecture' 处选择 'riscv:cv32' ,点击 Debug 开始调试。
|
||
|
||
![](figures/debug_Config.png)
|
||
|
||
### 3.2 运行结果
|
||
|
||
下载程序之后,连接串口(115200-N-8-1),可以看到 RT-Thread 的输出信息:
|
||
|
||
![](./figures/debug_terminal_msh.png)
|
||
|
||
可以看到板载的蓝色 LED 灯以 1Hz 频率闪烁,按下 Tab 键可以查看 RT-Thread 内置的命令。
|
||
|
||
```
|
||
msh >
|
||
RT-Thread shell commands:
|
||
give_me_five - Show the SiFive logo
|
||
memcheck - check memory data
|
||
memtrace - dump memory trace information
|
||
clear - clear the terminal screen
|
||
version - show RT-Thread version information
|
||
list_thread - list thread
|
||
list_sem - list semaphore in system
|
||
list_event - list event in system
|
||
list_mutex - list mutex in system
|
||
list_mailbox - list mail box in system
|
||
list_msgqueue - list message queue in system
|
||
list_mempool - list memory pool in system
|
||
list_timer - list timer in system
|
||
list_device - list device in system
|
||
help - RT-Thread shell help.
|
||
ps - List threads in the system.
|
||
free - Show the memory usage in the system.
|
||
```
|
||
|
||
|
||
|
||
## 4 驱动支持情况及计划
|
||
|
||
| 驱动 | 支持情况 | 备注 |
|
||
| ------ | ---- | :------: |
|
||
| UART | 支持 | UART0_RX/TX:GPIO 16/17 |
|
||
|
||
|
||
|
||
## 5 联系人信息
|
||
|
||
维护人:
|
||
- [luhuadong](https://github.com/luhuadong)
|
||
|
||
|
||
|
||
## 6 参考
|
||
|
||
* [RED-V Schematic](https://cdn.sparkfun.com/assets/d/d/1/e/7/RedFive.pdf)
|
||
* [RED-V Development Guide](https://learn.sparkfun.com/tutorials/red-v-development-guide)
|
||
* [Getting Started with the SparkFun Red-V](https://www.digikey.dk/da/maker/projects/getting-started-with-the-sparkfun-red-v/a28c5ce7d21a452db4aa3f4b94f345f4)
|
||
* [Freedom E310-G002 Datasheet](https://cdn.sparkfun.com/assets/5/b/e/6/2/fe310-g002-ds.pdf)
|
||
* [Freedom E310-G002 Manual](https://cdn.sparkfun.com/assets/7/f/0/2/7/fe310-g002-manual-v19p05.pdf)
|
||
* [Freedom Studio User Manual](https://static.dev.sifive.com/dev-tools/FreedomStudio/2020.06/freedom-studio-manual-4.7.2-2020-06-0.pdf)
|