Deploy

MACE Micro module is written in c++98 and only depends on <cmath>. We can write a CMake toolchain file to build the program for the special platform.

For Cortex-M MCU

Now we deploy the MNIST classifier example on a NUCLEO-F767ZI development with the Mbed OS. Install a GCC Arm Embedded compiler by the terminal.

# Installs gcc arm
sudo apt-get install gcc-arm-none-eabi

Refer to <https://os.mbed.com/docs/mbed-os/v6.3/build-tools/install-and-set-up.html/> to install Mbed OS tools.

Now we can convert the model and build the program,

python3 tools/python/convert.py --config=micro/pretrained_models/keras/mnist/mnist-int8.yml --enable_micro
./micro/tools/cmake/cmake-build-gcc-arm-none-eabi.sh  -DARM_CPU=cortex-m7 -DMACE_MICRO_ENABLE_CMSIS=ON -DMACE_MICRO_ENABLE_HARDFP=OFF

The "-DARM_CPU=cortex-{m7|m4|..}" is a necessary CMake variable for different series of Arm MCUs. You can use the Mace Micro install package("build/micro/gcc-arm-none-eabi/install") in yourself project. Here we use "mbed-cli" to compile it

# cp the MACE Micro libraries to the workspace directory
cp build/micro/gcc-arm-none-eabi/install micro/examples/classifier -r
cd micro/examples/classifier
# Compile the program
mbed compile -t GCC_ARM -m NUCLEO_F767ZI -D MICRO_MODEL_NAME=mnist_int8 -D MICRO_DATA_NAME=mnist
# Flash the program to the development board
cp BUILD/NUCLEO_F767ZI/GCC_ARM/classifier.bin  /media/$USER/NODE_F767ZI
# Connet to the default COM port
sudo chown $USER:$USER  /dev/ttyACM0
mbed sterm

Press the reset(black) button to run the example again.