kendryte K210烧写工具-KFLASH

上一篇介绍了K210的编译环境配置,同时也编译了一个hello_world工程,这篇我们就来介绍一下K210的烧写工具,把我们上次的编译出来的文件烧入板子看一下结果如何。

Windows系统下的Kflash之一(kflash.exe)

kflash.exe是在windows下面的最方便的K210烧录工具,同时也是官方提供的,可以在官网的开发者资料找到。

下载之后解压缩可以看到下面的内容:
解压缩

双击执行K-Flash.exe就可以了。烧录相关的选项也极为的简单。
界面

需要选择的项也都很简单,第一项就是选择串口,选择对应的串口就可以了,因为我使用的是自家的板子用了CH340K芯片,那么就没错了。
Baud rate选115200,它还有一个选项是2000000速度太快了无法成功,不知道这个为了什么场景准备的。
chip的话就不需要去管它。
Firmware就选择需要烧录的固件,这里我选择的是搭建环境时候的hello_world输出的bin文件。
点击flash就可以了。
烧录过程

烧录的过程,可以看到下面是有进度条的,一般FlashFirmware就是最后一步也是最费时间的,这个进度走完基本就结束了。
烧录结束

烧录结束同样会给一个提示。同时我们可以使用串口工具看下串口的信息,默认串口配置是 115200-8-1-none
烧录结束

Windows系统下的Kflash之二(kflash.py)

Kflash.py是一个基于python的烧录工具,所以它更具有通用性(只要有python环境就可以)
我们可以在官方Github上找到这个repo:kendryte/kflash.py
在repo的ReadMe里面其实就可以看到很多信息,包括如何使用与安装等等相关资料。

kflash.py Readme部分内容
Usage
# kflash --help
usage: kflash [-h] [-p PORT] [-f FLASH] [-b BAUDRATE] [-l BOOTLOADER]
                [-k KEY] [-v] [-t] [-n] [-s] [-B BOARD] [-S SLOW]
                firmware

positional arguments:
firmware              firmware bin path

optional arguments:
-h, --help            show this help message and exit
-p PORT, --port PORT  COM Port
-f FLASH, --flash FLASH
                        SPI Flash type, 0 for SPI3, 1 for SPI0
-b BAUDRATE, --baudrate BAUDRATE
                        UART baudrate for uploading firmware
-l BOOTLOADER, --bootloader BOOTLOADER
                        bootloader bin path
-k KEY, --key KEY     AES key in hex, if you need encrypt your firmware.
-v, --verbose         increase output verbosity
-t, --terminal        Start a terminal after finish (Python miniterm)
-n, --noansi          Do not use ANSI colors, recommended in Windows CMD
-s, --sram            Download firmware to SRAM and boot
-B BOARD, --Board BOARD
                        Select dev board, e.g. kd233, dan, bit, goD, goE or
                        trainer
-S SLOW, --Slow SLOW  Slow download mode

环境版本要求:

python>=3 or python=2.7
pyserial>=3.4
pyelftools>=0.25

那么我们就选择python3吧,毕竟python2年事已高,hah。

python get-pip.py
python -m pip install pyserial
python -m pip install pyelftools

相关环境安装好之后就可以开始安装kflash了。

C:\Users\hulk
$ python -m pip install kflash
Collecting kflash
  Downloading https://files.pythonhosted.org/packages/a0/42/c79ed7a9bd176be0632e7b767a48c9e337bbe843bf324aefb16dc13733f1/kflash-0.8.2-py3-none-any.whl (75kB)
     |█████████████                   | 30kB 109kB/s eta 0:00     |███████████████
██               | 40kB 65kB/s eta 0     |█████████████████████▌          | 51kB 79kB/s
      |██████████████████████████      | 61kB 95k     |███████████████
███████████████  | 71kB     |████████████████████████████████| 8
1kB 93kB/s
Collecting enum34>=1.1.6
  Downloading https://files.pythonhosted.org/packages/af/42/cb9355df32c69b553e72a2e28daee25d1611d2c0d9c272aa1d34204205b2/enum34-1.1.6-py3-none-any.whl
Requirement already satisfied: pyserial>=3.4 in c:\users\hulk\appdata\local\programs\python\python37\lib\site-packages (from kflash) (3.4)
Requirement already satisfied: pyelftools>=0.25 in c:\users\hulk\appdata\local\programs\python\python37\lib\site-packages (from kflash) (0.25)
Installing collected packages: enum34, kflash
Successfully installed enum34-1.1.6 kflash-0.8.2

安装完成之后,我们简单的来验证一下:

C:\Users\hulk
$ kflash
usage: kflash [-h] [-p PORT] [-f FLASH] [-b BAUDRATE] [-l BOOTLOADER] [-k KEY]
              [-v] [-t] [-n] [-s] [-B BOARD] [-S SLOW]
              firmware
kflash: error: the following arguments are required: firmware

那么可以说已经安装完成了,下面就开始研究下它的选项该怎么使用,使用kflash.py来烧录K210了。
怎么操作呢?我是按照下面这个思路来确定的:

  1. 我只需要烧录firmware.bin(因为目前阶段还没有特殊需求只是烧录固件)
  2. 我电脑有不止一个串口设备,需要确定端口号
  3. 看一下官方的Sample Usage
C:\Users\hulk
$ kflash -p COM50 E:\Kendryte210\kendryte-standalone-sdk-0.5.6\build\hello_world.bin
[INFO] COM Port Selected Manually:  COM50
[INFO] Default baudrate is 115200 , later it may be changed to the value you set.
[INFO] Trying to Enter the ISP Mode...
._
[INFO] Automatically detected goE/kd233

[INFO] Greeting Message Detected, Start Downloading ISP
Downloading ISP: |============================================================================| 100.0% 10kiB/s [INFO] Booting From 0x80000000
[INFO] Wait For 0.1 second for ISP to Boot
[INFO] Boot to Flashmode Successfully
[INFO] Selected Flash:  On-Board
[INFO] Initialization flash Successfully
Programming BIN: |============================================================================| 100.0% 10kiB/s [INFO] Rebooting...

成功!NICE!

Ubuntu系统下的Kflash(kflash.py)

环境介绍:

Ubuntu 18.04LTS
python 3.6.8

安装pip:

sudo apt update
sudo apt install python3-pip

安装pyserial和pyelftools:

pip3 install pyserial
pip3 install pyelftools

安装kflash:

pip3 install kflash

查看下是否成功安装:

kflash -h

返回结果:

kflash -h
usage: kflash [-h] [-p PORT] [-f FLASH] [-b BAUDRATE] [-l BOOTLOADER] [-k KEY]
              [-v] [-t] [-n] [-s] [-B BOARD] [-S SLOW]
              firmware

positional arguments:
  firmware              firmware bin path

optional arguments:
  -h, --help            show this help message and exit
  -p PORT, --port PORT  COM Port
  -f FLASH, --flash FLASH
                        SPI Flash type, 0 for SPI3, 1 for SPI0
  -b BAUDRATE, --baudrate BAUDRATE
                        UART baudrate for uploading firmware
  -l BOOTLOADER, --bootloader BOOTLOADER
                        bootloader bin path
  -k KEY, --key KEY     AES key in hex, if you need encrypt your firmware.
  -v, --verbose         increase output verbosity
  -t, --terminal        Start a terminal after finish (Python miniterm)
  -n, --noansi          Do not use ANSI colors, recommended in Windows CMD
  -s, --sram            Download firmware to SRAM and boot
  -B BOARD, --Board BOARD
                        Select dev board, e.g. kd233, dan, bit, goD, goE or
                        trainer
  -S SLOW, --Slow SLOW  Slow download mode

测试烧录:

kflash -p /dev/ttyUSB0 /home/hulk/kendryte210/kendryte-standalone-sdk-0.5.6/build/hello_world.bin

如果这一步报错的话,那可能是串口权限的问题,执行下面的语句:

sudo usermod -a -G dialout $(whoami)

到此烧录的方法基本介绍结束了。

Last modification:October 30th, 2019 at 02:05 pm

Leave a Comment


Notice: Constant __TYPECHO_DEBUG__ already defined in /var/www/html/index.php on line 28