Go to file
Bits 4e29655024
Create package.json
2019-04-25 16:09:17 +08:00
LICENSE Initial commit 2018-10-15 23:48:10 +08:00
README.md Update board select document of trainer 2019-04-10 17:29:30 +08:00
kflash.py Power up programming speed!!! 2019-04-25 14:11:06 +08:00
package.json Create package.json 2019-04-25 16:09:17 +08:00

README.md

kflash, A Python-based Kendryte K210 UART ISP Utility

Usage

usage: kflash.py [-h] [-p PORT] [-c CHIP] [-b BAUDRATE] [-l BOOTLOADER]
                 [-k KEY] [-v] [-t] [-n] [-s] -B BOARD
                 firmware

positional arguments:
  firmware              firmware bin path

optional arguments:
  -h, --help            show this help message and exit
  -p PORT, --port PORT  COM Port
  -c CHIP, --chip CHIP  SPI Flash type, 0 for in-chip, 1 for on-board
  -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, kd233 or dan or bit or goD or goE

Attention

Maixgo with openec firmware, BOARD must choose -B goE, and should choose sencond com port.

With cmsis-dap firmware(before 2019.02.21), BOARD must use -B goD.

You can update new cmsis-dap firmware, it is same as openec.

For K210 Trainer V0.01b, BOARD must choose -B trainer.

For KD233, BOARD must choose -B kd233, and the jumper for kd233 automatic download circuit must be set.

Sample Usage

# Linux or macOS
python3 kflash.py -B dan firmware.bin
python3 kflash.py -B dan -t firmware.bin # Open a Serial Terminal After Finish

# Windows CMD or PowerShell
python kflash.py -B dan firmware.bin
python kflash.py -B dan -t firmware.bin # Open a Serial Terminal After Finish
python kflash.py -B dan -n -t firmware.bin # Open a Serial Terminal After Finish, do not use ANSI colors

# Windows Subsystem for Linux
sudo python3 kflash.py -B dan -p /dev/ttyS13 firmware.bin # ttyS13 Stands for the COM13 in Device Manager
sudo python3 kflash.py -B dan -p /dev/ttyS13 -t firmware.bin # Open a Serial Terminal After Finish

Requirements

  • Python3
  • PySerial

Windows

python get-pip.py
python -mpip install pyserial

macOS

# Install Homebrew, an awesome package manager for macOS
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
brew install python
python3 -mpip3 install pyserial

Ubuntu, Debian

sudo apt update
sudo apt install python3 python3-pip
sudo pip3 install pyserial

Fedora

sudo dnf install python3
sudo python3 -m pip install pyserial

CentOS

sudo yum -y install epel-release
sudo yum -y install python36u python36u-pip
sudo ln -s /bin/python3.6 /usr/bin/python3
sudo ln -s /bin/pip3.6 /usr/bin/pip3
sudo pip3 install pyserial

Trouble Shooting


Could not open port /dev/tty*: [Errno 13] Permission denied: '/dev/tty*'

For Windows Subsystem for Linux, you may have to use sudo due to its docker like feature

  • Add your self to a dialout group to use usb-to-uart devices by
sudo usermod -a -G dialout $(whoami)
  • Logout, and log in.

UART Auto Detecting is Not Working, or Select the Wrong UART Port

Windows

  • Check the COM Number for your device at the Device Manager, such as USB-SERIAL CH340(COM13).
python kflash.py -p COM13 firmware.bin

Windows Subsystem For Linux(WSL)

  • Check the COM Number for your device at the Device Manager, such as USB-SERIAL CH340(COM13).
sudo python3 kflash.py -p /dev/ttyS13 firmware.bin # You have to use *sudo* here

Linux

  • Check the USB Device Name, Usually presented as ttyUSB*
ls /dev/ttyUSB*
  • It will print :
$ ls /dev/ttyUSB*
/dev/ttyUSB0
/dev/ttyUSB2
/dev/ttyUSB13
  • Choose the one you think belongs to your device, or you may try multimule names.
python3 kflash.py -p /dev/ttyUSB13 firmware.bin

macOS

  • Check the USB Device Name, Usually presented as cu.*
ls /dev/cu.*
  • It will print :
$ ls /dev/ttyUSB*
/dev/cu.wchusbserial1410
/dev/cu.wchusbserial1437
/dev/cu.SLAB_USBtoUART2333
  • Choose the one you think belongs to your device, or you may try multimule names.
python3 kflash.py -p /dev/cu.wchusbserial1410 firmware.bin