Examples
The SDK ships 40 FreeRTOS applications: 37 for IPRO7 / IPRO7AI and 3 for IPRO6S. Each is a self-contained directory under apps/ with a .config, a CMakeLists.txt and a Makefile. The 9 applications that run on the IPRO7AI Reef EVK V4.0 each have a page with the build, flash and run steps; the others need another board and are only listed under Applications for other boards.
Building for the Reef
Most applications' default .config targets another board. For the Reef, pick the application's Reef configuration with DEFCONFIG=:
make -C apps/bluetooth/ble/ipro_ble_remote DEFCONFIG=defconfig_reef
| Item |
Rule |
| Build directory |
DEFCONFIG=defconfig_<name> builds into build_<name>/ and leaves .config alone; without DEFCONFIG= the build goes to build/ |
| Image |
<build directory>/build_out/<app>_IPRO7.bin (_IPRO6.bin for the IPRO6S applications) |
Plain make builds the Reef |
only ipro7ai_reef_demo, ipro_reef_teach and ipro_agora_sentino; any other application without DEFCONFIG= builds for the IPRO7 EVB or the IPRO7AI EVK |
| Flashing |
--chipname ipro7 --chip-variant IPRO7AI; partition table, boot2 and mfg payload as each application's page says |
| Console |
UART0 on U6: 115200 baud for every Reef configuration except ipro7_jpeg_decode (921600) |
| All in one |
./build_freertos.sh -d defconfig_reef build flash monitor ipro_throughput_test picks --chip-variant IPRO7AI itself and takes a partition table with -P; it cannot write boot2 or an mfg payload (see Tool Command Lines) |
Download mode, console wiring and the first flash are covered in the Reef quick start.
Reef EVK examples
| Application |
Purpose |
Boards and configs |
Console |
ipro7ai_reef_demo |
Reef out-of-box firmware: a shell command group for the RGB LED, keys, speaker and headset, PDM and headset microphones, microSD and the OV5640 camera; mic usb turns the board into a USB microphone, mic sdrec records WAV files to the SD card |
Reef (.config); Reef + IPRO6S FIN card (defconfig_wifi_ipro6s: Wi-Fi and an RTSP camera stream) |
UART 115200 |
ipro_reef_teach |
The Reef's Edge AI firmware: one image with three Teach tools, image (USB camera + image classifier), voice (speaker recognition) and sensor (sensor classification); the mode stored in flash picks one at boot, driven from IPRO AI Studio. Full walkthrough: IPRO AI Teach |
Reef (.config); image mode needs the OV5640 camera |
UART 115200 |
ipro_ble_remote |
GATT reference: LED, key, environment, UART, camera image and image upload services; the Reef build adds a Reef hardware service and BLE A/B OTA. Ships the Android demo app ipro_remote_demo.apk. Tutorial: Your First BLE Application |
Reef (defconfig_reef: WS2812, camera, SD card, audio and BLE A/B OTA); .config and defconfig target the IPRO7 EVB |
UART 115200 |
ipro_throughput_test |
Two-board BLE throughput test: 1M / 2M / Coded PHY, DLE, ATT MTU 247. Tutorial: BLE Throughput Test |
Two Reefs (defconfig_reef); .config targets the IPRO7 EVB |
UART 115200 |
ipro_le_audio_headset |
LE Audio unicast headset: BAP unicast server, PACS, ASCS, CAP, CSIP, VCP, with LC3 decoded to the DAC. Tutorial: Getting Started with LE Audio |
Reef (defconfig_reef: DAC output to the headset jack and speaker); .config, DAC.config and UAC.config target the IPRO7 EVB |
UART 115200 |
ipro7_uvc_cam |
USB webcam: OV5640, ISP, hardware MJPEG, USB Video Class; a second Reef configuration plays rock-paper-scissors on the NPU and draws it into the stream. Tutorial: USB Webcam and Rock-Paper-Scissors |
Reef (defconfig_reef_ov5640: webcam; defconfig_reef_rps: rock-paper-scissors); .config targets the IPRO7 EVB with an SC101IOT |
Reef: UART 115200
.config: UART 921600 |
ipro7_jpeg_decode |
Software JPEG decoding (TJpgDec) to RGB565 / RGB888, with a format probe, built-in test images and host tools; IPRO7's MJPEG block encodes only |
Reef (defconfig_reef); .config targets the IPRO7AI EVK |
UART 921600 |
ipro_ai_link |
Board firmware for IPRO AI Studio "Run on board": loads .inm models and inputs from microSD (sd:/), runs them on the NPU and prints the raw outputs; also usable by hand from the console |
Reef (defconfig_reef); .config targets the IPRO7 EVB |
UART 115200 (also on a USB CDC port) |
ipro_agora_sentino |
Sentino cloud AI voice chat: BLE provisioning, Wi-Fi through the IPRO6S FIN card, MQTT login and Agora RTC voice; needs a Sentino device triple and the AOSL core |
Reef + IPRO6S FIN card (.config, make or make BOARD=reef); BOARD=evk targets the IPRO7AI EVK (builds, not verified on a board) |
Reef: UART 115200 |
Applications for other boards
These applications have no Reef configuration and need the board listed; the names link to the source on GitHub. Contact INTELPRO for these boards.
BLE
| Application |
Purpose |
Boards and configs |
Console |
ipro_ble_transparent |
UART-to-BLE transparent bridge configured with AT commands (over USB CDC) |
Needs the IPRO7 EVB |
UART 115200 |
ipro_ble_hid_keyboard |
HID over GATT keyboard |
Needs the IPRO7 EVB |
UART 115200 |
Audio and voice
| Application |
Purpose |
Boards and configs |
Console |
ipro_pdm_mic_demo |
PDM microphone capture, DAC playback, LC3 streaming over BLE, SMP pairing, PDS31 sleep with bonded reconnect; the Android companion app's source is in tools/android/IproMicDemo/. On the Reef, use the mic commands of ipro7ai_reef_demo |
Needs the IPRO7 EVB (.config) or the IPRO7AI EVK (make BOARD=evk) |
EVB: UART 115200 EVK: UART 921600 |
| Application |
Purpose |
Boards and configs |
Console |
ipro7_demo |
Full-chip reference: PWM, SPI, I2S, LCD, audio ADC / DAC, USB device (CDC, HID, MSC, UAC, UVC), file systems, TRNG, DSP and more, each with shell commands |
Needs the IPRO7 EVB; also defconfig_boot2_nopsram, defconfig_boot2_ota, defconfig_nist_fulltest, defconfig_security_cert |
UART 115200 |
ipro7ai_evk_demo |
IPRO7AI EVK bring-up: LCD, camera, microphone, speaker and SD card; config_bt adds BLE and LE Audio |
Needs the IPRO7AI EVK |
.config: UART 921600
config_*: UART 115200 |
ipro7ai_evk_launcher |
Camera, LCD, microphone and speaker in one image, with pages switched by hand gestures recognized on the NPU |
Needs the IPRO7AI EVK |
UART 921600 |
AI and vision
| Application |
Purpose |
Boards and configs |
Console |
ipro7ai_evk_person_detect |
Camera preview on the LCD with YOLOv8 person / pet boxes from the NPU |
Needs the IPRO7AI EVK |
UART 115200 |
ipro7ai_evk_rps |
Rock-paper-scissors against an int8 CNN on the NPU, with the model and training scripts; on the Reef the same game is ipro7_uvc_cam defconfig_reef_rps |
Needs the IPRO7AI EVK |
UART 921600 |
ipro_speaker_recog |
Speaker recognition on the NPU, with the model in the mfg partition; on the Reef, speaker recognition is the voice mode of ipro_reef_teach |
Needs the IPRO7 EVB |
UART 921600 |
Networking and IPRO6S
| Application |
Purpose |
Boards and configs |
Console |
ipro7_sdio_wifi |
IPRO7 as the SDIO host with an IPRO6S as the Wi-Fi radio, providing the lwIP network interface iproeth0 and DHCP. On the Reef the same is ipro7ai_reef_demo defconfig_wifi_ipro6s |
Needs the IPRO7 EVB and an IPRO6S |
UART 115200 |
ipro6_demo |
IPRO6S Wi-Fi 6 station / soft-AP with a shell; defconfig_ipro6_lpwifi adds DTIM power save, defconfig_ipro6_lp is the low-power demo |
Needs the IPRO6S EVK (see IPRO6S) |
UART 115200 |
ipro6_if_wifi |
IPRO6S Wi-Fi 6 bridge to a host over SDIO (defconfig_ipro6_sdio, also the Reef FIN card's firmware) or USB (defconfig_ipro6_usb) |
IPRO6S EVK; FIN card (defconfig_ipro6_sdio, flashed with --chipname ipro6, see IPRO6S) |
UART 115200 |
ipro6_fmac |
FullMAC firmware for a Linux cfg80211 host (defconfig_ipro6_fmac) and its flash loader (defconfig_ipro6_fmac_loader); the Linux driver is not part of the SDK |
Needs the IPRO6S EVK |
UART 115200 |
IPRO6S applications are flashed with --chipname ipro6; building and configuration are on the IPRO6S page.
Test and bring-up programs
| Application |
Purpose |
Boards and configs |
Console |
ipro_unit_test |
Unit tests for the HAL and the shared components; ends with ALL TESTS PASSED or SOME TESTS FAILED |
Needs the IPRO7 EVB |
UART 115200 |
ipro_ai_bench |
Whole-model inference time on the NPU versus the CPU |
Needs the IPRO7 EVB |
UART 115200 |
ipro_npu_yolo |
YOLOv8 person / pet detection on the NPU |
Needs the IPRO7 EVB |
UART 115200 |
ipro_tflm_test |
TensorFlow Lite Micro model benchmark with NMSIS-NN kernels |
Needs the IPRO7 EVB |
UART 115200 |
ipro_tflm_yolo |
YOLOv8 on the CPU with TensorFlow Lite Micro |
Needs the IPRO7 EVB |
UART 115200 |
ipro_nmsis_nn_test |
NMSIS-NN operator tests |
Needs the IPRO7 EVB |
UART 115200 |
ipro_tinymaix_demo |
TinyMaix INT8 MNIST inference (nn_info, nn_run, nn_benchmark) |
Needs the IPRO7 EVB |
UART 115200 |
ipro_gh7007_test |
GH7007 5-inch SPI LCD bring-up |
Needs the IPRO7 EVB |
USB CDC |
ipro_gh7007_video |
Plays videos from the SD card on the GH7007 panel |
Needs the IPRO7 EVB |
USB CDC |
ipro_epd_test |
GDEY0213F52 2.13-inch e-paper bring-up |
Needs the IPRO7 EVB |
UART 115200 |
ipro_epd_el036 |
EL036MF1 e-paper bring-up |
Needs the IPRO7 EVB |
UART 921600 |
kw307_radar_test |
KW307 24 GHz radar module over UART |
Needs the IPRO7AI EVK |
UART 115200 |
mpu6500_test |
MPU-6500 IMU over I2C (mpu_init, mpu_read, mpu_stream) |
Needs the IPRO7 EVB |
UART 115200 |
ipro_enc28j60_test |
ENC28J60 SPI Ethernet bring-up, sending and receiving raw frames |
Needs the IPRO7 Arduino board |
USB CDC |
ipro_pio_sdh_test |
File-system test with a software (PIO) SD host and the hardware SDH mounted at the same time |
Needs the IPRO7 EVB |
USB CDC |
ipro_sdio_probe |
Basic SDIO host test |
Needs the IPRO7 EVB |
UART 115200 |
ipro_atbm_probe |
Bring-up probe for an ATBM6162 SDIO Wi-Fi module |
Needs the IPRO7 EVB |
UART 115200 |
ipro_lp_test |
PDS31 entry and exit with RTC wake-up (lp commands) |
Needs the IPRO7 EVB |
UART 115200 |
Next steps