Commit Graph

2793 Commits

Author SHA1 Message Date
iabdalkader
be03021258 boards/All: Update memory configs.
* DMA buffers regions are automatically rounded up to the next power of 2 via
the linker script. This ensures that these buffers, when rounded up, can actually
fit into their respective memories. It also ensures that when/if the MPU is used
to configure these regions, it will not round up the regions sizes, which may cause
the MPU to configure a region bigger than the DMA buffer.
* GC blocks can be rearranged in any order, including the main heap/first block.
This is very important for boards with limited RAM to avoid fragmenting the contiguous
large heap early before it's actually needed.
* Moved VOSPI memory to its own section. The offset is no longer required, and the
linker script can detect overlaps.
* Renamed GC heap memory to allow more than one heap to exist, and added support for
it in the common linker script. This change allows adding a second heap for malloc/libc
easily if needed.
* For STM32 boards, the domain-specific DMA buffers can now be located anywhere within
their memory regions, as their MPU regions' base addresses and sizes are all set via
linker script variables. Previously, this was defined in headers, and sections could
have easily overlapped without warning.
2024-06-30 17:58:59 +02:00
iabdalkader
c28aea9ea4 misc: Fix first additional GC block name. 2024-06-30 17:32:13 +02:00
iabdalkader
c9de724be0 misc: Rename JPEG buffer size. 2024-06-30 17:32:13 +02:00
iabdalkader
ab92e46edd ports/nrf: Use the common linker script. 2024-06-30 17:32:13 +02:00
iabdalkader
c7a87bce8e ports/stm32: Use the common linker script. 2024-06-30 17:32:13 +02:00
iabdalkader
f06eb8e72e ports/stm32: Add MPU helper function. 2024-06-30 17:32:13 +02:00
iabdalkader
2f8977a5ac ports/mimxrt: Use the common linker script. 2024-06-30 17:32:13 +02:00
iabdalkader
9062a51d31 misc: Add common pre-processor linker script. 2024-06-30 17:32:09 +02:00
iabdalkader
40710a3573 ports/stm32: Support setting audio module samples at runtime. 2024-06-28 16:32:04 +02:00
iabdalkader
54104039b4 boards/All: Freeze the ML extension module for boards with ML support. 2024-06-28 16:32:04 +02:00
iabdalkader
c7228cbb48 modules/py_tf: Refactor TensorFlow module.
This patch decouples the MicroPython TF module from the TensorFlow library,
allowing support for more DL/ML libraries and engines in the future.

The ML backend has been completely redesigned; the model object can now be
passed directly to the backend, allowing it to initialize the model internally.
Additionally, the backend's state/memory is now persistent (surviving across
invocations), which improves inference speed by around 20% and supports models
that require persistent memory, such as LSTM.

Finally, the ML module has been mostly rewritten to handle model input/output
shapes and data properly, and to support models with multiple outputs
2024-06-28 16:32:04 +02:00
iabdalkader
13c99c6332 boards/All: Optimize flash/memory usage to support the new TFLM. 2024-06-28 16:32:04 +02:00
iabdalkader
13cc273318 boards/all: Enable built-in TFLM models.
The new built-in model system allows fine-grained control over which models
get built into the firmware image. This patch enables FOMO for all boards
and audio processing models for boards with mics.
2024-06-28 16:32:04 +02:00
iabdalkader
073b161309 modules/py_image: Export py_image_type for use by other modules. 2024-06-28 16:32:04 +02:00
iabdalkader
491fc1bd06 ports/nrf: Fix build. 2024-06-28 16:32:04 +02:00
iabdalkader
f4c91cbf6c ports/stm32: Update linker script.
Add more GC blocks, and separate the main GC heap from main memory.
2024-06-28 16:32:02 +02:00
iabdalkader
7a62df38e3 ports/stm32: Update port Makefiles to support the new TFLM. 2024-06-28 16:31:42 +02:00
iabdalkader
d51a11edbf ports/mimxrt: Update linker script.
Add more GC blocks, and separate the main GC heap from main memory.
2024-06-28 16:31:39 +02:00
iabdalkader
c79b3aecbb ports/mimxrt: Update port Makefiles to support the new TFLM. 2024-06-28 14:13:46 +02:00
iabdalkader
d1756b4b61 ports/stm32: Remove the obsolete micro speech C module.
This module no longer works with the updated TFLM since feature generation
has been removed and replaced by another audio preprocessor model. This
module will be replaced with a pure Python module or example.
2024-06-28 14:13:46 +02:00
iabdalkader
18caf947b9 ports/all: Fix RWX warning in linker scripts. 2024-06-28 14:13:46 +02:00
Ibrahim Abdelkader
235c337da0
Merge pull request #2232 from kwagyeman/kwabena/fix_cache_invalidation_issue
ports: Fix accidental CPU cache invalidation.
2024-06-28 14:09:28 +02:00
iabdalkader
112c753bb5 ports/stm32: Add support for additional GC blocks. 2024-06-22 17:02:53 +02:00
iabdalkader
7aa40047a7 ports/mimxrt: Add support for additional GC blocks. 2024-06-22 17:02:23 +02:00
iabdalkader
4dd63ce6e0 ports/nrf: Switch to mp_utils to initialize GC/Stack. 2024-06-22 17:02:23 +02:00
iabdalkader
df3e885d6b ports/rp2: Switch to mp_utils to initialize GC/Stack. 2024-06-22 17:02:23 +02:00
iabdalkader
79019cce0d misc: Add MicroPython GC helper functions. 2024-06-22 17:02:15 +02:00
Kwabena W. Agyeman
7bf5b3fa7e modules/py_image: Add support for turning lists/tuples into Images. 2024-06-21 22:05:11 -07:00
Kwabena W. Agyeman
7697a84e8f modules/py_tf.c: Remove old methods/functions. 2024-06-21 10:41:09 +02:00
Kwabena W. Agyeman
a4d97c5723 modules/py_tf.c: Fix bug with S128_127 scaling. 2024-06-21 10:41:09 +02:00
Kwabena W. Agyeman
3e37f46db4 modules/py_tf: Remove detect() and segment() in favor of predict(). 2024-06-21 10:41:09 +02:00
Kwabena W. Agyeman
3863c38228 modules/py_tf: Remove classification object. 2024-06-21 10:41:09 +02:00
Kwabena W. Agyeman
54e31b163b modules/py_tf: Merge model output object with model object. 2024-06-21 10:41:04 +02:00
Kwabena W. Agyeman
36610e8530 modules/py_tf: Refactor NMS code into it's own object. 2024-06-21 10:37:38 +02:00
Kwabena W. Agyeman
13ab81c0ee imlib/collections: Add support for moving items between lists. 2024-06-20 14:36:28 -07:00
Kwabena W. Agyeman
e3ceea4a6c modules/py_tf: Fix log buffer free-order. 2024-06-19 17:17:20 -07:00
Kwabena W. Agyeman
cc823e2fbb ports: Fix accidental CPU cache invalidation. 2024-06-18 22:04:31 -07:00
iabdalkader
6c212409ce modules/py_tf: Refactor py_tf module.
- Implement log handler.
- Remove all extra load functions: load, load_builtin_model, and the newly added tf.Model(),
  now all call the same function.
- Remove module-level functions. Code should load the model first, the use model.predict().
  This is a breaking change, but loading models on the fly was never a good feature.
- Model FB memory will be free'd in finalizer. The model's fb_memory is automatically
  free'd when it's delete (i.e., del model).
2024-06-16 17:23:58 +02:00
iabdalkader
6373e0d708 ports/stm32: Fix Audio module's root pointers. 2024-06-15 14:24:00 +02:00
iabdalkader
668959d5c0 modules/fir: Fix root pointer usage. 2024-06-15 13:32:24 +02:00
Ibrahim Abdelkader
854afd9915
Merge pull request #2227 from kwagyeman/kwabena/new_tf_method
modules/py_tf: Add generic CNN processing support.
2024-06-12 15:10:09 +02:00
Kwabena W. Agyeman
8c69b09f4f modules/py_tf: Add generic CNN processing support. 2024-06-11 22:11:32 -04:00
Ibrahim Abdelkader
8c8c7dbde1
Merge pull request #2190 from kwagyeman/kwabena/refactor_get_similarity
modules/py_image: Refactor get_similarity() to use draw_image backend.
2024-06-09 14:34:52 +02:00
iabdalkader
4e84b3eabb boards/ARDUINO_GIGA: Enable HIMAX sensors. 2024-05-30 20:46:15 +02:00
iabdalkader
d330c73bce misc: Bump firmware version. 2024-05-26 14:56:56 +02:00
Ibrahim Abdelkader
4759398742
Merge pull request #2207 from openmv/sensor_delay_pwdn_reset
misc: Increase delay after reset/power-down.
2024-05-25 20:47:18 +02:00
Ibrahim Abdelkader
48801fbc5c
Merge pull request #2210 from kwagyeman/kwabena/remove_pooling
imlib/pool: Remove obsolete pooling functions.
2024-05-25 15:08:18 +02:00
Ibrahim Abdelkader
1959b724e1
Merge pull request #2212 from kwagyeman/kwabena/fix_erode_mask
imlib/binary: Fix erode mask check.
2024-05-25 10:32:03 +02:00
iabdalkader
88027a9e27 boards/PORTENTA_H7: Override default reset and power delays. 2024-05-25 10:29:37 +02:00
iabdalkader
17ac3180b9 misc: Increase delay after sensor reset/power-down. 2024-05-25 10:29:25 +02:00