cancel
Showing results for 
Search instead for 
Did you mean: 

example using HAL ETH without LWiP for raw ethernet frames?

Elwood Downey
Associate III
Posted on June 09, 2017 at 20:41

[reposting after 30 days of no responses]

Hello all,

I have been making great progress using CubeMX and HAL for lots of things, now I want to try ethernet. My application is very simple, I only want to send and receive raw ethernet frames -- no UDP or TCP at all. I also prefer not to use LWiP for something so basic. Can anyone point me to an example of raw ethernet frame IO using just HAL? I will be using Nucleo F429ZI.

My requirements:

[ ] send a raw frame (source and destination MAC address, type IP and payload, total less than 1500 bytes)

[ ] receive interrupt upon receipt of a raw ethernet frame

My transactions are slow and simple, I do not even need any buffer queuing.

Thanks for any tips.

#raw-ethernet-frame
29 REPLIES 29
nguen nguyen
Associate II
Akash_k
Associate III

Which software can we use for raw ethernet frames?

Hello,

I want to execute the exact same thing on STM32f429NI Eval Board and I am new to ethernet. I have to check the basic ethernet functionality. Can you please share the example program if you got one ? Thanks.

With your experience level, I'd probably choose the path of least resistance, not the path least traveled

STM32Cube_FW_F4_V1.25.0\Projects\STM324x9I_EVAL\Applications\LwIP\LwIP_HTTP_Server_Raw

Tips, Buy me a coffee, or three.. PayPal Venmo
Up vote any posts that you find helpful, it shows what's working..
Piranha
Chief II

This code is simple and a good starting point for both - Ethernet and lwIP:

https://github.com/lsgunth/lwip_contrib

FSoui.1
Associate II

Hello @Elwood Downey​  I'm just starting with using ETH with STM and I'm trying to do the same application can you please share with me the source code if you still have it ?

jsvirzi
Associate II

This is an extremely useful application. Sending/receiving raw ethernet frames is very liberating and empowering.

I've tried using LWiP, and after horrible experiences on the STM32H743 (works for 5 to 8 hours and hangs) without any code on my part (completely out-of-the-box), I can't even ping after 8 hours. Months later, we did not have a product that we could ship, because we couldn't get LWIP to work forever.

Even with LWIP working reliably, there are times when the raw frames are the best. I'm trying to avoid an LWIP-centric defense argument.

Anyway, back to the central point. Is there a body of code somewhere, where I can send/transmit frames from one MCU to another? No protocol. Just transfer one byte stream to another.

Thanks!

> No protocol. Just transfer one byte stream to another.

Just look at the low_level_input and low_level_output functions. Remove anything related to LwIP (especially the buffer/packet allocation); roll your own.

The lwIP has no problem living friendly with a custom protocols. For example, one can implement LWIP_HOOK_UNKNOWN_ETH_PROTOCOL() and process in it any custom layer 2 protocols one needs.

> Months later, we did not have a product that we could ship, because we couldn't get LWIP to work forever.

Well, then stop clicking and using Cube/HAL, which is developed by incompetent fools, and start developing real code.

https://community.st.com/s/question/0D50X0000BOtfhnSQB/how-to-make-ethernet-and-lwip-working-on-stm32