Commit Graph

125 Commits

Author SHA1 Message Date
Kwabena W. Agyeman
30da5a062f lib/stai: Fix STAI NPU memory allocation.
The ST Neural ART code generator marks the HyperRAM mpool as cacheable
(CACHEABLE_ON), which causes the NPU stream engines to issue cacheable
accesses. However, the N6 memory subsystem does not support cacheable
accesses to internal memories, only external ones. Because of this,
relocating the HyperRAM region to internal memory results in invalid
access behavior: only base addresses are updated during relocation, not
the cacheable attributes.

In short, buffers generated for HyperRAM must remain in external memory.
Marking HyperRAM as non-cacheable is a possible workaround, but may
reduce performance if buffers are placed in AXI RAM instead.

Forcing the ext_ram_sz allocation to 1MB ensures that the ext_ram_sz
is allocated in SDRAM.
2025-11-01 18:28:22 -07:00
Ibrahim Abdelkader
3eaf280ee2
Merge pull request #2875 from kwagyeman/kwabena/add_yolo_v8_example
scripts/examples: Add YOLOV8 person detector script.
2025-10-29 21:50:37 +03:00
iabdalkader
6bf3063a71 scripts/unittest: Fix line_segments.
Signed-off-by: iabdalkader <i.abdalkader@gmail.com>
2025-10-27 23:15:00 +01:00
iabdalkader
59bfecb2d7 lib/imlib: Use IMLIB_PI instead of M_PI.
Can be defined as double if needed.

Signed-off-by: iabdalkader <i.abdalkader@gmail.com>
2025-10-27 19:06:55 +01:00
Kwabena W. Agyeman
a3931e04b6 boards: Add YOLOV8 person detector. 2025-10-24 20:35:10 -07:00
Kwabena W. Agyeman
d2d1a9448f boards: Remove outdated YOLOV2 and YOLOV5 networks. 2025-10-19 15:58:23 +04:00
Kwabena W. Agyeman
30f499ea2d boards: Add YOLO LC model. 2025-10-18 21:27:14 -07:00
Kwabena W. Agyeman
8890c80e3d boards: Add hand landmark model. 2025-10-18 10:17:56 -07:00
Kwabena W. Agyeman
7c3f3d58c8 boards: Add palm detection model. 2025-10-16 04:13:24 -07:00
iabdalkader
c7e0056a45 lib/micropython: Update submodule.
Update qemu port.

Signed-off-by: iabdalkader <i.abdalkader@gmail.com>
2025-10-15 17:12:53 +02:00
Andrew Leech
5e9bc80a2e lib/imlib: Replace FatFS calls with VFS abstraction.
Signed-off-by: Andrew Leech <andrew.leech@planetinnovation.com.au>
2025-10-14 12:16:16 +11:00
iabdalkader
7641348319 lib/micropython: Update submodule.
- Switch N6 to object REPR_C.

Signed-off-by: iabdalkader <i.abdalkader@gmail.com>
2025-10-10 08:48:16 +02:00
iabdalkader
b99a45a2a1 lib/stai: Poll events during inference.
Ensures pending events get serviced more often.

Signed-off-by: iabdalkader <i.abdalkader@gmail.com>
2025-10-02 18:10:35 +02:00
iabdalkader
518d946d2f lib/micropython: Update submodule.
- py/scheduler: Allow selective handling in mp_handle_pending.
- stm32/usbd_hid_interface: Add runtime header.

Signed-off-by: iabdalkader <i.abdalkader@gmail.com>
2025-10-02 18:10:35 +02:00
iabdalkader
8b15aa9119 lib/micropython: Update submodule.
- stm32/adc: Get ADC working on STM32N6 MCUs.
- alif/machine_spi: Fix init() to only change requested settings.
- alif/boards/OPENMV_AE3: Fix switch name to match OpenMV RT1062 and N6.
- stm32/boards/OPENMV_N6: Define all OpenMV N6 pins.
- stm32/boards: Add PG13 AF7 (USART3_RTS) to N6 AF file.
- stm32/boards/OPENMV_N6: Define RTS pin for UART3.

Signed-off-by: iabdalkader <i.abdalkader@gmail.com>
2025-10-01 09:29:16 +02:00
iabdalkader
f8e110ca91 misc: Format code.
Signed-off-by: iabdalkader <i.abdalkader@gmail.com>
2025-09-28 19:45:07 +02:00
iabdalkader
552f4ada8e lib/imlib: Fix raw stream buffer size check.
Check frame dimensions as well as total image size
top scale the image if needed.

Signed-off-by: iabdalkader <i.abdalkader@gmail.com>
2025-09-21 16:41:34 +02:00
Kwabena W. Agyeman
f6f39f924b lib/models: Add blazeface model. 2025-09-18 13:41:56 -07:00
Kwabena W. Agyeman
14d277c95b lib/stai: Add multi-tensor input/output support.
The name of the buffer being NULL defines the end of the buffer list.
2025-09-18 13:30:14 -07:00
iabdalkader
f994fe1d06 micropython: Update submodule
- Revert "stm32/uart: Enable UART clock in low power modes."
- stm32/uart: Enable UART FIFO for STM32N6.

Signed-off-by: iabdalkader <i.abdalkader@gmail.com>
2025-09-16 18:26:34 +02:00
iabdalkader
1dd9b33acc ports/alif: Implement hardware accelerated CRC.
Signed-off-by: iabdalkader <i.abdalkader@gmail.com>
2025-09-11 22:08:58 +02:00
iabdalkader
1308129fdb lib/imlib: Enable raw streaming control at runtime.
Not for use with USBDBG.

Signed-off-by: iabdalkader <i.abdalkader@gmail.com>
2025-09-11 21:43:16 +02:00
iabdalkader
22981bdb61 lib/imlib: Add an embedded frame header in the streaming buffer.
Embed framebuffer header before frame data in streaming protocol to
enable protocol channels to read header+data from contiguous memory
with zero-copy operations. Header contains width, height, pixformat
and compressed size.

Signed-off-by: iabdalkader <i.abdalkader@gmail.com>
2025-09-11 18:09:24 +02:00
iabdalkader
f177d221e9 lib/imlib: Remove test loop.
Signed-off-by: iabdalkader <i.abdalkader@gmail.com>
2025-09-02 18:54:38 +02:00
iabdalkader
d05d5f1d3c lib/imlib: Use framebuffer_t for main and streaming buffers.
Removes separate jpegbuffer_t and consolidates streaming/preview
functionality into the main framebuffer_t structure.

Main changes:
- Remove jpegbuffer_t structure and global jpegbuffer variable
- Add streaming fields (enabled, quality, lock, raw_w, raw_h) to framebuffer_t
- Replace framebuffer_update_jpeg_buffer() with framebuffer_update_preview()

API improvements:
- Rename framebuffer_init_image() -> framebuffer_to_image()
- Rename framebuffer_init_from_image() -> framebuffer_from_image()
- Add framebuffer_set_enabled() and framebuffer_set_preview() utilities
- Remove accessor macros, use direct field access (kept framebuffer_get_buffer_size)
- Update framebuffer_init() to accept enabled parameter
- Add configurable raw preview dimensions per framebuffer

Signed-off-by: iabdalkader <i.abdalkader@gmail.com>
2025-09-02 15:52:17 +02:00
iabdalkader
4c2c59d0e5 lib/imlib: Remove old framebuffer macros.
Signed-off-by: iabdalkader <i.abdalkader@gmail.com>
2025-09-02 13:41:30 +02:00
iabdalkader
927a2c7b54 lib/tflm: Add manual profiling instrumentation.
Use OMV_PROFILER_ENTER/EXIT macros to manually instrument the TensorFlow
Lite inference function instead of automatic -finstrument-functions to
avoid C++ linking issues with operator delete and atomics.

Signed-off-by: iabdalkader <i.abdalkader@gmail.com>
2025-08-24 16:57:15 +02:00
iabdalkader
e5cdccc72e common: Introduce profiling support.
This adds a simple code profiler that leverages both SysTick and
the Performance Monitoring Unit (PMU) available on Armv8.1-M cores.
SysTick provides a simple high-resolution timer source, while the PMU
offers a cycle counter and multiple configurable event counters that
can track low-level performance metrics such as cache misses, pipeline
stalls, etc... See the Armv8.1-M Performance Monitoring User Guide
for additional details.

Function-level instrumentation is enabled using -finstrument-functions
on select files to automatically record statistics on entry/exit.

Signed-off-by: iabdalkader <i.abdalkader@gmail.com>
2025-08-24 16:57:06 +02:00
iabdalkader
cf7b84d682 ports/all: Remove old profiling macros.
Signed-off-by: iabdalkader <i.abdalkader@gmail.com>
2025-08-24 14:40:02 +02:00
iabdalkader
0d5c5bc6eb ports/stm32: Revert N6 slow-peripheral IC clock source.
Signed-off-by: iabdalkader <i.abdalkader@gmail.com>
2025-08-19 13:39:33 +02:00
Kwabena W. Agyeman
89fc302812 lib/cmsis: Fix cmsis compile time constant folding. 2025-08-18 13:33:25 -07:00
iabdalkader
bb7431cb27 lib: Update to MicroPython 1.26.0.
Signed-off-by: iabdalkader <i.abdalkader@gmail.com>
2025-08-15 19:20:46 +02:00
iabdalkader
e936b69371 lib/stm32/n6: Fix default tick priority.
Signed-off-by: iabdalkader <i.abdalkader@gmail.com>
2025-08-15 19:20:46 +02:00
iabdalkader
941e1996bc lib/stm32: Build hal_uart_ex.
Signed-off-by: iabdalkader <i.abdalkader@gmail.com>
2025-08-15 19:20:46 +02:00
iabdalkader
eae16e4e4b lib/cmsis: Set N6 USART clock source.
Signed-off-by: iabdalkader <i.abdalkader@gmail.com>
2025-08-15 19:20:46 +02:00
Kwabena W. Agyeman
c26ed091a1 lib/alif: Fix Mac M4 USB enumeration. 2025-08-13 14:12:16 -07:00
Ibrahim Abdelkader
72d09d8f61
Merge pull request #2747 from kwagyeman/kwabena/genx320_event_mode
Some checks failed
🔥 Firmware Build / build-firmware (ARDUINO_GIGA) (push) Has been cancelled
🔥 Firmware Build / build-firmware (ARDUINO_NANO_33_BLE_SENSE) (push) Has been cancelled
🔥 Firmware Build / build-firmware (ARDUINO_NANO_RP2040_CONNECT) (push) Has been cancelled
🔥 Firmware Build / build-firmware (ARDUINO_NICLA_VISION) (push) Has been cancelled
🔥 Firmware Build / build-firmware (ARDUINO_PORTENTA_H7) (push) Has been cancelled
🔥 Firmware Build / build-firmware (DOCKER) (push) Has been cancelled
🔥 Firmware Build / build-firmware (OPENMV2) (push) Has been cancelled
🔥 Firmware Build / build-firmware (OPENMV3) (push) Has been cancelled
🔥 Firmware Build / build-firmware (OPENMV4) (push) Has been cancelled
🔥 Firmware Build / build-firmware (OPENMV4P) (push) Has been cancelled
🔥 Firmware Build / build-firmware (OPENMVPT) (push) Has been cancelled
🔥 Firmware Build / build-firmware (OPENMV_AE3) (push) Has been cancelled
🔥 Firmware Build / build-firmware (OPENMV_N6) (push) Has been cancelled
🔥 Firmware Build / build-firmware (OPENMV_RT1060) (push) Has been cancelled
🔥 Firmware Build / code-size-report (push) Has been cancelled
🔥 Firmware Build / stable-release (push) Has been cancelled
🔥 Firmware Build / development-release (push) Has been cancelled
drivers/sensors: Add RAW event output mode for the genx320.
2025-08-09 21:14:40 +03:00
Kwabena W. Agyeman
051396b4b8 modules/py_image: Add event histogram drawing method. 2025-08-09 09:32:10 -07:00
Kwabena W. Agyeman
af9679c3a0 lib/imlib: Add event camera imlib data structure. 2025-08-09 09:32:10 -07:00
Kwabena W. Agyeman
dabdd6994a lib/imlib: Add f32 conversion ops. 2025-08-07 15:40:48 -07:00
Kwabena W. Agyeman
0e9e936553 lib/imlib: Add rgb565 to rgb888 simd conversion. 2025-08-05 11:05:38 -07:00
Kwabena W. Agyeman
1b2c38fa6d lib/imlib: Add s8/s16 scatter/gather ops. 2025-08-05 10:48:52 -07:00
Kwabena W. Agyeman
374d1a8de2 lib/imlib: Add simd constant add/sub.
Broadcast a constant to add across all values.
2025-08-05 10:40:55 -07:00
Kwabena W. Agyeman
d786099bb4 lib/imlib: Fix simd intrinsics compile issue.
These lines cause compile time errors when using simd.h in more
files.
2025-08-05 10:38:16 -07:00
iabdalkader
994dee3d2b lib/micropython: Update submodule.
Enable SPI for n6.

Signed-off-by: iabdalkader <i.abdalkader@gmail.com>
2025-08-02 13:13:31 +02:00
Kwabena W. Agyeman
47c5618231 lib/imlib: Add transform argument to draw_image. 2025-07-31 13:13:45 -07:00
Kwabena W. Agyeman
20839405a2 lib/imlib: Add transform support to GPU drivers. 2025-07-31 13:12:48 -07:00
Kwabena W. Agyeman
680bd322ce lib/imlib: Fix draw line glitch. 2025-07-28 19:40:35 -07:00
iabdalkader
0458db2130 misc: Use updated mutex API.
Signed-off-by: iabdalkader <i.abdalkader@gmail.com>
2025-07-25 20:20:57 +02:00
iabdalkader
5d1f8860b1 imlib: Rework framebuffer management.
Signed-off-by: iabdalkader <i.abdalkader@gmail.com>
2025-07-23 18:24:52 +02:00