Skip to content

Release 0.2.33 - #350

Merged
lovyan03 merged 8 commits into
m5stack:masterfrom
ainyan03:release_0.2.33
Oct 13, 2026
Merged

lovyan03 merged 8 commits into
m5stack:masterfrom
ainyan03:release_0.2.33

Conversation

@ainyan03

Copy link
Copy Markdown
Contributor

Fixes

When the first descriptor of a DMA queue is in external RAM and too short
to align, execDMAQueue sends it through the CPU. For 65 to 1023 bytes that
non-DMA writeBytes copied the data into the flip buffer, and a
getDMABuffer() buffer queued after it could be that same buffer, so its
contents were overwritten before the DMA read them.

Send the head in pieces of at most 64 bytes, which always take the register
path. Each piece is first copied to a local word buffer, because the
register copy rounds the length up to whole words and would otherwise read
past the end of the source.

Reproduced on ESP32-S3 with octal PSRAM: queue a 70 or 80 byte PSRAM
buffer starting 4 or 6 bytes past a 64-byte boundary, then two
getDMABuffer() buffers. Before this change the first getDMABuffer()
buffer arrived corrupted every time; after it the readback matches.
… a DMA transfer

Port of the develop change to the master layout: the write-back moves ahead of the
CPU-written head on every PSRAM-DMA target, and the ESP32-P4 write-back after the
descriptor setup is skipped when the buffer is already clean.
The backlight is driven directly by LDO3 (1.8V + 0.1V * N) and does not light below 2.5V
(N = 7), so brightness values 1..71 produced a dark screen and 1..4 wrote voltages that
can never light it. Map 1..255 onto N = 7..15 instead; 0 still turns LDO3 off and 255 is
unchanged (3.3V).
Enabling BUS_OUT_EN into an empty BUS_OUT on a weak USB supply pulls an AXP2101
DCDC under its threshold and the PMIC powers the board off before the display
comes up. Pulse BUS_OUT_EN with growing on-time first (the sequence of
M5Unified::setExtOutput()), verify the final enable, and only warn on failure.
@lovyan03
lovyan03 merged commit 347a232 into m5stack:master Oct 13, 2026
28 checks passed
@ainyan03
ainyan03 deleted the release_0.2.33 branch October 13, 2026 06:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants