The idea behind it - is to creatre unified space where you can build and start your own projects targeting Computer Vision and AI on the edge
Current version supports 3 customized boards, each board has well known predecessor
Boards schematics and pcb's can be found Here
Having this boards schematics you can easily figure out and adopt examples found here to your own hardware
For a fresh start
- Clone this repo
git submodule init --updatewest init -l u5west update
cd modules/hal/stm32/git apply ../../../stm32hal.patch
- u5/uvc_gf_dk1/ - Simple one that utilizes UVC USB class to given board into a USB camera; only works for grinreflex_dk1 board (referred as grinreflex in boards/vendor)
- u5/gf_dkx/ - unified application, can be used for all boards (so far), has two targets - face detection, and face + smile detection using opencv
- u5/gf_n6_dk3/ - example video streaming application, available only for grinreflex_n6_dk3 board; requires sysbuild, see instructions for grinreflex_n6_dk3 board
- u5/gf_n6_npu/ - example application + stm32n6 npu targeting grinreflex_n6_dk3 board, contains face detection model (yolov2); requires sysbuild, see instructions for grinreflex_n6_dk3 board
- u5/gf_n6_yolov8/ - same as above (almost) + yolov8 face detection model; requires sysbuild, see instructions for grinreflex_n6_dk3 board
- u5/gf_n6_fl/ - same as gf_n6_yolov8/ + face landmarks model, doesn't work quite well; requires sysbuild, see instructions for grinreflex_n6_dk3 board
- grinreflex_dk1 (referred as grinreflex in boards/vendor) - uses schematic from HW repo stm32u5_v1.0
- Extrnal flash
- USB
- OV2640 compatible camera
- LCD serial display
- A few GPIOS
- ...
- grinreflex_dk2 - counterpart of stm32u5_v2.0 in HW repo
- Simplified version of v1.0, unfortunatelly I put there MCU that seems to went out of stock
- All hardware fetures from V1.0, except - there is no external flash and USB
- grinreflex_n6_dk3 - most complicated so far, uses stm32n6_v1.0 schematic in HW
- Hw Features
- LCD serial display
- OV2640 compatible camera
- Eternal flash
- External vddcore regulator
- Boot switch
- GPIO extension connector
- Build variants (Just provide this option after -board to west command)
- grinreflex_n6_dk3//app - XIP application, requires --sysbuild option, loaded by fsbl
- grinreflex_n6_dk3//fsbl_app - application that is a part of fsbl
- grinreflex_n6_dk3//fsbl - fsbl, usually required when you specify --sysbuild, that builds mcuboot
- Example: build XIP application
west build -b grinreflex_n6_dk3//app --sysbuild u5/gf_n6_dk3/
That board pretty much derived from Nucleo, so you can use their tutorial to obtain information on how to build/run/debug
- Hw Features
- Model directory - contains CNN models used in some applications, due to it's structure - builds all models those configs are set to "=y" (please see config options below) Feel free to inspect this folder to get better understanding
- west flash-weights <path to weights .hex> - use this to flash CNN mnodel weights directly; note: if you have more than one model enabled, you need to flash them one by one, address mapping is done already during build
- CONFIG_OPENCV_LIB - if y, adds OpenCv library, please see
u5/lib/cv/CMakeLists.txtto see which modules are actually built - CONFIG_TFLITE_LIB - if y, adds TfLite framework, the performance remains poor as no optimizations are done yet
- CONFIG_QUIRC_LIB - say y to Add this
- CONFIG_NEMA - enables NEMA or stm32's GPU2.5, no modifications required to lvgl (Yes, that works only as a part of lvgl so far), that sometimes significantly speeds up graphic manipulations Not available/tested on stm32n6
- CONFIG_STM32_JPEG - pretty much rough stm32's jpeg driver, tested only on u5 family so far
- CONFIG_YOLOV8_OBJ_DET - used only for stm32n6 series, adds yolov8 object (face) detection model
- CONFIG_FACE_LANDMARK - used only for stm32n6 series, adds face landmarks detection model