diff --git a/docs/.vuepress/sidebar.js b/docs/.vuepress/sidebar.js index 5096b8f..37ccbbc 100755 --- a/docs/.vuepress/sidebar.js +++ b/docs/.vuepress/sidebar.js @@ -29,6 +29,7 @@ const sidebar = { ], 'appdev': [ '/doc/appdev/start_from_scratch/', + '/doc/appdev/debug/' ], 'demo': [ '/doc/demo/dashengda', diff --git a/docs/doc/appdev/README.md b/docs/doc/appdev/README.md index e23d5bd..d05d13a 100644 --- a/docs/doc/appdev/README.md +++ b/docs/doc/appdev/README.md @@ -3,3 +3,5 @@ --- * [从零开始构建矽璓工业物联操作系统](/doc/appdev/start_from_scratch) + +* [调试XiUOS的技巧](/doc/appdev/debug) diff --git a/docs/doc/appdev/debug/JLink-KD233.md b/docs/doc/appdev/debug/JLink-KD233.md new file mode 100644 index 0000000..c90182c --- /dev/null +++ b/docs/doc/appdev/debug/JLink-KD233.md @@ -0,0 +1,87 @@ +# 调试XiUOS的技巧:使用JLink调试KD233开发板 + +# 调试环境 + +**操作系统:** ubuntu18.04 [ https://ubuntu.com/download/desktop](https://ubuntu.com/download/desktop) + +调试工具:JLink(实物如图) +
+
+
+调试开发板:KD233(实物如图) +
+
+ +# 调试步骤 + +## 步骤一 +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) +
+
+
+ +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) +
+
+
+ +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 +``` + +
+
+序列号从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命令来调试了。 diff --git a/docs/doc/appdev/debug/Qzone-stm32f407-st-discovery.md b/docs/doc/appdev/debug/Qzone-stm32f407-st-discovery.md new file mode 100644 index 0000000..fc570f7 --- /dev/null +++ b/docs/doc/appdev/debug/Qzone-stm32f407-st-discovery.md @@ -0,0 +1,124 @@ +# 调试XiUOS的技巧:使用Qzone调试stm32f407-st-discovery开发板 + +# 调试XiUOS的技巧:使用JLink调试STM32F407-discovery开发板 + + + +- [调试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环境下) + + + +## 调试环境 + +操作系统:ubuntu 18.04,windows 10 + +调试工具:JLink(已集成于开发板) + +调试开发板:STM32F407-discovery(实物如图) + +
+ +## 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` + +将开发板连接至计算机 +
+
+
+开发板默认配置为stlink,在设备管理器中可以看到连接的stlink设备 +
+
+
+下载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` +
+
+
+将下载得到的zip压缩包解压,运行STLinkReflash.exe。接受相关协议后进入以下界面: +
+
+
+四个选项分别为: + +>[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设备 +
+
+ +### 步骤二(Ubuntu环境下) + +下载JLink驱动(Ubuntu下载DEB包) + +下载地址:[SEGGER - The Embedded Experts - Downloads - J-Link / J-Trace](https://www.segger.com/downloads/jlink) +
+
+
+安装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) +
+
+
+安装Ozone: + + dpkg -i Ozone_Linux_V322e_x86_64.deb + +安装完成后使用运行“Ozone”命令,启动Ozone图形界面,按照下图设置调试项目,期间需要选择XiUOS elf文件位置: +
+
+
+选中设备: +
+
+选择XiaoShanOS_stm32f407-st-discovery.elf +- 注意是elf文件 +
+
+
+
+
+项目建立完成后点击左上角Download and reset program即可将elf下载至开发板并开始调试。此时左上角各按钮即可实现程序暂停、程序重启、单步跳过或单步陷入。注意Ozone下载完固件后会默认在main函数处暂停。 +
+
diff --git a/docs/doc/appdev/debug/README.md b/docs/doc/appdev/debug/README.md new file mode 100644 index 0000000..4622347 --- /dev/null +++ b/docs/doc/appdev/debug/README.md @@ -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) diff --git a/docs/doc/appdev/start_from_scratch/HiFive1-Rev-B.md b/docs/doc/appdev/start_from_scratch/HiFive1-Rev-B.md new file mode 100644 index 0000000..f0913bf --- /dev/null +++ b/docs/doc/appdev/start_from_scratch/HiFive1-Rev-B.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开发环境,如下图所示: +
+ +### 裁减配置工具的下载 + +裁减配置工具: +**工具地址:** 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完成代码编辑。 +
+
+
+编译步骤: + +1.在VScode终端下执行以下命令,生成配置文件 + +```bash +make BOARD=hifive1-rev-B menuconfig +``` + +2.在menuconfig界面配置需要关闭和开启的功能,按回车键进入下级菜单,按Y键选中需要开启的功能,按N键选中需要关闭的功能,配置结束后选择Exit保存并退出 +
+
+
+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进行烧录和调试。 +
+
+
+首先电脑需要安装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 +``` + +命令执行成功后终端如下图: +
+
+
+在J-Link控制台输入connect连接设备,如下图: +
+
+
+接着输入erase命令擦除FLASH,如图: +
+
+
+输入loadbin命令,并指定烧录的bin文件和烧录地址,将bin文件烧录到开发板中,如图: +
+
+ +### 3.1 运行结果 + +如果编译 & 烧写无误,可以通过screen工具打开串口终端,hifive1-rev-B连接电脑后,在/dev 目录下会多出/dev/ttyACM0、/dev/ttyACM1两个串口设备,一般串口输出为/dev/ttyACM0,通过screen命令打开串口: + +```bash +sudo apt install screen +screen /dev/ttyACM0 115200 +``` + +按下开发板Reset按钮,将会在串口终端上看到信息打印输出 +
+
diff --git a/docs/doc/appdev/start_from_scratch/README.md b/docs/doc/appdev/start_from_scratch/README.md index 92d3e76..0c0e2bd 100644 --- a/docs/doc/appdev/start_from_scratch/README.md +++ b/docs/doc/appdev/start_from_scratch/README.md @@ -11,3 +11,5 @@ * [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)