附录I:K210命令行开发环境搭建指南
概述
本文介绍如何在Ubuntu或Windows下为K210搭建命令行开发环境。
Ubuntu
安装工具链
安装 build-essential 以获取 make 工具。
$ sudo apt install build-essential
安装cmake。
$ sudo apt install cmake
从勘智官网下载Ubuntu版本工具链,放到/opt目录并解压缩。
$ sudo mv kendryte-toolchain-ubuntu-amd64-8.2.0.tar.gz /opt
$ cd /opt
$ sudo tar -zxvf kendryte-toolchain-ubuntu-amd64-8.2.0.tar.gz
打开~/.bashrc文件,在文件末尾添加如下一行,将 /opt/kendryte-toolchain/bin 目录添加到PATH环境变量。
export PATH=$PATH:/opt/kendryte-toolchain/bin
使修改生效。
$ source ~/.bashrc
安装JLink驱动
从SEGGER网站下载JLink驱动deb包,这里以V6.32i版本为例。
$ dpkg -i JLink_Linux_V632i_x86_64.deb
将JLink接到计算机上,检查其驱动是否已经正确安装。如果是,则会看到类似下面的信息。
$ JLinkExe
SEGGER J-Link Commander V6.32i (Compiled Jul 24 2018 15:20:49)
DLL version V6.32i, compiled Jul 24 2018 15:20:43
Connecting to J-Link via USB...O.K.
Firmware: J-Link Ultra V4 compiled Apr 20 2018 16:46:34
Hardware version: V4.00
S/N: 504404532
License(s): RDI, FlashBP, FlashDL, JFlash, GDB
VTref=1.811V
Type "connect" to establish a target connection, '?' for help
J-Link>
安装Openocd
从Kendryte Github下载Ubuntu版本的Openocd。这里以kendryte-openocd-0.2.2-ubuntu64.tar.gz 为例。
$ sudo mv kendryte-openocd-0.2.2-ubuntu64.tar.gz /opt
$ cd /opt
$ sudo tar -zxvf kendryte-openocd-0.2.2-ubuntu64.tar.gz
注: 可能需要安装如下依赖包。
$ sudo apt install libusb-dev libftdi-dev libhidapi-dev
编译
从Kendryte Github下载kendryte-standalone-sdk 。
$ git clone git@github.com:kendryte/kendryte-standalone-sdk.git
把源文件目录例如hello_world放进kendryte-standalone-sdk/src目录。
在kendryte-standalone-sdk目录创建并进入build目录。
运行cmake。
$ cmake .. -DPROJ=hello_world -DTOOLCHAIN=/opt/kendryte-toolchain/bin
编译。
$ make
调试
运行openocd。
$ cd /opt/kendryte-openocd
$ ./bin/openocd -f ./tcl/kendryte.cfg
Open On-Chip Debugger 0.10.0+dev-ga938338 (2018-09-12-11:27)
Licensed under GNU GPL v2
For bug reports, read
http://openocd.org/doc/doxygen/bugs.html
adapter speed: 3000 kHz
Info : J-Link Ultra V4 compiled Apr 20 2018 16:46:34
Info : Hardware version: 4.00
Info : VTarget = 1.811 V
Info : clock speed 3000 kHz
Info : JTAG tap: riscv.cpu tap/device found: 0x04e4796b (mfg: 0x4b5 (<unknown>), part: 0x4e47, ver: 0x0)
Info : Examined RISCV core; XLEN=64, misa=0x800000000014112d
Info : Listening on port 3333 for gdb connections
Info : [0] Found 4 triggers
halted at 0x80008b74 due to debug interrupt
Info : Listening on port 6666 for tcl connections
Info : Listening on port 4444 for telnet connections
运行 gdb。
进入kendryte-standalone-sdk/build目录,打开另一个terminal。
$ riscv64-unknown-elf-gdb hello_world --eval-command="target remote 127.0.0.1:3333"
其中:
hello_world是编译过程生成的elf文件。
127.0.0.1表示本地IP地址。也可以指定远程地址。
3333是openocd监听的端口号。
成功连接openocd后,就可以使用load、break、continue等gdb命令来调试了。
注: gdb手册参考gdb website 。
下载
从Kendryte Github下载kflash.py脚本。
下载bin文件到K210.
$ sudo python3 kflash.py kendryte-standalone-sdk/build/hello_world.bin
注: 可以使用-p选项指定下载端口。
Windows
安装工具链
下载cmake V3.0之后的Windows版本。这里以V3.12.2版本为例。
把cmake安装到cmake-3.12.2-win64-x64目录,并把cmake-3.12.2-win64-x64\bin目录添加到PATH环境变量。
从勘智官网下载Windows版本工具链,解压缩后将kendryte-toolchain\bin目录添加到PATH环境变量。
安装JLink驱动
从SEGGER下载Windows版本JLink驱动包并安装。
将JLink接到计算机上,打开SEGGER\JLink_V632i目录,检查其驱动是否已经正确安装。
> Jlink.exe
安装Openocd
从Kendryte Github下载Windows版本的Openocd并解压缩。
运行kendryte-openocd\tool目录下的zadig-2.4.exe,Options->List all devices,选择JTAG调试器,将其驱动转换为WinUSB。
编译
从Kendryte Github下载kendryte-standalone-sdk 。
把源文件目录例如hello_world放进kendryte-standalone-sdk/src目录。
在kendryte-standalone-sdk目录创建并进入build目录。
运行cmake。
> cmake .. -DPROJ=hello_world -DTOOLCHAIN="xxxx/kendryte-toolchain/bin" -G "MinGW Makefiles"
其中xxxx为工具链的安装目录。
编译。
> mingw32-make
调试
运行openocd。
从cmd进入kendryte-openocd目录。
> .\bin\openocd.exe -f .\tcl\kendryte.cfg
运行gdb。
从另外一个cmd窗口进入kendryte-standalone-sdk\build目录。
> riscv64-unknown-elf-gdb hello_world --eval-command="target remote 127.0.0.1:3333"
其中:
hello_world是编译过程生成的elf文件。
127.0.0.1表示本地IP地址。也可以指定远程地址。
3333是openocd监听的端口号。
成功连接openocd后,就可以使用load、break、continue等gdb命令来调试了。
注: gdb手册参考gdb website 。
下载
从Kendryte Github下载Windows版本K-flash工具。
运行K-flash.exe,选择Device和Firmware,例如hello_world.bin,点击Flash。