summaryrefslogtreecommitdiff
path: root/bsp
diff options
context:
space:
mode:
authorBernard Xiong <[email protected]>2018-09-30 20:52:09 +0800
committerGitHub <[email protected]>2018-09-30 20:52:09 +0800
commitd9dcfb13d0fe40f71ae9c8301412d00cbae561f5 (patch)
tree1f62b228bb7613246815c7a1d6dd3363eedcecb9 /bsp
parent8ff95d49c5e50c68004d805b03436c3aa3447fea (diff)
parentdcbad844708a529c687d6b96af993879f14c754b (diff)
Merge pull request #1858 from Guozhanxin/master
更新 HIFIVE1 bsp
Diffstat (limited to 'bsp')
-rw-r--r--bsp/hifive1/README.md144
-rw-r--r--bsp/hifive1/figures/board.pngbin0 -> 249181 bytes
-rw-r--r--bsp/hifive1/figures/build.pngbin0 -> 37151 bytes
-rw-r--r--bsp/hifive1/figures/builded.pngbin0 -> 45095 bytes
-rw-r--r--bsp/hifive1/figures/cd.pngbin0 -> 7287 bytes
-rw-r--r--bsp/hifive1/figures/debug.pngbin0 -> 95980 bytes
-rw-r--r--bsp/hifive1/figures/debug1.pngbin0 -> 35214 bytes
-rw-r--r--bsp/hifive1/figures/debug2.pngbin0 -> 29731 bytes
-rw-r--r--bsp/hifive1/figures/debug3.pngbin0 -> 51231 bytes
-rw-r--r--bsp/hifive1/figures/dowmload.pngbin0 -> 125929 bytes
-rw-r--r--bsp/hifive1/figures/env.pngbin0 -> 11259 bytes
-rw-r--r--bsp/hifive1/figures/gcc_tool1.pngbin0 -> 50744 bytes
-rw-r--r--bsp/hifive1/figures/gcc_tool2.pngbin0 -> 10641 bytes
-rw-r--r--bsp/hifive1/figures/ide.pngbin0 -> 14429 bytes
-rw-r--r--bsp/hifive1/figures/import.pngbin0 -> 69130 bytes
-rw-r--r--bsp/hifive1/figures/import2.pngbin0 -> 34599 bytes
-rw-r--r--bsp/hifive1/figures/import3.pngbin0 -> 31849 bytes
-rw-r--r--bsp/hifive1/figures/open_ide.pngbin0 -> 10766 bytes
-rw-r--r--bsp/hifive1/figures/run.pngbin0 -> 42680 bytes
-rw-r--r--bsp/hifive1/figures/string.pngbin0 -> 48208 bytes
-rw-r--r--bsp/hifive1/figures/untar.pngbin0 -> 12935 bytes
-rw-r--r--bsp/hifive1/rtconfig.py10
22 files changed, 135 insertions, 19 deletions
diff --git a/bsp/hifive1/README.md b/bsp/hifive1/README.md
index 2a9285931b..7c65c15b78 100644
--- a/bsp/hifive1/README.md
+++ b/bsp/hifive1/README.md
@@ -2,28 +2,148 @@
## 简介
-[HIFIVE1](https://www.sifive.com/products/hifive1/)是SiFive提供的一款基于RISCV的开发板,搭载SiFive Freedom E310。
+[HIFIVE1](https://www.sifive.com/products/hifive1/) 是由 SiFive 公司推出的全球首款基于开源指令集 RISC-V 架构的商用 SoC Freedom E310 的开发板。
-板载主要资源如下:
+![1538284005769](figures/board.png)
+
+
+
+### 板载资源:
| 硬件 | 描述 |
| -- | -- |
-|CPU| SiFive E31 RISC-V Core |
-|架构| 32-bit RV32IMAC |
-|主频| 320+ MHz |
+|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 |
## 编译说明
-HIFIVE1可以自行编译工具链,或者使用SiFive提供的[二进制版本](https://www.sifive.com/products/tools/)。
+### 下载 Freedom Studio
+
+Freedom Studio 是 SiFive 公司推出的一个集成开发环境,用来编写和调试基于 SiFive 处理器的软件。内嵌了编译好的 RISC-V GCC 工具链、OpenOCD、以及一些示例和文档。
+
+下载地址:[官网下载](https://www.sifive.com/products/tools/)
+
+![1538295358180](figures/dowmload.png)
+
+下载成功之后,解压到和 rt-thread 源码同一目录下
+
+![1538295750998](figures/untar.png)
+
+### 配置工具链
+
+工具链就在解压开的 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
+```
+
+### 添加环境变量
+
+将 **工具链**和**编译工具**的路径 添加到环境变量里,输入命令如下
+
+```
+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](figures/env.png)
+
+### 从 env 工具打开 IDE
+
+利用 cd 命令,切换到解压开的 IDE 目录
+
+![1538296766437](figures/cd.png)
+
+输入 Freedom Studio 按 Tab 键 自动补全,然后按回车运行 IDE。
+
+![1538296878924](figures/open_ide.png)
+
+在弹出的窗口输入 workspace 创建工作空间,然后点击启动打开 IDE。
+
+![1538296978929](figures/ide.png)
+
+### 导入工程
+
+在菜单栏点击 `File->Import`
+
+![1538297215062](figures/import.png)
+
+按照下面的图片导入工程
+
+![1538297303505](figures/import2.png)
+
+![1538297553367](figures/import3.png)
+
+
+
+### 编译
+
+![1538297679868](figures/build.png)
+
+然后等待编译完成
+
+![1538297922206](figures/builded.png)
+
+
## 烧写及执行
-供电方式:开发板使用 Micro USB 线连接电脑和开发板。
+### 安装驱动
+
+1. 使用 Micro USB 线连接电脑和开发板。
+
+2. 然后双击安装 IDE 目录 `F:\FreedomStudio\SiFive\Drivers` 下的驱动文件
+
+### 添加字符串定义
+
+点击菜单栏 `Window->preferences` 按下图的步骤将 字符串 `cross_prefix` 定义为 `riscv64-unknown-elf-`
+
+![1538298633528](figures/string.png)
+
+### 配置 Debug 参数
-下载程序:参看[hifive1-getting-started](https://static.dev.sifive.com/dev.../hifive1/hifive1-getting-started-v1.0.2.pdf)完成开发环境的配置,运行bsp里的openocd.sh脚本就可以下载程序了。
+选中生成的 `rtthread.elf` 文件,右键配置 Debug 参数,如下图所示
+
+![1538298914673](figures/debug.png)
+
+按下图新建一个 Debug 选项
+
+![1538299063801](figures/debug1.png)
+
+打开 `Debugger` 选项卡 添加如下参数
+
+```
+-f openocd.cfg
+
+set mem inaccessible-by-default off
+set arch riscv:rv32
+set remotetimeout 250
+```
+
+如下图所示:
+
+![1538299273874](figures/debug2.png)
+
+打开 `startup` 选项卡,去掉**主机模式**和**复位命令**
+
+![1538299521246](figures/debug3.png)
+
+然后待程序停止在 main 函数处,然后点击继续运行程序就运行起来了。
+
+![1538299736730](figures/run.png)
### 运行结果
@@ -41,10 +161,8 @@ msh >
| 驱动 | 支持情况 | 备注 |
| ------ | ---- | :------: |
-| UART | 支持 | |
-| GPIO | 未支持 | |
-| SPI | 未支持 | |
-| I2C | 未支持 | |
+| UART | 支持 | UART0_RX/TX:GPIO 16/17 |
+
### 4.1 IO在板级支持包中的映射情况
@@ -65,5 +183,3 @@ msh >
* [HIFIVE1 Software Development Tools](https://www.sifive.com/products/tools/)
* [hifive1-getting-started-guide](https://www.sifive.com/documentation/boards/hifive1/hifive1-getting-started-guide/)
* [hifive1-schematics](https://www.sifive.com/documentation/boards/hifive1/hifive1-schematics/)
-
-
diff --git a/bsp/hifive1/figures/board.png b/bsp/hifive1/figures/board.png
new file mode 100644
index 0000000000..8565696a43
--- /dev/null
+++ b/bsp/hifive1/figures/board.png
Binary files differ
diff --git a/bsp/hifive1/figures/build.png b/bsp/hifive1/figures/build.png
new file mode 100644
index 0000000000..966546c752
--- /dev/null
+++ b/bsp/hifive1/figures/build.png
Binary files differ
diff --git a/bsp/hifive1/figures/builded.png b/bsp/hifive1/figures/builded.png
new file mode 100644
index 0000000000..ba39f7f254
--- /dev/null
+++ b/bsp/hifive1/figures/builded.png
Binary files differ
diff --git a/bsp/hifive1/figures/cd.png b/bsp/hifive1/figures/cd.png
new file mode 100644
index 0000000000..3b171e5d1b
--- /dev/null
+++ b/bsp/hifive1/figures/cd.png
Binary files differ
diff --git a/bsp/hifive1/figures/debug.png b/bsp/hifive1/figures/debug.png
new file mode 100644
index 0000000000..9bfd809a9f
--- /dev/null
+++ b/bsp/hifive1/figures/debug.png
Binary files differ
diff --git a/bsp/hifive1/figures/debug1.png b/bsp/hifive1/figures/debug1.png
new file mode 100644
index 0000000000..4b100d90f7
--- /dev/null
+++ b/bsp/hifive1/figures/debug1.png
Binary files differ
diff --git a/bsp/hifive1/figures/debug2.png b/bsp/hifive1/figures/debug2.png
new file mode 100644
index 0000000000..e20727f361
--- /dev/null
+++ b/bsp/hifive1/figures/debug2.png
Binary files differ
diff --git a/bsp/hifive1/figures/debug3.png b/bsp/hifive1/figures/debug3.png
new file mode 100644
index 0000000000..c45e95ef37
--- /dev/null
+++ b/bsp/hifive1/figures/debug3.png
Binary files differ
diff --git a/bsp/hifive1/figures/dowmload.png b/bsp/hifive1/figures/dowmload.png
new file mode 100644
index 0000000000..1d9c25a4de
--- /dev/null
+++ b/bsp/hifive1/figures/dowmload.png
Binary files differ
diff --git a/bsp/hifive1/figures/env.png b/bsp/hifive1/figures/env.png
new file mode 100644
index 0000000000..f09802ee91
--- /dev/null
+++ b/bsp/hifive1/figures/env.png
Binary files differ
diff --git a/bsp/hifive1/figures/gcc_tool1.png b/bsp/hifive1/figures/gcc_tool1.png
new file mode 100644
index 0000000000..86fdb0e1c2
--- /dev/null
+++ b/bsp/hifive1/figures/gcc_tool1.png
Binary files differ
diff --git a/bsp/hifive1/figures/gcc_tool2.png b/bsp/hifive1/figures/gcc_tool2.png
new file mode 100644
index 0000000000..e96ede4a9f
--- /dev/null
+++ b/bsp/hifive1/figures/gcc_tool2.png
Binary files differ
diff --git a/bsp/hifive1/figures/ide.png b/bsp/hifive1/figures/ide.png
new file mode 100644
index 0000000000..a6c90df62c
--- /dev/null
+++ b/bsp/hifive1/figures/ide.png
Binary files differ
diff --git a/bsp/hifive1/figures/import.png b/bsp/hifive1/figures/import.png
new file mode 100644
index 0000000000..7eb79a8357
--- /dev/null
+++ b/bsp/hifive1/figures/import.png
Binary files differ
diff --git a/bsp/hifive1/figures/import2.png b/bsp/hifive1/figures/import2.png
new file mode 100644
index 0000000000..898a615be7
--- /dev/null
+++ b/bsp/hifive1/figures/import2.png
Binary files differ
diff --git a/bsp/hifive1/figures/import3.png b/bsp/hifive1/figures/import3.png
new file mode 100644
index 0000000000..10f681b24c
--- /dev/null
+++ b/bsp/hifive1/figures/import3.png
Binary files differ
diff --git a/bsp/hifive1/figures/open_ide.png b/bsp/hifive1/figures/open_ide.png
new file mode 100644
index 0000000000..5d5ab4b308
--- /dev/null
+++ b/bsp/hifive1/figures/open_ide.png
Binary files differ
diff --git a/bsp/hifive1/figures/run.png b/bsp/hifive1/figures/run.png
new file mode 100644
index 0000000000..b1024099dc
--- /dev/null
+++ b/bsp/hifive1/figures/run.png
Binary files differ
diff --git a/bsp/hifive1/figures/string.png b/bsp/hifive1/figures/string.png
new file mode 100644
index 0000000000..747ecbfe4e
--- /dev/null
+++ b/bsp/hifive1/figures/string.png
Binary files differ
diff --git a/bsp/hifive1/figures/untar.png b/bsp/hifive1/figures/untar.png
new file mode 100644
index 0000000000..69667a4ec9
--- /dev/null
+++ b/bsp/hifive1/figures/untar.png
Binary files differ
diff --git a/bsp/hifive1/rtconfig.py b/bsp/hifive1/rtconfig.py
index 231a1ef858..a339f34064 100644
--- a/bsp/hifive1/rtconfig.py
+++ b/bsp/hifive1/rtconfig.py
@@ -16,8 +16,8 @@ if CROSS_TOOL == 'gcc':
if os.getenv('RTT_EXEC_PATH'):
EXEC_PATH = os.getenv('RTT_EXEC_PATH')
-#BUILD = 'debug'
-BUILD = 'release'
+BUILD = 'debug'
+#BUILD = 'release'
CORE = 'risc-v'
MAP_FILE = 'rtthread.map'
@@ -37,7 +37,7 @@ if PLATFORM == 'gcc':
OBJDUMP = PREFIX + 'objdump'
OBJCPY = PREFIX + 'objcopy'
- DEVICE = ' -march=rv32imac -mabi=ilp32 -DUSE_PLIC -DUSE_M_TIME -DNO_INIT -mcmodel=medany -msmall-data-limit=8 -g -L. -nostartfiles -lc '
+ DEVICE = ' -march=rv32imac -mabi=ilp32 -DUSE_PLIC -DUSE_M_TIME -DNO_INIT -mcmodel=medany -msmall-data-limit=8 -L. -nostartfiles -lc '
CFLAGS = DEVICE
CFLAGS += ' -save-temps=obj'
AFLAGS = '-c'+ DEVICE + ' -x assembler-with-cpp'
@@ -51,8 +51,8 @@ if PLATFORM == 'gcc':
LPATH = ''
if BUILD == 'debug':
- CFLAGS += ' -O0 -gdwarf-2'
- AFLAGS += ' -gdwarf-2'
+ CFLAGS += ' -O0 -g3'
+ AFLAGS += ' -g3'
else:
CFLAGS += ' -O2'