# STM32F746 ada-enet

**URL:** https://forum.ada-lang.io/t/stm32f746-ada-enet/1953
**Category:** General
**Tags:** embedded
**Created:** [March 31, 2025, 3:02pm UTC](https://forum.ada-lang.io/t/stm32f746-ada-enet/1953 "2025-03-31T15:02:18Z")
**Posts on this page:** 4
**Page:** 1

<div class="post-metadata">

### Author: ![letn](https://forum.ada-lang.io/letter_avatar_proxy/v4/letter/l/85e7bf/32.png) [@letn](https://forum.ada-lang.io/u/letn)
#### Post date: [March 31, 2025, 3:02pm UTC](https://forum.ada-lang.io/t/stm32f746-ada-enet/1953/1 "2025-03-31T15:02:18Z")

</div>

Hi,  
This question follows this topic [Ada driver library ethernet component](https://forum.ada-lang.io/t/ada-driver-library-ethernet-component/1921) where I asked how can I have a working ethernet stack on my [STM32F746 devboard](https://www.waveshare.com/open746i-c-standard.htm).

I’m trying the get the ada-enet from @stcarrez working on it but I’m facing weird issues with the board. I can receive ethernet messages and the stack try to send answers. When adding a print (which does semihosting) in the Net.STM32\_Interfaces.Transmit\_Queue.Send it “works” (more like answer to 3 messages and then break apart) so the PHY configuration seems okay (it’s able to send and receive) but I guess it has something to do with either cache or DMA buffer management.

Has anyone experienced the same issues?

Thanks for your help, I’ve been stuck on this for almost a week 🥲

---

<div class="post-metadata">

### Author: ![Max](https://forum.ada-lang.io/user_avatar/forum.ada-lang.io/max/32/21_2.png) [@Max](https://forum.ada-lang.io/u/Max)
#### Post date: [April 2, 2025, 7:27am UTC](https://forum.ada-lang.io/t/stm32f746-ada-enet/1953/2 "2025-04-02T07:27:15Z")

</div>

I don’t have such a board, but here my 2 cents advices.

I would suggest to avoid printing in the protected object, because it could be too slow. The better way is to create a buffer in the memory and populate it. Then you can investigate the buffer content in the debugger or print it in a separate task.

PS. May be I’ll find time to write [RTT crate](https://blog.adacore.com/enhancing-ada-embedded-development-the-power-of-real-time-logging-with-rtt) for Alire finally ☹

---

<div class="post-metadata">

### Author: ![Max](https://forum.ada-lang.io/user_avatar/forum.ada-lang.io/max/32/21_2.png) [@Max](https://forum.ada-lang.io/u/Max)
#### Post date: [April 3, 2025, 6:43am UTC](https://forum.ada-lang.io/t/stm32f746-ada-enet/1953/3 "2025-04-03T06:43:08Z")

</div>

[The corresponding reddit thread](https://www.reddit.com/r/embedded/comments/1jomh5u/stm32_ethernet_tx_with_ada/?utm_source=share&utm_medium=web3x&utm_name=web3xcss&utm_term=1&utm_content=share_button)

---

<div class="post-metadata">

### Author: ![Max](https://forum.ada-lang.io/user_avatar/forum.ada-lang.io/max/32/21_2.png) [@Max](https://forum.ada-lang.io/u/Max)
#### Post date: [May 29, 2025, 1:20pm UTC](https://forum.ada-lang.io/t/stm32f746-ada-enet/1953/4 "2025-05-29T13:20:10Z")

</div>

@letn I’ve just found an issue in stm32 enet driver. I propose you to double check if you have the same in your driver:

> <https://github.com/stcarrez/ada-enet/pull/17>
>
> As documentation says:
> 
> \> Writing 1 to (unreserved) bits in ETH\_DMASR register…\[16:0\] clears them and
> \> writing 0 has no effect.
> 
> But when we do \`Periph.DMASR.RS := True;\` we actually do \`Periph.DMASR := (RS =\> True, TS =\> Periph.DMASR.TS, ...);\`.
> 
> If at the moment \`TS = True\`, this assigment will clean \`TS\`, but this is not what we want here.
