Releases: openmv/openmv
Releases · openmv/openmv
Development Release
🪄 Image
- imlib: Add offset to embedded header and fix alignment.
-
- fmath: Fix strict-aliasing violation in fast_expf.
📚 Libraries
-
- alif: Update Alif DFP to 1.3.4.
💾 Drivers
-
- sensors: Add bad pixel correction for PAG7936.
🧱 Modules
-
- py_unittest: More unit tests.
- modules: Add unit tests module.
⚙️ Boards
- boards: Define USB IDs.
🪛 Misc Fixes:
- build(deps): bump actions/cache from 4.3.0 to 5.0.0
v4.8.0
🪄 Image
- imlib: Rework frame buffer management.
🧬 Common
- file_utils: Fix file utils.
- file_utils: Check fp in all public functions.
- common: Update crc code.
- mutex: Return true, if unlocked.
- mutex: Clear tid when releasing mutex
- common: Add CRC HAL with hardware acceleration support.
- profiler: Add get_size function.
- usbdbg: Flush data from unsupported commands.
- common: Add code profiler.
- common: Refactor TinyUSB debug interface implementation.
- csi: Refactor resolution table.
- csi: Add post process op.
- csi: Add support for custom resolutions.
- vospi: Fix synchronization issues.
- vospi: make vospi_restart() non-blocking.
- mutex: Use C11 atomic operations.
- csi: Add function to print sensor name.
- common: Remove unused ringbuf.
- csi: Decouple the clock from main CSI state.
- csi: Add csi shutdown op.
- omv_csi: Fix all sensors working on all boards.
- common: Remove xalloc.
- csi: Refactor I2C scanning code.
📚 Libraries
- stai: Fix STAI NPU memory allocation.
- micropython: Update submodule.
- micropython: Update submodule.
- ml: Refactor postprocessing module into vendor-specific subpackages.
- lib: Poll events during inference.
- micropython: Update submodule.
- imlib: Fix raw stream buffer size check.
- imlib: Remove test loop.
- imlib: Use framebuffer_t for main and streaming buffers.
- cmsis: Fix cmsis compile time constant folding.
- lib: Update to MicroPython 1.26.0.
- alif: Fix Mac M4 USB enumeration.
- imlib: New SIMD ops for ML acceleration
- micropython: Update submodule.
- imlib: Fix draw line glitch.
- micropython: Update submodule.
- imlib: Fix update_jpeg_buffer to update from the passed image.
- micropython: Update RT1062 USB ID and buffers.
- micropython: Update submodule.
- imlib: Remove unused functions.
- lib: Add STAI library and ML backend.
🤖 Sensors
- sensors: Add support for PixArt PS5520.
💾 Drivers
- boson: Use timespec struct from header.
- sensors: Add aux flag to genx320 driver.
- sensors: Update to using post_process callback.
- sensors: Add RAW event output mode for the genx320.
- sensors: Optimize Lepton delays.
- sensors: Remove OV5640 REV_Y special case.
- drivers: Fix snapshot loop.
- lepton: Update lepton driver with asynchronous fb.
- sensors: Update new sensors to use the csi pointer.
🧱 Modules
- py_helper: Fix image allocation on file load.
- py_helper: Release the buffer used in set_to_framebuffer.
- py_imageio: Fix stream file mode.
- modules: Fix code formatting.
- py_image: Accelerate to_ndarray() with Helium.
- py_csi_ng: Support custom frame size.
- py_csi_ng: Fix printed slave address.
- py_fir_lepton: Remove lepton control through fir module.
- py_spi_display: Add vflip/hmirror support.
- py_helper: Fix error arg_to_image error message typo.
- py_display: Pass DT to display controller initializer.
🐍 Micropython
- micropython: Update submodule
- micropython: Update submodule.
- micropython: Update submodule.
- micropython: Update submodule.
- micropython: Update submodule.
- micropython: Update submodule.
🧪 Ports
- alif: Improve PAG7936 Image Quality.
- ports: Enable gamma correction.
- stm32: Remove unused MPU_REGION_NUMBER_MAX.
- ports: Add QEMU port.
- stm32: Add ADC12 RIF config.
- alif: Use direct CRC calculation for unaligned bytes
- alif: Fix and enable Alif HW CRC32.
- alif: Poll events in spi_transfer.
- stm32: Revert N6 slow-peripheral IC clock source.
- stm32: Fix STM32 DCMI Driver
- stm32: Fix SystemClock_config() hard faulting.
- mimxrt: Enable full DMA offload for RT1062.
- stm32: Fix N6 DMA security config.
- ports: Add GPU matrix support.
- stm32: Use HAL_InitTick to init SysTick.
- mimxrt: Fix omv module UID function.
- stm: Re-enable frame interrupt in JPEG mode.
- all: Switch to gnu11 standard.
- stm32: Remove old buzzer module.
- stm32: Fix typo in stm32_pwm.
- stm32: Support DCMI and DCMIPP.
- stm32: Remove UVC firmware.
- stm32: Refactor CSI ISP code.
- all: Refactor CSI port init.
- stm32: Fix PSRAM settings.
- all: Dual CSI support.
- stm32: Fully implement N6 GPU driver for draw_image.
- stm32: Reset pipes states on abort.
- all: Refactor CSI drivers.
- stm32: Fix N6 support.
- stm32: Add N6 support.
- alif: Implement spi_transfer with poll and timeout.
- ports: Add conditional compilation for py_fir_init0()
- stm32: Make dma handle static.
- stm32: Add DSI PLL config.
⚙️ Boards
- OPENMV_N6: Enable depth palette on N6.
- OPENMV4P: Enable BOSON on H7 Plus.
- OPENMV2: Fix QVGA RGB565 support.
- boards: Add fixed sensor polarity configs.
- OPENMV_N6: Enable SPI LCD/TV Displays.
📜 Scripts
- libraries: Add facial landmarks post-processing.
- unittests: Add crc test.
- examples: Add YOLOV8 person detector script.
- libraries: Fix postprocess arg default.
- examples: Add yolov2 and yolov5 template examples.
- examples: Fix blazeface and fomo examples.
- examples: Add YOLO LC person tracking example.
- libraries: Add palm detector post-processing support.
- ml: Split ml module into components.
- examples: Add BlazeFace detection example.
- libraries: Post-processing speedup.
- examples: Add framerate control to genx320 examples.
- libraries: Add support for the SSD1351 OLED display.
🛠 Tools
- tools: Fix uncrustify union variable formatting
- mkromfs: Update romfs build.
- mkromfs.py: Fix exception formatting
🪛 Misc Fixes:
- build(deps): bump actions/checkout from 5 to 6
- misc: USB fixes.
- build(deps): bump actions/upload-artifact from 4 to 5
- build(deps): bump actions/download-artifact from 5 to 6
- misc: clean up mp_obj_get_float.
- build(deps): bump softprops/action-gh-release from 2.3.3 to 2.4.1
- fs: Replace FatFS direct calls with MicroPython VFS abstraction
- build(deps): bump actions/cache from 4.2.0 to 4.3.0
- misc: Fix formatting.
- misc: Fix makefiles.
- Makefile: Fix jlink target.
- boot: Add version header.
- misc: Update code formatter.
- build(deps): bump actions/setup-python from 5 to 6
- stm32: Disable clock gating during sleep for STM32N6 peripherals
- build(deps): bump softprops/action-gh-release from 2.2.2 to 2.3.3
- mutex: Clear tid when releasing mutex"
- Makefile: Suppress J-Link GDB server output
- Makefile: Integrate GDB debugging into jlink target
- imlib: Add an embedded frame header in the streaming buffer.
- build(deps): bump actions/download-artifact from 4 to 5
- build(deps): bump actions/checkout from 4 to 5
- OPENMV_N6: Enable triple buffering for the N6.
- tflm: Remove out of date tf documentation.
- misc: Add common alignment macros.
- docker: Fix Make download.
- stm32: Refactor DMA code.
- misc: Update GCC toolchain.
- misc: Refactor CSI initialization code.
- misc: Refactor CSI I2C bus.
- stm32: Add ram function section.
- stm32: Fix XSPI mmap instruction width.
v4.7.0
⚠️ Breaking Changes
- misc: romfs support: Models and other assets are now stored in
/rom/.
🪄 Image
- imlib: Refactor framebuffer API to accept a context.
🧬 Common
- omv_csi: Add update AGC/AEC ioctl.
📚 Libraries
- models: Move models.
- tinyusb: Update submodule.
🤖 Sensors
- pag7936: Set CSI phy bitrate.
- boson: Restore FLIR BOSON Factory defaults on reset.
- boson: Try to initialize the FLIR BOSON in a loop.
- genx320: Update ISSD sequence to increase frame rate.
- GenX320: Adding IOCTL to control Anti-Flicker filter (AFK).
💾 Drivers
- softcsi: Support hmirror, vflip and transpose.
- softcsi: Add virtual image sensor for testing.
- drivers: Move GenX EHC back to boardconfig.h.
- cyw4343: Fix BT firmware file.
- drivers: Add VL53L8CX driver.
- vl53l5cx: Add shutdown function and fix deinit.
🧱 Modules
- py_imu: Fix I2C mode.
- py_fir_lepton: Remove unused pins.
- modules: Replace uint with size_t.
🐍 Micropython
- micropython: Update submodule.
- micropython: Update submodule.
- micropython: Update submodule.
🧪 Ports
- stm32: Fix missing SSL sign alt flag/build option.
- mimxrt: Fix unitialized edma_config fb pointer.
- alif: Remove old event poll macro.
- alif: Change HP U55 config to SRAM_OPSI.
- stm32: Update ULPI code.
- stm32: assert i2c not SPEED_FAST if not supported
- alif: Disable LEDs on soft-reboot.
- alif: Generate padded ToC.
- alif: Add Alif port.
- stm32: Add .ram_function section.
⚙️ Boards
- ARDUINO_GIGA: Remove obsolete defines.
- OPENMV_AE3: Update ROMFS size.
- OPENMV2: Fix flash size.
- OPENMV_AE3: Switch to VL53L8CX.
- OPENMV_AE3: Fix romfs partitions numbers.
- all: Add TIM clock sleep enable macro.
📜 Scripts
- examples: Fix Haar Cascade Paths.
- libraries: Add support for more yolo post-processing.
- libraries: Clean remote core output.
🛠 Tools
- tools: Add STEdge AI tools download.
- st: Add missing libraries.
- alif: Update submodule.
- tools: Update alif tools.
- alif: Fix config file formatting.
- alif: Update SE tools to release 104.
- alif: Update tools to 1.103.001.
- st: Add cubeprog.
- tools: Add recovery partition key generator.
🥾 Bootloader
- stm32: Fix build dependencies order.
🪛 Misc Fixes:
- Makefile: Fix JLink command.
- boot: Add DFU partition delay setting.
- example: Fix set_auto_gain param.
- example: Change lepton max_temp.
- example: Fix examples.
- msic: Update README.md
- misc: Refactor repo.
- i2c: disable fastmode at compile
- csi: remove enum to support preprocessor directives
- csi: Don't fail if sleep is not implemented.
- docker: Fix output files permissions.
- docker: Fix build.
- alif: Disable swap for alternate flashes.
- build(deps): bump cryptography from 44.0.0 to 44.0.1 in /.github/workflows
- misc: Add jlink target.
- psee_ehc_activate_override: use the correct accumulation time
- build(deps): bump tj-actions/changed-files from 45 to 46
- misc: Update workflows
- stm32n6: Add STM32N6 HAL.
- misc: Filter gnu11 standard from CFLAGS.
v4.6.20
🪄 Image
- draw: Fix fb_alloc aligned size.
🤖 Sensors
- GenX320: Adding ioctl for setting individual biases.
🧱 Modules
- modules: Add missing sensor IDs.
🐍 Micropython
- micropython: Move submodule to lib.
🧪 Ports
- stm32: Move CLUT to DMA memory section.
📜 Scripts
- examples: Fix IMXRT deepsleep and stop examples.
🛠 Tools
- rpc: Remove the desktop RPC library.
- alif: Update tools.
🪛 Misc Fixes:
- build(deps): bump thollander/actions-comment-pull-request from 2 to 3
- misc: Fix files still referencing old micropython location.
v4.6.0
⚠️ Breaking Changes
- scripts: Remove obsolete u-prefix from imports.
🪄 Image
-
- imlib: xalloc image to be cache aligned.
-
- draw: Simplify GPU source rect calculation.
-
- draw: Enable GPU in-place cut-through.
-
- draw: Fixed transpose on SDRAM-less boards.
- imlib: Update draw_image alpha to 0-255 from 0-256.
-
- bayer: Fix debayer bound predication.
-
- draw: Optimize set_pixel_aa.
🧬 HAL
-
- stm32: Clean up system file.
📚 Libraries
-
- models: Add YOLOv2 model.
-
- tflm: Rename YoLoV5 Nano model.
-
- tflm: Add YoloV5 model for testing.
-
- tflm: Add extra padding to arena size.
-
- apps: Allow passing gain to audio init.
-
- tflm: Update submodule.
🤖 Sensors
-
- GenX320: Add IOCTL for biases settings.
-
- genx320: Round frequency calc.
-
- pag7936: Add missing control functions.
-
- genx320: Enable histogram mode.
-
- pag7936: Add support for MIPI mode.
-
- pag7936: Enable lens shading correction.
-
- mt9v0xx: Fix bayer output.
-
- ov5640: Fix PCLK calculation for setting correct exposure time.
- sensors: Add PAG7936 sensor driver.
- sensors: Add genx320 driver.
💾 Drivers
-
- nema: Update license file.
-
- vl53l5cx: Add support for power pin.
-
- lsm6dsm: Add LSM6DSM driver.
- drivers: ToF updates and fixes.
🧱 Modules
- modules: Fix bool args.
-
- py_ml: Clean up fb_alloc path.
-
- py_ml: Align model data allocated on GC.
-
- omv: Fix USB debug mode function.
-
- omv: Move debug mode flag to omv module.
-
- ulab: Update ULAB to version 6.6.1.
- modules: Remove ST header.
- modules: Move IMU to generic modules.
- modules: Add RGB stats ioctl.
🐍 Micropython
- micropython: Update submodule.
- micropython: Update submodule.
- micropython: Switch to openmv-1.24.0 branch.
- micropython: Update submodule.
- micropython: Update to MicroPython 1.24.
- micropython: Update documentation for v4.5.9.
🧪 Ports
-
- all: Fix MISO/MOSI pins being used in TX/RX only mode.
-
- stm32: Update GPU driver.
-
- stm32: Fix MDMA initialization.
-
- omv_gpu: Fix cache line clean size.
-
- nema: Include missing irq header.
-
- stm32: Add support for Nema GPUs.
-
- stm32: Disable btree by default.
-
- nrf: Update board config options.
-
- stm32: Fix float conversion warning.
-
- stm32: Make usage of MDMA for jpeg compression conditional.
-
- stm32: Fix DMA base calculation for F4/F7/H7.
-
- stm32: Update SPI driver.
-
- stm32: Misc updates.
-
- rp2: Fix firmware.
-
- stm32: Misc updates.
-
- stm32: Check if FFS region is defined.
-
- stm32: Rename old STM32 files.
⚙️ Boards
-
- ARDUINO_PORTENTA_H7: Move ETH DMA buffers into SRAM3.
- boards: Fix DRAM address for boards with swapped banks.
-
- RPI_PICO: Fix build.
- boards: Remove pro board.
📜 Scripts
-
- libraries: Simplify YOLO post-processing using keepdims.
-
- libraries: Add yolo v5 post processing support.
-
- examples: Update image classification example.
-
- examples: Fix new refactored IOCTL names.
-
- libraries: Revert fully vectorize and cleanup yolo_v2.
-
- libraries: Fully vectorize and cleanup yolo_v2 post-processing.
- scripts: Add yolov2 post-processor.
-
- libraries: Update boot script.
-
- ibraries: Update ml.
-
- examples: Move microspeech example.
- scripts: Update examples.
- scripts: Remove obsolete u-prefix from imports.
🛠 Tools
-
- alif: Update device rev.
-
- alif: Update tools to release 1.101.0.
-
- alif: Update device config.
-
- alif: Update tools.
-
- alif: Update default part.
-
- tflite2c: Fix Vela model summary.
🥾 Bootloader
- bootloader: Add special flash recovery partition.
- bootloader: Support forced mode.
-
- stm32: Misc fixes.
-
- stm32: Add support XSPI MMAP in DTR mode.
-
- stm32: Update XSPI driver.
-
- stm32: Enable XSPI clocks in low-power.
-
- stm32: Remove hard-coded prescaler.
- bootloader: Fix stm32 cache disable.
- bootloader: Add separate XIP partitions.
- bootloader: Fix XN bit for first partition.
- bootloader: Set first partition's region as executable.
- bootloader: Misc fixes and updates.
- bootloader: Fix string descriptor index.
- bootloader: Misc fixes.
- bootloader: Clean up files.
- bootloader: Add boot partition.
- bootloader: Add common flash interface.
- bootloader: Misc fixes.
- bootloader: Add new TinyUSB-based DFU bootloader.
🪛 Misc Fixes:
- misc: Update get_state() to work with a variable packet size.
- misc: Include CMSIS header in pendsv.
- misc: Move networking variables to board/port Makefiles.
-
- py_ml: Round-up dynamic alloc size.
- build(deps): bump actions/cache from 4.1.2 to 4.2.0
- misc: Remove CLA workflow.
- misc: Add CLA workflow.
-
- boson: Add initial support for the FLIR Boson.
- boot: Fix m4 and m7 dfu bootloader.
-
- vospi: Set vospi bus CPOL=1 and CPHA=1.
- misc: Add CSI2 hardware flag.
- misc: Move CSI state to csi struct.
- misc: Fix typo.
- misc: Ml build cleanup.
- py_image: Fix corruption using to_ndarray() on grayscale images.
- build(deps): bump actions/cache from 4.0.2 to 4.1.2
- misc: Add common filesystem boot script.
- misc: Limit IDE FPS to 20Hz.
- misc: Fix dropped character in debug text.
- misc: Clean up old stm32 files.
- misc: Clean up board Make flags.
- misc: Refactor Makefile variables, and misc bootloader fixes.
- misc: Schedule TinyUSB task in VM node.
- py_image: Add new depth palette.
- misc: refactor sensor drivers.
- misc: Update licenses.
- misc: Add a flag to ioctls to abort streaming.
-
- common: Support overriding the resolution table.
v4.5.9
⚠️ Breaking Changes
- apriltag: Disable unused TAG families by default.
🪄 Image
- apriltag: Switch to libm's sin/cos.
- imlib: Optimize debayering with Helium.
- imlib: Fix automatic vbuffer count.
- imlib: Add support for sending raw preview frames.
- jpeg: Minor clean-up.
- imlib: Fix framebuffer_get_buffer_size().
📚 Libraries
- tflm: Use GC's free memory for the temporary tensor arena.
💾 Drivers
- dave2d: Add license file.
- dave2d: Fix video memory bug.
- dave2d: Remove license for now.
- dave2d: Add D/AVE 2D GPU driver.
🧱 Modules
- modules: Use the default optimization level for all user C modules.
- py_image: Fix implicit float conversion.
🧪 Ports
- stm32: Fix CM4 boot memory.
- stm32: Move stm32-specific bootloader and uvc to port dir.
- all: Refactor sensor flags.
- all: support for building specific imlib files with clang.
⚙️ Boards
- OPENMV4P: Set HW crop flag.
- OPENMV_RT1060: Add support for RAW streaming.
📜 Scripts
- examples: Add back windowing to example.
🛠 Tools
- Update converters.
- Clean up tools.
- Add Alif tools.
- uncrustify: Fix compound literal return indentation.
- tflite2c: Add default optimization for user models.
- tflite2c: Set Vela optimization per model.
- pyopenmv: Misc fixes, updates and benchmark mode.
🪛 Misc Fixes:
- Move Haar cascades.
- build(deps): bump tj-actions/changed-files from 44 to 45
- docker: Update docker build.
- Add gitattributes.
- misc: USB debug fixes.
- sensor: Add raw sensor flag.
- linker: Update linker script variables.
- common: Add profiling macros.
- usbdbg: Optimzie CDC buffers copy.
- common: Change linker variable to uint32.
v4.5.8
🧱 Modules
- py_ml: Add uint16 support to match ndarrays.
🐍 Micropython
- micropython: Update submodule.
📜 Scripts
- libraries: Add missing return in microspeech.listen().
v4.5.7
🪄 Image
- draw: Refactor draw_image to support gpu offload.
- jpegd: Fix for JPEG decoder boundary problem.
📚 Libraries
- tflm: Update submodule.
- tflm: Fix Makefile rules to generate files once.
- tflm: Remove Vela models (now generated on the fly).
🧱 Modules
- py_image: Update all lineops to use the draw_image backend.
- py_ml: print model address location too.
- py_sensor: Add missing PAG7920 enum.
🐍 Micropython
- micropython: Update submodule.
🧪 Ports
- stm32: Fix MPU region protection bug.
📜 Scripts
- libraries: Update rpc_spi_master to use the machine module.
🛠 Tools
- tflite2c: Support converting Vela models on the fly.
🪛 Misc Fixes:
- common: Add GPU memory section to common ld.
- github: Post firmware stats after PRs.
- README: Create toolchain parent directory.
- README: Update builld instructions.
- common: Reserve JPEG buffer only if defined.
- common: Add nosys stubs.
- misc: Update GCC toolchain installation instructions.
v4.5.6
🪄 Image
- draw: Add missing speculative read invalidates.
- draw: Add AA support for draw_circle.
🤖 Sensors
- hm0360: Enable HM0360 to work on GIGA.
💾 Drivers
- cyw43: Add firmware W4343WA1_45_98_102.
🧱 Modules
- py_ml: Switch to upstream TFLM and refactor all TensorFlow modules.
- py_ml: Add generic CNN processing support.
- py_ml: Make predict output a numpy array.
- py_ml: Fully vectorize all input and output scaling/datatypes.
- py_ml: Fix the size of the input bytearray.
- py_ml: Add support for multi-input models.
- py_image: Update morph() to use arg parse.
- py_image: Change scale argument to (min,max) range.
- py_image: Add buffer length sanity check.
- py_image: Add Image as a type instead of function.
- py_image: Add support for turning lists/tuples into Images.
- py_image: Refactor get_similarity() to use draw_image backend.
🐍 Micropython
- micropython: Update to Micropython v1.23.0.
🧪 Ports
- All: Add support for additional GC blocks.
- All: Root pointer fixes.
- All: Add common linker script.
- All: Fix DMA memory alignment.
- All: Fix accidental CPU cache invalidation.
- All: Add efficient GET_STATE debug command.
- mimxrt: Fix I2C for the MLX90640 driver.
- stm32: Add mic gain support to py_audio when using DFSDM.
⚙️ Boards
- ARDUINO_GIGA: Enable HIMAX sensors.
📜 Scripts
- examples: Add Open-AMP example.
- libraries: Update normalization to handle 3D/4D image tensors.
- examples: Add regression example.
- libraries: Moved nms class to ml/utils.
- libraries: Fix Normalization image format.
- libraries: Move nms to python.
🛠 Tools
- tflite2c: Fix model alignment.
🪛 Misc Fixes:
- misc: Add back original licenses.
- misc: Change to SoftI2c for RT.
- misc: Export common environment variables from top Makefile.
- misc: Tinyusb debug updates.
- misc: Fix malloc heap memory typo.
- docs: fix misspelling of tensorflow
v4.5.5
🪄 Image
- pool: Remove obsolete pooling functions.
- binary: Fix erode mask check.
- imlib: Invalidate vbuffers before returning them.
- draw: Cleanup drawline code.
- imlib: Change ARM_MATH_CM4/CM7 to DSP.
🧱 Modules
- py_image: Move ksize to be pos_arg.
- py_image: Fix morph spelling.
- py_image: Update py_image_to with mp_arg_parse_all.
🧪 Ports
- mimxrt: Retry transfer if the DMA is still busy.
- stm32: Reset vbuffer state when dropping frames.
🪛 Misc Fixes:
- misc: Increase delay after reset/power-down.