Skip to content

Commit 24b8e93

Browse files
kwagyemanclaude
andcommitted
docs: Add v1.1.0 firmware changelog
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent 0f2451f commit 24b8e93

2 files changed

Lines changed: 152 additions & 0 deletions

File tree

docs/changelog/index.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,4 +95,5 @@ migrate your code.
9595
v1.4.0.rst
9696
v1.3.0.rst
9797
v1.2.0.rst
98+
v1.1.0.rst
9899
v4.2.3.rst

docs/changelog/v1.1.0.rst

Lines changed: 151 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,151 @@
1+
.. _changelog_v1_1_0:
2+
3+
v1.1.0
4+
======
5+
6+
v1.1.0 is the foundational architecture release: it drops the early custom
7+
peripheral modules in favor of standard **MicroPython built-ins**, moves the
8+
imaging API into the **``image``** module and the frame-rate clock into
9+
**``time``**, and adds built-in Haar cascades, ``get_pixel()`` / ``set_pixel()``,
10+
OpenMV 2 board support, and USB-CDC debugging. It is a heavily breaking,
11+
API-defining release — read the breaking changes below.
12+
13+
.. contents:: On this page
14+
:local:
15+
:depth: 1
16+
17+
Highlights
18+
----------
19+
20+
- **MicroPython built-ins** — the custom ``gpio`` / ``led`` / ``spi`` /
21+
``socket`` / ``wlan`` / ``uart`` / ``file`` / ``select`` modules were
22+
removed in favor of MicroPython's ``pyb`` / ``machine``.
23+
- **``image`` module** — ``Image()`` / ``HaarCascade()`` / descriptors are
24+
now in the ``image`` module.
25+
- **``time.clock()``** — the frame-rate clock moved into the ``time`` module.
26+
- **Built-in Haar cascades** — ``HaarCascade("frontalface")`` /
27+
``HaarCascade("eye")`` (no file needed).
28+
- **OpenMV 2** board support and USB-CDC debugging.
29+
- **Breaking:** the module structure was redefined — see the breaking
30+
changes.
31+
32+
New features
33+
------------
34+
35+
- **Image** — added ``Image.get_pixel(x, y)`` / ``set_pixel()`` and ``img[i]``
36+
subscript pixel access; built-in flash Haar cascades
37+
(``HaarCascade("frontalface")`` / ``HaarCascade("eye")``) and a ``stages=``
38+
keyword to limit cascade stages; ``draw_string()`` works on grayscale
39+
images.
40+
- **Sensor** — added ``sensor.set_colorbar()``, ``sensor.set_saturation()``,
41+
and the ``QQVGA2`` framesize.
42+
- **``mlx``** — ``mlx.read(type)`` with ``mlx.RAINBOW`` / ``mlx.GRAYSCALE``
43+
output.
44+
- **Debugging** — implemented debugging over USB CDC, a firmware
45+
``fw_version()`` query, per-board firmware (OpenMV 1 / OpenMV 2), and
46+
self-test / colorbar scripts; fatal/parse errors are logged to flash.
47+
48+
Other changes and improvements
49+
------------------------------
50+
51+
- Out-of-memory now raises ``MemoryError`` instead of ``OSError``; scripts
52+
run with exception re-raise so errors print instead of crashing; the serial
53+
baud rate is configurable (default 921600); a larger flash filesystem; the
54+
sensor pixel clock was lowered to 54 MHz for capture stability;
55+
``sensor.reset()`` relies on a sensor soft reset only.
56+
57+
Bug fixes
58+
---------
59+
60+
- Fixed template matching, ``find_features()`` repeating the first object,
61+
SCCB/I2C atomic register access, SD-card chip detect, soft-I2C pin mapping,
62+
``fast_cbrtf`` / LAB color accuracy, and integral-image / median-filter
63+
memory use on the OpenMV 1 / 2.
64+
65+
Hardware and board support
66+
--------------------------
67+
68+
- **OpenMV 2** (STM32F427) board support (and OpenMV 3 hardware design); MCO
69+
used as the sensor clock on the OpenMV 2.
70+
71+
Breaking API changes
72+
--------------------
73+
74+
User-visible API breaks between v1.0.3-beta and v1.1.0. Scope: Python
75+
C-modules in ``modules/`` and Python libraries in ``scripts/libraries/``.
76+
77+
Each change is tagged with its impact:
78+
79+
- *major* — affects most scripts that used the feature; you will need to port
80+
code.
81+
- *behavior* — same API, different results; re-check tuned scripts.
82+
83+
Changes are grouped by impact in that order. If you just want to port your
84+
code, jump to the :ref:`migration checklist <v1_1_0_migration>` at the end.
85+
Each commit hash links to its diff on GitHub.
86+
87+
.. _v1_1_0_custommodules:
88+
89+
Custom peripheral modules removed *(major)*
90+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
91+
92+
The early custom ``clock`` / ``file`` / ``gpio`` / ``led`` / ``select`` /
93+
``socket`` / ``spi`` / ``wlan`` / ``uart`` modules were removed in favor of
94+
MicroPython's built-in ``pyb`` / ``machine`` peripherals. Port scripts to the
95+
standard MicroPython equivalents (e.g. ``pyb.Pin`` / ``pyb.LED`` / ``pyb.SPI``
96+
/ ``pyb.UART``).
97+
98+
*Commits:* `6d2fafa94 <https://github.com/openmv/openmv/commit/6d2fafa94>`__
99+
100+
.. _v1_1_0_image:
101+
102+
Imaging API moved into the ``image`` module *(major)*
103+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
104+
105+
``Image()``, ``HaarCascade()``, and the descriptor save/load functions are no
106+
longer bare builtins — they live in the new ``image`` module. Scripts must
107+
``import image`` and use ``image.Image()`` / ``image.HaarCascade()``.
108+
109+
*Commits:* `54288c535 <https://github.com/openmv/openmv/commit/54288c535>`__
110+
111+
.. _v1_1_0_clock:
112+
113+
Frame-rate clock moved into ``time`` *(major)*
114+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
115+
116+
The standalone ``clock`` module was removed; the frame-rate clock now lives
117+
in ``time``. Use ``import time`` and ``clock = time.clock()`` — the returned
118+
object still provides ``.tick()`` / ``.fps()`` / ``.avg()`` / ``.reset()``.
119+
120+
*Commits:* `a8928ca3b <https://github.com/openmv/openmv/commit/a8928ca3b>`__
121+
122+
.. _v1_1_0_syspath:
123+
124+
``/flash`` and ``/sd`` no longer added to ``sys.path`` *(behavior)*
125+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
126+
127+
The volume labels / root directory were fixed and ``/flash`` and ``/sd`` are
128+
no longer auto-appended to ``sys.path``. Scripts that imported helper modules
129+
by bare name from those locations must add the path explicitly (or place
130+
modules where they are found).
131+
132+
*Commits:* `09e77b5da <https://github.com/openmv/openmv/commit/09e77b5da>`__
133+
134+
.. _v1_1_0_migration:
135+
136+
Migration checklist
137+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
138+
139+
For a clean port to v1.1.0 the typical work is:
140+
141+
#. Replace the custom ``gpio`` / ``led`` / ``spi`` / ``uart`` / ``socket`` /
142+
``wlan`` / ``file`` / ``select`` modules with MicroPython ``pyb`` /
143+
``machine`` (:ref:`the custom-module removal <v1_1_0_custommodules>`).
144+
#. ``import image`` and prefix ``Image()`` / ``HaarCascade()`` with
145+
``image.`` (:ref:`the image module move <v1_1_0_image>`).
146+
#. Use ``import time`` and ``clock = time.clock()``
147+
(:ref:`the clock move <v1_1_0_clock>`).
148+
#. Add ``/flash`` / ``/sd`` to ``sys.path`` explicitly if you imported helper
149+
modules by bare name (:ref:`the sys.path change <v1_1_0_syspath>`).
150+
151+
All other scripts run unchanged.

0 commit comments

Comments
 (0)