Skip to content
Switch branches/tags
Go to file
Cannot retrieve contributors at this time

Build Maixpy from source code

Only support Linux(recommend) and macOS

And you can use online build tool here:

Get source code

  • Clone by https link
git clone
  • Then get submodules
git submodule update --recursive --init

It will regiter and clone all submodules, if you don't want to register all submodules, cause some modules is unnecessary, just execute

git submodule update --init
# or 
git submodule update --init path_to_submodule
# or
git submodule update --init --recursive path_to_submodule

Install dependencies

Ubuntu for example:

sudo apt update
sudo apt install python3 python3-pip build-essential cmake
sudo pip3 install -r requirements.txt

If macOS:

  • Install cmake by brew or download dmg file from cmake official website
  • Ensure command cmake --version can be executed in terminal, in macOS maybe you need to add cmake bin dir to PATH in ~/.bashrc or ~/.zshrc like:
export PATH=$PATH:/Applications/

recommend python3 instead of python2

Check CMake version by

cmake --version

The cmake version should be at least v3.9, if not, please install latest cmake manually from cmake website

Download toolchain

Download the latest toolchain from here (macOS and linux), or kendryte-toolchain-ubuntu-amd64-8.2.0-20190409.tar.xz(CDN) (for linux)

And extract to /opt/kendryte-toolchain/

For example:

sudo tar -Jxvf kendryte-toolchain-ubuntu-amd64-8.2.0-20190409.tar.xz -C /opt
ls /opt/kendryte-toolchain/bin

Configure project

  • Switch path to hello_world project director
cd MaixPy
cd projects/hello_world

or maixpy project

cd MaixPy
cd projects/maixpy_k210
  • Configure toolchain path

The default toolchain path is /opt/kendryte-toolchain/bin, and default toolchain pfrefix is riscv64-unknown-elf-.

If you have copied toolchain to /opt, just use default, and it is highly recommend!!

Or you can customsize your toolchain path by

python3 --toolchain /opt/kendryte-toolchain/bin --toolchain-prefix riscv64-unknown-elf- config 

Clean config to default by command python3 clean_conf

  • Configure project

Usually, just use the default configuration.

If you want to customsize project modules, execute command:

python3 menuconfig

This command will display a configure panel with GUI, then change settings and save configuration.


python3 build

And clean project by:

python3 clean

Clean all build files by:

python3 distclean

The make system is generated from cmake, you must run

python3 rebuild

to rebuild make system after you add/delete source files or edit kconfig files

Flash (Burn) to board

For example, you have one Maix Go board:

python3 -B goE -p /dev/ttyUSB1 -b 1500000 flash

For Maixduino board:

python3 -B maixduino -p /dev/ttyUSB0 -b 1500000 -S flash

-B means board, -p means board serial device port, -b means baudrate, -S or --Slow means download at low speed but more stable mode.

the configuration saved in .flash_conf.json except args: --sram(-s)、--terminal(-t)、--Slow(-S) You don't need to confiure again the next time you burn firmware, just use:

python3 flash


python3 -S flash

More parameters help by :

python3 --help