Repository navigation
Add a TX bounce buffer to the STM32 HAL Ethernet driver and document STM32H7R/S MPU traps - #194
Conversation
wolfSSL-Fenrir-bot
left a comment
There was a problem hiding this comment.
Fenrir Automated Review — PR #194
Scan targets checked: wolfip-src, wolfip-bugs
Not reviewed (no scan target covers them): IDE/STM32Cube/README.md
Coverage: 1 of 1 in-scope changed file(s) opened by the reviewer
Fenrir result: Approved ✅
No new issues found in the changed files.
Advisory only — this automated result does not count as a GitHub approval.
Review tier: Max
There was a problem hiding this comment.
🟡 Changes recommended
The README incorrectly generalizes the speculative-read hazard to peripheral registers, so the explanation should be scoped to the GFXMMU window in the default map’s Normal-memory range.
1 open issue
What changed in this PR
This documentation-only PR explains an STM32H7R/S freeze relevant to issue #192, caused by speculative reads into the unclocked GFXMMU window. It places the mitigation in the application’s MPU configuration rather than the wolfIP Ethernet driver.
Changes:
- Adds freeze symptoms, a debugger confirmation step, and an MPU no-access configuration example.
- Adds a pointer to the troubleshooting guidance in the Ethernet driver’s implementation notes.
| File | Description |
|---|---|
src/port/stm32_hal/stm32_hal_eth.h |
Adds a documentation pointer for the GFXMMU freeze and mitigation. |
IDE/STM32Cube/README.md |
Documents the freeze, diagnostic check, and application-level MPU mitigation. |
Review effort: Balanced
96c87fd to
3c21884
Compare
wolfSSL-Fenrir-bot
left a comment
There was a problem hiding this comment.
Fenrir Automated Review — PR #194
Scan targets checked: wolfip-src, wolfip-bugs
Not reviewed (no scan target covers them): IDE/STM32Cube/README.md
Coverage: 1 of 2 in-scope changed file(s) opened by the reviewer; not opened: src/port/stm32_hal/stm32_hal_eth.h
Fenrir result: Approved ✅
No new issues found in the changed files.
Advisory only — this automated result does not count as a GitHub approval.
Review tier: Lite

Description
Follow-up to #191 from the work on #192: one driver change and two documentation entries for STM32H7R/S.
Transmit from a static buffer
wolfIP builds each outgoing frame on the stack of the task that sends it, and
hal_eth_send()passed that pointer straight to the Ethernet DMA. The DMA cannot read core-coupled memory, so with a stack in DTCM (or CCM on other families) nothing was transmitted. WithSTM32_HAL_ETH_TX_BOUNCE,hal_eth_send()copies the frame into a static, cache-line-aligned buffer and sends from there. It is on by default for STM32H7R/S, whose vendor linker scripts put the main stack in DTCM, andSTM32_HAL_ETH_NO_TX_BOUNCEturns it off there. Other families are unchanged unless they define it.Documentation
IDE/STM32Cube/README.mdgains two troubleshooting entries:Testing
NUCLEO-H7S3L8, FreeRTOS port. With every task stack in DTCM the driver without the copy transmits nothing and with it serves HTTP normally; with stacks in AXI SRAM both behave the same. The atomics BusFault was reproduced on the same board. Not tested on other STM32 families.