Skip to content

Config key rx_dma: receive by interrupt where the DMA does not serve the UART - #9

Merged
JohnAmadis merged 1 commit into
mainfrom
feature/rx-dma-switch
Oct 11, 2026
Merged

JohnAmadis merged 1 commit into
mainfrom
feature/rx-dma-switch

Conversation

@JaxCalder

Copy link
Copy Markdown
Contributor

Summary

The DMA receive of #8 cannot work where the DMA is not driven by the UART: Renode's STM32F7 USART has no request line to the DMA, so a console UART received nothing there and dmod-boot's Renode tests fail.

New key rx_dma of the UART's section (default 1): rx_dma=0 makes the instance receive by interrupt. It goes through a new port function, dmuart_port_set_rx_dma(), called before dmuart_port_set_rx_ring(); the STM32F7 port takes it into account, the STM32F4 port (interrupt only) accepts it. Documented in docs/configuration.md.

This is a minor change of the port's interface: release it as a new minor version (1.2 or higher).

Testing

Builds for arch/armv7/cortex-m7. Not run on the board or in Renode: the default (DMA) is the code path of #8, which was tested on the STM32F746G-DISCO. dmod-boot uses the key in choco-technologies/dmod-boot (Emulation: the UARTs receive by interrupt).

🤖 Generated with Claude Code

…the UART

The DMA receive added in the previous change cannot work on a platform whose
DMA controller is not driven by the UART - Renode's STM32F7 model has no
request line from the USART, so a console UART received nothing there.
`rx_dma=0` of the UART's section makes the instance receive by interrupt
(dmuart_port_set_rx_dma(), called before set_rx_ring(); the default stays
DMA).

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@JohnAmadis
JohnAmadis merged commit e9e1ddd into main Oct 11, 2026
3 checks passed
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