从零开始构建矽璓工业物联操作系统:使用risc-v架构的hifive1 emulator from Liu Yongkai
it is perfect
This commit is contained in:
commit
ac7a359bf2
|
@ -29,6 +29,7 @@ const sidebar = {
|
|||
],
|
||||
'appdev': [
|
||||
'/doc/appdev/start_from_scratch/',
|
||||
'/doc/appdev/debug/'
|
||||
],
|
||||
'demo': [
|
||||
'/doc/demo/dashengda',
|
||||
|
|
|
@ -3,3 +3,5 @@
|
|||
---
|
||||
|
||||
* [从零开始构建矽璓工业物联操作系统](/doc/appdev/start_from_scratch)
|
||||
|
||||
* [调试XiUOS的技巧](/doc/appdev/debug)
|
||||
|
|
|
@ -0,0 +1,87 @@
|
|||
# 调试XiUOS的技巧:使用JLink调试KD233开发板
|
||||
|
||||
# 调试环境
|
||||
|
||||
**操作系统:** ubuntu18.04 [ https://ubuntu.com/download/desktop](https://ubuntu.com/download/desktop)
|
||||
|
||||
调试工具:JLink(实物如图)
|
||||
</br>
|
||||
<div align=center><img src="https://img-blog.csdnimg.cn/20210427215116310.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0FJSVRfVWJpcXVpdG91cw==,size_16,color_FFFFFF,t_70" /></div>
|
||||
</br>
|
||||
调试开发板:KD233(实物如图)
|
||||
</br>
|
||||
<div align=center><img src="https://img-blog.csdnimg.cn/20210427215138289.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0FJSVRfVWJpcXVpdG91cw==,size_16,color_FFFFFF,t_70" /></div>
|
||||
|
||||
# 调试步骤
|
||||
|
||||
## 步骤一
|
||||
1.下载JLink驱动(Ubuntu下载DEB包)
|
||||
下载地址:[SEGGER - The Embedded Experts - Downloads - J-Link / J-Trace](https://www.segger.com/downloads/jlink),[推荐下载地址 http://101.36.126.201:8011/JLink_Linux_V720_x86_64.deb](http://101.36.126.201:8011/JLink_Linux_V720_x86_64.deb)
|
||||
</br>
|
||||
<div align=center><img src="https://img-blog.csdnimg.cn/20210427214025688.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0FJSVRfVWJpcXVpdG91cw==,size_16,color_FFFFFF,t_70#pic_center" /></div>
|
||||
</br>
|
||||
|
||||
2.安装JLink驱动
|
||||
```bash
|
||||
$ dpkg -i JLink_Linux_V632i_x86_64.deb
|
||||
```
|
||||
V后面为版本号,以下载的为准,安装完成后将JLink连接到计算机,运行JLinkExe检查其驱动是否已经正确安装,如果是,将看到以下信息:
|
||||
```bash
|
||||
$ JLinkExe
|
||||
SEGGER J-Link Commander V7. 0a (Compiled Apr 16 2021 15:36:25)
|
||||
DLL version V7.00a, compiled Apr 16 2021 15:36:09
|
||||
|
||||
Connecting to J-Link via USB...O.K.
|
||||
Firmware: J-Link OB-K22-SiFive compiled Mar 3 2021 14:13:05
|
||||
Hardware version: V1.00
|
||||
S/N: 979015641
|
||||
VTref=3.300V
|
||||
|
||||
|
||||
Type "connect" to establish a target connection, '?' for help
|
||||
J-Link>
|
||||
```
|
||||
|
||||
## 步骤二
|
||||
|
||||
1.安装openocd(下载Ubuntu版本64位)
|
||||
下载地址:[Releases · kendryte/openocd-kendryte (github.com)](https://github.com/kendryte/openocd-kendryte/releases),推荐下载地址为:[http://101.36.126.201:8011/kendryte-openocd-0.2.3-ubuntu64.tar.gz](http://101.36.126.201:8011/kendryte-openocd-0.2.3-ubuntu64.tar.gz)
|
||||
</br>
|
||||
<div align=center><img src="https://img-blog.csdnimg.cn/20210427214045491.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0FJSVRfVWJpcXVpdG91cw==,size_16,color_FFFFFF,t_70#pic_center" /></div>
|
||||
</br>
|
||||
|
||||
2.安装openocd
|
||||
```bash
|
||||
$ sudo apt install libusb-dev libftdi-dev libhidapi-dev
|
||||
$ sudo mv kendryte-openocd-0.2.3-ubuntu64.tar.gz /opt
|
||||
$ cd /opt
|
||||
$ sudo tar -zxvf kendryte-openocd-0.2.3-ubuntu64.tar.gz
|
||||
```
|
||||
|
||||
3.修改openocd的配置文件
|
||||
```bash
|
||||
$ sudo vim /opt/kendryte-openocd/tcl/openocd.cfg
|
||||
```
|
||||
|
||||
<div align=center><img src="https://img-blog.csdnimg.cn/20210427214102777.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0FJSVRfVWJpcXVpdG91cw==,size_16,color_FFFFFF,t_70#pic_center" /></div>
|
||||
</br>
|
||||
序列号从JLink的背面标签可以查看,也可以在JLink连接计算机后敲击JLinkExe命令看到。
|
||||
|
||||
4.打开openocd,执行以下命令开始调试
|
||||
```bash
|
||||
$ cd /opt/kendryte-openocd
|
||||
$ ./bin/openocd -f ./tcl/openocd.cfg
|
||||
```
|
||||
注意:这一步如果报出Error,重新插拔JLink解决
|
||||
|
||||
## 步骤三
|
||||
|
||||
1.步骤二打开openopcd后,继续运行gdb:
|
||||
```bash
|
||||
$ riscv-none-embed-gdb (workspace)/build/XiUOS_kd233.elf --eval-command="target remote 127.0.0.1:3333"
|
||||
```
|
||||
其中,(workspace)为实际操作的XiUOS项目的绝对路径,XiUOS_kd233.elf是编译生成的文件。
|
||||
|
||||
127.0.0.1表示本地IP地址,也可以指定远程地址。
|
||||
|
||||
3333是openocd监听的端口号。成功连接openocd后,就可以使用load、break、continue等gdb命令来调试了。
|
|
@ -0,0 +1,124 @@
|
|||
# 调试XiUOS的技巧:使用Qzone调试stm32f407-st-discovery开发板
|
||||
|
||||
# 调试XiUOS的技巧:使用JLink调试STM32F407-discovery开发板
|
||||
|
||||
<!-- TOC -->
|
||||
|
||||
- [调试XiUOS的技巧:使用Qzone调试stm32f407-st-discovery开发板](#调试xiuos的技巧使用qzone调试stm32f407-st-discovery开发板)
|
||||
- [调试XiUOS的技巧:使用JLink调试STM32F407-discovery开发板](#调试xiuos的技巧使用jlink调试stm32f407-discovery开发板)
|
||||
- [调试环境](#调试环境)
|
||||
- [Ozone简介](#ozone简介)
|
||||
- [调试步骤](#调试步骤)
|
||||
- [步骤一 (Windows环境下)](#步骤一-windows环境下)
|
||||
- [步骤二(Ubuntu环境下)](#步骤二ubuntu环境下)
|
||||
- [步骤三(Ubuntu环境下)](#步骤三ubuntu环境下)
|
||||
|
||||
<!-- /TOC -->
|
||||
|
||||
## 调试环境
|
||||
|
||||
操作系统:ubuntu 18.04,windows 10
|
||||
|
||||
调试工具:JLink(已集成于开发板)
|
||||
|
||||
调试开发板:STM32F407-discovery(实物如图)
|
||||
|
||||
<div align= "center"><img src = https://i.loli.net/2021/04/30/RWE86qzhKJmtkoS.png></div>
|
||||
|
||||
## Ozone简介
|
||||
|
||||
Ozone是SEGGER公司开发的用于配合J-Link使用的调试工具,可以在运行期间查看内存变量、调用栈及其他信息,支持指令断点、内存断点、单步调试、内存监控等多种调试方式。使用Ozone调试stm32f407-st-discovery开发板须先使用SEGGER公司的工具ST-Link Reflash Utility将其板载ST-Link芯片刷成J-Link固件,该工具后续也可将板载ST-Link固件恢复为ST-Link。下述Ozone与ST-Link Reflash Utility均可以在SEGGER官网下载到。
|
||||
|
||||
## 调试步骤
|
||||
|
||||
### 步骤一 (Windows环境下)
|
||||
|
||||
切换板载STLink芯片固件至JLink固件:
|
||||
下载安装stlink驱动及烧录软件:[STM32 ST-LINK Utility v3.9.0](http://101.36.126.201:8011/STM32%20ST-LINK%20Utility%20v3.9.0.exe)。链接:`http://101.36.126.201:8011/STM32%20ST-LINK%20Utility%20v3.9.0.exe`
|
||||
|
||||
将开发板连接至计算机
|
||||
</br>
|
||||
<div align= "center"><img src = https://i.loli.net/2021/04/30/JWtnpyfYRo19ulH.jpg></div>
|
||||
</br>
|
||||
开发板默认配置为stlink,在设备管理器中可以看到连接的stlink设备
|
||||
</br>
|
||||
<div align= "center"><img src = https://i.loli.net/2021/04/30/az6bd34KoFG5hJI.png></div>
|
||||
</br>
|
||||
下载SEGGER官方工具,下载地址:[SEGGER - The Embedded Experts - Downloads - J-Link / J-Trace。](https://www.segger.com/downloads/jlink/#STLink_Reflash)链接:`https://www.segger.com/downloads/jlink/#STLink_Reflash`
|
||||
</br>
|
||||
<div align= "center"><img src = https://i.loli.net/2021/04/30/pMUCvseKZ6ncoJq.png></div>
|
||||
</br>
|
||||
将下载得到的zip压缩包解压,运行STLinkReflash.exe。接受相关协议后进入以下界面:
|
||||
</br>
|
||||
<div align= "center"><img src = https://i.loli.net/2021/04/30/QnRMP8DOv4AemgC.png></div>
|
||||
</br>
|
||||
四个选项分别为:
|
||||
|
||||
>[0].退出工具;
|
||||
>[1].将固件切换至JLink;
|
||||
>[2].升级JLink固件;
|
||||
>[3].将固件切换至STLink。
|
||||
|
||||
此处须选择1,成功后得到以下输出:
|
||||
Selection>1
|
||||
|
||||
Preparing for FW update (can take up to 10 seconds)...O.K.
|
||||
Identifying ST-LINK variant...O.K.: ST-LINK/V2-1
|
||||
Performing firmware update...O.K.
|
||||
|
||||
此时在设备管理器中可以看到连接了jlink设备
|
||||
</br>
|
||||
<div align=center><img src="https://img-blog.csdnimg.cn/img_convert/61fcaba001f96575abfd4a7ca4ab0906.png" /></div>
|
||||
|
||||
### 步骤二(Ubuntu环境下)
|
||||
|
||||
下载JLink驱动(Ubuntu下载DEB包)
|
||||
|
||||
下载地址:[SEGGER - The Embedded Experts - Downloads - J-Link / J-Trace](https://www.segger.com/downloads/jlink)
|
||||
</br>
|
||||
<div align= "center"><img src = https://i.loli.net/2021/04/30/KaQ9mtVMru8IJsZ.jpg></div>
|
||||
</br>
|
||||
安装JLink驱动
|
||||
|
||||
dpkg -i JLink_Linux_V632i_x86_64.deb
|
||||
|
||||
V后面为版本号,以下载的为准,安装完成后将JLink连接到计算机,运行JLinkExe检查其驱动是否已经正确安装,如果是,将看到以下信息:
|
||||
|
||||
$ JLinkExe
|
||||
SEGGER J-Link Commander V7. 0a (Compiled Apr 16 2021 15:36:25)
|
||||
DLL version V7.00a, compiled Apr 16 2021 15:36:09
|
||||
Connecting to J-Link via USB...O.K.
|
||||
Firmware: J-Link OB-K22-SiFive compiled Mar 3 2021 14:13:05
|
||||
Hardware version: V1.00
|
||||
S/N: 979015641
|
||||
VTref=3.300V
|
||||
Type "connect" to establish a target connection, '?' for help
|
||||
J-Link>
|
||||
|
||||
### 步骤三(Ubuntu环境下)
|
||||
|
||||
下载Ozone(Ubuntu下载DEB包),下载地址:[SEGGER - The Embedded Experts - Downloads - J-Link / J-Trace](https://www.segger.com/downloads/jlink#Ozone)
|
||||
</br>
|
||||
<div align= "center"><img src = https://i.loli.net/2021/04/30/jRzep4yWn2IkwUX.png></div>
|
||||
</br>
|
||||
安装Ozone:
|
||||
|
||||
dpkg -i Ozone_Linux_V322e_x86_64.deb
|
||||
|
||||
安装完成后使用运行“Ozone”命令,启动Ozone图形界面,按照下图设置调试项目,期间需要选择XiUOS elf文件位置:
|
||||
</br>
|
||||
<div align=center><img src="https://img-blog.csdnimg.cn/img_convert/649e26c071b88d85a3c3c73a1c0020ba.png" /></div>
|
||||
</br>
|
||||
选中设备:
|
||||
<div align= "center"><img src ="https://i.loli.net/2021/04/30/r6LXpVtfy4zojUl.png" /></div>
|
||||
</br>
|
||||
选择XiaoShanOS_stm32f407-st-discovery.elf
|
||||
- 注意是elf文件
|
||||
</br>
|
||||
<div align=center><img src="https://img-blog.csdnimg.cn/img_convert/59bde30e98b6e8de3162ab7b482ecb67.png" /></div>
|
||||
</br>
|
||||
<div align=center><img src="https://img-blog.csdnimg.cn/img_convert/7d650d8840e90cbd27a6001e33c802c0.png" /></div>
|
||||
</br>
|
||||
项目建立完成后点击左上角Download and reset program即可将elf下载至开发板并开始调试。此时左上角各按钮即可实现程序暂停、程序重启、单步跳过或单步陷入。注意Ozone下载完固件后会默认在main函数处暂停。
|
||||
</br>
|
||||
<div align=center><img src="https://img-blog.csdnimg.cn/img_convert/367fbeb0ffc8be346ea115f298695dd2.png" /></div>
|
|
@ -0,0 +1,11 @@
|
|||
# 调试XiUOS的技巧
|
||||
|
||||
---
|
||||
|
||||
## 使用ARM架构的开发板
|
||||
|
||||
* [STM32F407-ST-DISCOVERY](/doc/appdev/debug/Qzone-stm32f407-st-discovery.md)
|
||||
|
||||
## 使用risc-v架构的开发板
|
||||
|
||||
* [KD233](/doc/appdev/debug/JLink-KD233.md)
|
|
@ -0,0 +1,171 @@
|
|||
# 从零开始构建矽璓工业物联操作系统:使用risc-v架构的HiFive1 Rev B 开发板
|
||||
|
||||
[XiUOS](http://xuos.io/) (X Industrial Ubiquitous Operating System) 矽璓工业物联操作系统是一款面向工业物联场景的泛在操作系统,来自泛在操作系统研究计划。所谓泛在操作系统(UOS: Ubiquitous Operating Systems),是支持互联网时代人机物融合泛在计算应用模式的新型操作系统,是传统操作系统概念的泛化与延伸。在泛在操作系统技术体系中,不同的泛在计算设备和泛在应用场景需要符合各自特性的不同UOS,XiUOS即是面向工业物联场景的一种UOS,主要由一个极简的微型实时操作系统(RTOS)内核和其上的智能工业物联框架构成,支持工业物联网(IIoT: Industrial Internet of Things)应用。
|
||||
|
||||
## 开发环境搭建
|
||||
|
||||
### 推荐使用
|
||||
|
||||
**操作系统:** ubuntu18.04 [https://ubuntu.com/download/desktop](https://ubuntu.com/download/desktop)
|
||||
**开发工具推荐使用 VSCode ,VScode下载地址为:** VSCode [https://code.visualstudio.com/](https://code.visualstudio.com/),推荐下载地址为 [http://vscode.cdn.azure.cn/stable/3c4e3df9e89829dce27b7b5c24508306b151f30d/code_1.55.2-1618307277_amd64.deb](http://vscode.cdn.azure.cn/stable/3c4e3df9e89829dce27b7b5c24508306b151f30d/code_1.55.2-1618307277_amd64.deb)
|
||||
|
||||
### 依赖包安装
|
||||
|
||||
```bash
|
||||
sudo apt install build-essential pkg-config
|
||||
sudo apt install gcc make libncurses5-dev openssl libssl-dev bison flex libelf-dev autoconf libtool gperf libc6-dev git
|
||||
|
||||
```
|
||||
|
||||
**源码下载:** XiUOS [https://forgeplus.trustie.net/projects/xuos/xiuos](https://forgeplus.trustie.net/projects/xuos/xiuos)
|
||||
|
||||
新建一个空文件夹并进入文件夹中,并下载源码,具体命令如下:
|
||||
|
||||
```bash
|
||||
mkdir test && cd test
|
||||
git clone https://git.trustie.net/xuos/xiuos.git
|
||||
```
|
||||
|
||||
打开源码文件包可以看到以下目录:
|
||||
| 名称 | 说明 |
|
||||
| -- | -- |
|
||||
| application | 应用代码 |
|
||||
| board | 板级支持包 |
|
||||
| framework | 应用框架 |
|
||||
| fs | 文件系统 |
|
||||
| kernel | 内核源码 |
|
||||
| resources | 驱动文件 |
|
||||
| tool | 系统工具 |
|
||||
使用VScode打开代码,具体操作步骤为:在源码文件夹下打开系统终端,输入`code .`即可打开VScode开发环境,如下图所示:
|
||||
<div align=center><img src = https://img-blog.csdnimg.cn/20210429154839715.jpg width =1000></div>
|
||||
|
||||
### 裁减配置工具的下载
|
||||
|
||||
裁减配置工具:
|
||||
**工具地址:** kconfig-frontends [https://forgeplus.trustie.net/projects/xuos/kconfig-frontends](https://forgeplus.trustie.net/projects/xuos/kconfig-frontends)
|
||||
|
||||
```bash
|
||||
mkdir kfrontends && cd kfrontends
|
||||
git clone https://git.trustie.net/xuos/kconfig-frontends.git
|
||||
```
|
||||
|
||||
下载源码后按以下步骤执行软件安装:
|
||||
|
||||
```bash
|
||||
cd kconfig-frontends
|
||||
./xs_build.sh
|
||||
```
|
||||
|
||||
### 编译工具链
|
||||
|
||||
RISC-V: riscv-none-embed-,默认安装到Ubuntu的/opt/,下载源码并解压。[下载网址 http://101.36.126.201:8011/gnu-mcu-eclipse.tar.bz2](http://101.36.126.201:8011/gnu-mcu-eclipse.tar.bz2)
|
||||
|
||||
```bash
|
||||
tar -xjf gnu-mcu-eclipse.tar.bz2 -C /opt/
|
||||
```
|
||||
|
||||
将上述解压的编译工具链的路径添加到board/hifive1-rev-B/config.mk文件当中,例如:
|
||||
|
||||
```bash
|
||||
export CROSS_COMPILE ?=/opt/gnu-mcu-eclipse/riscv-none-gcc/8.2.0-2.1-20190425-1021/bin/riscv-none-embed-
|
||||
```
|
||||
|
||||
若已存在`export CROSS_COMPILE ?=xxxx` 应该将原有的语句注释,再写入上面的语句。
|
||||
|
||||
# 在HiFive1 Rev B board 上创建第一个应用
|
||||
|
||||
## 1.HiFive1 Rev B board 简介
|
||||
|
||||
| 硬件 | 描述 |
|
||||
| -- | -- |
|
||||
|芯片型号| FE310-G002 |
|
||||
|架构| RV32IMAC |
|
||||
|主频| 320+MHz |
|
||||
|片内SRAM| 16KB |
|
||||
| 外设 | UART、SPI、I2C |
|
||||
|
||||
XiUOS板级当前支持使用UART。
|
||||
|
||||
## 2. 代码编写与编译说明
|
||||
|
||||
编辑环境:`VScode`
|
||||
|
||||
编译工具链:`riscv-none-embed-gcc`
|
||||
使用`VScode`打开工程的方法有多种,本文介绍一种快捷键,在项目目录下将`code .`输入终端即可打开目标项目
|
||||
|
||||
修改`applications`文件夹下`main.c`
|
||||
在输出函数中写入 Hello, world! \n running on Hifive1 Rev B board完成代码编辑。
|
||||
</br>
|
||||
<div align=center><img src="https://img-blog.csdnimg.cn/20210429102958428.jpg" /></div>
|
||||
</br>
|
||||
编译步骤:
|
||||
|
||||
1.在VScode终端下执行以下命令,生成配置文件
|
||||
|
||||
```bash
|
||||
make BOARD=hifive1-rev-B menuconfig
|
||||
```
|
||||
|
||||
2.在menuconfig界面配置需要关闭和开启的功能,按回车键进入下级菜单,按Y键选中需要开启的功能,按N键选中需要关闭的功能,配置结束后选择Exit保存并退出
|
||||
</br>
|
||||
<div align=center><img src="https://img-blog.csdnimg.cn/20210429100605107.png?x-oss-process=none,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0FJSVRfVWJpcXVpdG91cw==,size_16,color_FFFFFF,t_70" /></div>
|
||||
</br>
|
||||
3.继续执行以下命令,进行编译
|
||||
|
||||
```bash
|
||||
make BOARD=hifive1-rev-B
|
||||
```
|
||||
|
||||
4.如果编译正确无误,build文件夹下会产生XiUOS_hifive1-rev-B.elf、XiUOS_hifive1-rev-B.bin文件。其中XiUOS_hifive1-rev-B.bin需要烧写到设备中进行运行。
|
||||
>注:最后可以执行以下命令,清除配置文件和编译生成的文件
|
||||
|
||||
```bash
|
||||
make BOARD=hifive1-rev-B distclean
|
||||
```
|
||||
|
||||
## 3. 烧写及执行
|
||||
|
||||
hifive1-rev-B支持J-Link,可以通过J-Link进行烧录和调试。
|
||||
</br>
|
||||
<div align=center><img src="https://img-blog.csdnimg.cn/20210429100749914.png?x-oss-process=none,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0FJSVRfVWJpcXVpdG91cw==,size_16,color_FFFFFF,t_70" /></div>
|
||||
</br>
|
||||
首先电脑需要安装J-Link Software and Documentation Pack,这里以Ubuntu18.04为例,下载 [JLink_Linux_V700_x86_64.deb](https://www.segger.com/downloads/jlink/JLink_Linux_V700_x86_64.deb),推荐使用[http://101.36.126.201:8011/JLink_Linux_V700_x86_64.deb](http://101.36.126.201:8011/JLink_Linux_V700_x86_64.deb)下载,然后执行以下命令安装到电脑上
|
||||
|
||||
```bash
|
||||
sudo apt install ./JLink_Linux_V700_x86_64.deb
|
||||
```
|
||||
|
||||
使用 Micro USB 线将开发板与电脑连接,终端执行以下命令进入J-Link控制台,并通过J-Link连接设备
|
||||
|
||||
```bash
|
||||
JLinkExe -device FE310 -if jtag -jtagconf -1,-1 -speed 4000
|
||||
```
|
||||
|
||||
命令执行成功后终端如下图:
|
||||
</br>
|
||||
<div align=center><img src="https://img-blog.csdnimg.cn/20210429101023483.png?x-oss-process=none,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0FJSVRfVWJpcXVpdG91cw==,size_16,color_FFFFFF,t_70" /></div>
|
||||
</br>
|
||||
在J-Link控制台输入connect连接设备,如下图:
|
||||
</br>
|
||||
<div align=center><img src="https://img-blog.csdnimg.cn/202104291011027.png?x-oss-process=none,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0FJSVRfVWJpcXVpdG91cw==,size_16,color_FFFFFF,t_70" /></div>
|
||||
</br>
|
||||
接着输入erase命令擦除FLASH,如图:
|
||||
</br>
|
||||
<div align=center><img src="https://img-blog.csdnimg.cn/20210429101126585.png" /></div>
|
||||
</br>
|
||||
输入loadbin命令,并指定烧录的bin文件和烧录地址,将bin文件烧录到开发板中,如图:
|
||||
</br>
|
||||
<div align=center><img src="https://img-blog.csdnimg.cn/20210429101148844.png?x-oss-process=none,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0FJSVRfVWJpcXVpdG91cw==,size_16,color_FFFFFF,t_70" /></div>
|
||||
|
||||
### 3.1 运行结果
|
||||
|
||||
如果编译 & 烧写无误,可以通过screen工具打开串口终端,hifive1-rev-B连接电脑后,在/dev 目录下会多出/dev/ttyACM0、/dev/ttyACM1两个串口设备,一般串口输出为/dev/ttyACM0,通过screen命令打开串口:
|
||||
|
||||
```bash
|
||||
sudo apt install screen
|
||||
screen /dev/ttyACM0 115200
|
||||
```
|
||||
|
||||
按下开发板Reset按钮,将会在串口终端上看到信息打印输出
|
||||
</br>
|
||||
<div align=center><img src="https://img-blog.csdnimg.cn/20210429103145361.jpg?x-oss-process=none,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0FJSVRfVWJpcXVpdG91cw==,size_16,color_FFFFFF,t_70" /></div>
|
|
@ -9,3 +9,7 @@
|
|||
## 使用risc-v架构的开发板
|
||||
|
||||
* [KD233](/doc/appdev/start_from_scratch/kd233.md)
|
||||
|
||||
* [hifive1 emulator](/doc/appdev/start_from_scratch/hifive1-emulator.md)
|
||||
|
||||
* [HiFive1 REV B](/doc/appdev/start_from_scratch/HiFive1-Rev-B.md)
|
||||
|
|
|
@ -0,0 +1,153 @@
|
|||
# 从零开始构建矽璓工业物联操作系统:使用risc-v架构的hifive1 emulator
|
||||
|
||||
[XiUOS](http://xuos.io/) (X Industrial Ubiquitous Operating System) 矽璓XiUOS是一款面向智慧车间的工业物联网操作系统,主要由一个极简的微型实时操作系统内核和其上的工业物联框架构成,通过高效管理工业物联网设备、支撑工业物联应用,在生产车间内实现智能化的“感知环境、联网传输、知悉识别、控制调整”,促进以工业设备和工业控制系统为核心的人、机、物深度互联,帮助提升生产线的数字化和智能化水平。
|
||||
|
||||
## 1. 简介
|
||||
|
||||
QEMU 是一个通用的开源模拟器和虚拟化工具。从5.0版本开始,QEMU已经可以较完整的支持RISC-V架构,同时支持SiFive的E系列核心。目前XiUOS同样支持运行在QEMU上
|
||||
|
||||
| 硬件 | 描述 |
|
||||
| -- | -- |
|
||||
|芯片型号| Hifive1-FE310 |
|
||||
|架构| RV32IMAC |
|
||||
|主频| NA |
|
||||
|片内SRAM| 16KB |
|
||||
| 外设支持 | UART |
|
||||
|
||||
XiUOS板级当前支持使用UART。
|
||||
|
||||
## 2. 编译说明
|
||||
|
||||
**操作系统:** ubuntu18.04[https://ubuntu.com/download/desktop](https://ubuntu.com/download/desktop)
|
||||
**开发工具推荐使用 VSCode,VScode下载地址为:** VSCode[https://code.visualstudio.com/](https://code.visualstudio.com/),推荐下载地址为 [http://vscode.cdn.azure.cn/stable/3c4e3df9e89829dce27b7b5c24508306b151f30d/code_1.55.2-1618307277_amd64.deb](http://vscode.cdn.azure.cn/stable/3c4e3df9e89829dce27b7b5c24508306b151f30d/code_1.55.2-1618307277_amd64.deb)
|
||||
|
||||
### 依赖包安装
|
||||
|
||||
```bash
|
||||
sudo apt install build-essential pkg-config
|
||||
sudo apt install gcc make libncurses5-dev openssl libssl-dev bison flex libelf-dev autoconf libtool gperf libc6-dev git
|
||||
```
|
||||
|
||||
**XiUOS操作系统源码下载:** XiUOS[https://forgeplus.trustie.net/projects/xuos/xiuos](https://forgeplus.trustie.net/projects/xuos/xiuos)
|
||||
新建一个空文件夹并进入文件夹中,并下载源码,具体命令如下:
|
||||
|
||||
```bash
|
||||
mkdir test && cd test
|
||||
git clone https://git.trustie.net/xuos/xiuos.git
|
||||
```
|
||||
|
||||
打开源码文件包可以看到以下目录:
|
||||
| 名称 | 说明 |
|
||||
| -- | -- |
|
||||
| application | 应用代码 |
|
||||
| board | 板级支持包 |
|
||||
| framework | 应用框架 |
|
||||
| fs | 文件系统 |
|
||||
| kernel | 内核源码 |
|
||||
| resources | 驱动文件 |
|
||||
| tool | 系统工具 |
|
||||
使用VScode打开代码,具体操作步骤为:在源码文件夹下打开系统终端,输入`code .`即可打开VScode开发环境,如下图所示:
|
||||
<div align="center"><img src = https://img-blog.csdnimg.cn/20210429154839715.jpg width =1000></div>
|
||||
|
||||
### 裁减配置工具的下载
|
||||
|
||||
**裁减配置工具:** kconfig-frontends [https://forgeplus.trustie.net/projects/xuos/kconfig-frontends](https://forgeplus.trustie.net/projects/xuos/kconfig-frontends)
|
||||
执行以下命令下载配置工具:
|
||||
|
||||
```bash
|
||||
mkdir kfrontends && cd kfrontends
|
||||
git clone https://git.trustie.net/xuos/kconfig-frontends.git
|
||||
```
|
||||
|
||||
下载源码后按以下步骤执行软件安装:
|
||||
|
||||
```bash
|
||||
cd kconfig-frontends
|
||||
./xs_build.sh
|
||||
```
|
||||
|
||||
### 编译工具链
|
||||
|
||||
RISC-V: riscv-none-embed-,默认安装到Ubuntu的/opt/,下载源码并解压。[下载网址 http://101.36.126.201:8011/gnu-mcu-eclipse.tar.bz2](http://101.36.126.201:8011/gnu-mcu-eclipse.tar.bz2),下载完成后,执行以下命令:
|
||||
|
||||
```bash
|
||||
sudo tar -xvjf gnu-mcu-eclipse.tar.bz2 -C /opt/
|
||||
```
|
||||
|
||||
在VScode中将上述解压的编译工具链的路径添加到board/hifive1-emulator/config.mk文件当中,操作如下:
|
||||
|
||||
```bash
|
||||
export CROSS_COMPILE ?=/opt/gnu-mcu-eclipse/riscv-none-gcc/8.2.0-2.1-20190425-1021/bin/riscv-none-embed-
|
||||
```
|
||||
|
||||
若`CROSS_COMPILE` 变量定义语句已经存在,将它替换成上面的语句
|
||||
|
||||
# 编译步骤
|
||||
|
||||
1.在`VScode`的“命令终端”中执行以下命令,生成配置文件
|
||||
|
||||
```bash
|
||||
make BOARD=hifive1-emulator menuconfig
|
||||
```
|
||||
|
||||
2.在menuconfig界面配置需要关闭和开启的功能,按回车键进入下级菜单,按Y键选中需要开启的功能,按N键选中需要关闭的功能,配置结束后选择Exit保存并退出(本例旨在演示简单的输出例程,所以没有需要配置的选项,双击快捷键ESC退出配置)
|
||||
|
||||
<div align=center><img src="https://img-blog.csdnimg.cn/20210430102341188.png?x-oss-process=none,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0FJSVRfVWJpcXVpdG91cw==,size_16,color_FFFFFF,t_70" /></div>
|
||||
</br>
|
||||
退出时选择`yes`保存上面所配置的内容,如下图所示:
|
||||
</br>
|
||||
<div align=center><img src="https://img-blog.csdnimg.cn/20210430105320235.jpg?x-oss-process=none,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0FJSVRfVWJpcXVpdG91cw==,size_16,color_FFFFFF,t_70" /></div>
|
||||
</br>
|
||||
若执行 `make BOARD=hifive1-emulator menuconfig`后出现以下界面:
|
||||
<div align=center><img src="https://img-blog.csdnimg.cn/20210429204440614.png" /></div>
|
||||
解决的方法是将终端向上拉伸超过当前界面的三分之二以上,效果如下:
|
||||
<div align=center><img src="https://img-blog.csdnimg.cn/20210429204819645.png?x-oss-process=none,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0FJSVRfVWJpcXVpdG91cw==,size_16,color_FFFFFF,t_70" /></div>
|
||||
</br>
|
||||
3.继续在VScode命令终端中执行以下命令,进行编译
|
||||
|
||||
```bash
|
||||
make BOARD=hifive1-emulator
|
||||
```
|
||||
|
||||
4.如果编译正确无误,会在build目录下产生XiUOS_hifive1-emulator.elf、XiUOS_hifive1-emulator.bin文件。
|
||||
|
||||
## 3. 运行
|
||||
|
||||
### 3.1 编译并安装QEMU
|
||||
|
||||
官网下载QEMU源码编译安装,推荐使用[QEMU v5.2.0](https://download.qemu.org/qemu-5.2.0.tar.xz)版本,如果官网下载速度慢,也可从下面链接下载QEMU v5.2.0源码压缩包[下载地址](https://download.qemu.org/qemu-5.2.0.tar.xz),用户可执行下面的命令进行下载并安装`QUME`。
|
||||
|
||||
```bash
|
||||
wget https://download.qemu.org/qemu-5.2.0.tar.xz
|
||||
tar -xvf qemu-5.2.0.tar.xz
|
||||
sudo apt install ninja-build libpixman-1-dev
|
||||
cd qemu-5.2.0
|
||||
./configure --target-list=riscv32-softmmu
|
||||
make
|
||||
sudo make install
|
||||
```
|
||||
|
||||
### 3.2 运行结果
|
||||
|
||||
通过以下命令启动QEMU并加载XiUOS ELF文件
|
||||
|
||||
```bash
|
||||
qemu-system-riscv32 -nographic -machine sifive_e -kernel build/XiUOS_hifive1-emulator.elf
|
||||
```
|
||||
|
||||
QEMU运行起来后将会在终端上看到信息打印输出
|
||||
<div align="center"><img src="https://img-blog.csdnimg.cn/20210430102443529.png?x-oss-process=none,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0FJSVRfVWJpcXVpdG91cw==,size_16,color_FFFFFF,t_70" /></div>
|
||||
|
||||
### 3.3 调试
|
||||
|
||||
利用QEMU可以方便的对XiUOS进行调试,首先通过以下命令启动QEMU
|
||||
|
||||
```bash
|
||||
qemu-system-riscv32 -nographic -machine sifive_e -kernel build/XiUOS_hifive1-emulator.elf -s -S
|
||||
```
|
||||
|
||||
然后要重新开启另一个linux系统终端一个终端,执行`riscv-none-embed-gdb`命令
|
||||
|
||||
```bash
|
||||
riscv-none-embed-gdb build/XiUOS_hifive1-emulator.elf -ex "target remote localhost:1234"
|
||||
```
|
Loading…
Reference in New Issue