Along side FPGA development I am also interested in Microprocessors, especially those which can be used for edge applications. A few weeks ago I saw an article in Hackster.io news about the new Coral Dev Board Micro from google. It is the latest in the range of google Coral development boards which stretches from the Dev Board to the Dev Board Mini and USB Accelerator.
While the Dev Board and Dev Board Mini provide developers with a embedded processing solution which provides developers with video / audio capability and wireless connectivity. The Dev Board Micro is intended for much smaller deployments where video and networking may not be required.
Regardless of the type of dev board selected they are all provided with the same same Tensor Processing Unit coprocessor which is capable of 4 Terra Operations Per Second when using INT8 representation.
One of the differences between the Dev Board and Dev Board Mini is that they use a Debian based Linux OS, while the Dev Board Micro uses FreeRTOS.
In this blog we are going to look at how to get up and running with the Coral Dev Board Micro and its initial application which is person detection.
The Coral Dev Board Micro provides the developer with dual core Arm Cortex M7 and M4 cores in a NXP i.MX RT1176 MCU. Within this processor the M7 core is operating at 800MHz while the M4 is running at half that rate of 400MHz. Internally the processor provides 2 MB of SRAM while the board contains 64 MB of SDRAM and 1 GB of flash.
Sensor wise the Coral Dev Board Micro provides developers
324 x 324 pixel colour camera
Pulse Density Modulation Microphones
1 User button
1 User LED
To provide expansion or integration with carrier cards or custom hardware, two board to board connectors are provided on the bottom of the board. To further aid expansion and prototyping the edge of the board has two GPIO headers which break out digital, analogue and power pins
One of the nice things about the Coral Dev Board Micro is that we are able to develop its applications using either FreeRTOS while also offering compatibility with Arduino.
ML models can be deployed on either the processor or the TPU using TensorFlowLite for Microcontrollers.
At the heart of the software solution is the coralmicro library which provides APIs for working with the sensors on board and to work with the TPU.
To get started developing applications for the Coral Dev Board Micro we need a Linux or MacOS computer which has Python 3 Installed.
The out of the box example provides a person detection ML inference running on the M7 core (not the TPU). Re creating this is the best approach to pipe cleaning our development environment.
The application we want to recreate is located on github, the first step is to clone the repository and the all its submodules.
git clone --recurse-submodules -j8 https://github.com/google-coral/coralmicro
Once these repos have been cloned the next step is to set up the development environment. A setup.sh script is provided to support this.
This will configure all of the build tools which are needed to build the example applications.
We can build all of the examples provided by running the bash script build.
Once the builds are completed we can connect the Coral Dev Board Micro over its USB C connector and flash the application using the command
python3 scripts/flashtool.py -e detect_faces
We can download any of the examples we just built using the same command. You can find the example applications under build examples directory.
The detect face application, outputs a message over the UART when it detects faces along with a confidence. To be ale to see this you need a logic level USB UART cable and to solder on headers to the development board.
Connecting to the UART we can then see the output of the person detection algorithm as it runs.
One thing we can do with the Coral Dev Board Micro is cascading models such that they are implemented on all three cores which are used. This enables models to cascade information between models on the MCU cores.
I will take a look at this in more detail in another blog soon, as it will provide a good basis for looking at the thermal and power consumption of the Coral De Board Micro when it is running the TPU.