Skip to main content
Graduate
May 27, 2023
Solved

Hello, Is there an example for the STM32H7 ETH HAL V11.0 (new reworked ETH driver) without the LWIP. All the example i found are coupled with the LWIP. Thanks.

  • May 27, 2023
  • 1 reply
  • 2137 views

Following function are tied to the LWIP functions and i do not want to use any LWIP etc...

How to bypass that ?

void HAL_ETH_RxAllocateCallback(uint8_t **buff)
{
 struct pbuf_custom *p = LWIP_MEMPOOL_ALLOC(RX_POOL);
 if (p)
 {
 /* Get the buff from the struct pbuf address. */
 *buff = (uint8_t *)p + offsetof(RxBuff_t, buff);
 p->custom_free_function = pbuf_free_custom;
 /* Initialize the struct pbuf.
 * This must be performed whenever a buffer's allocated because it may be
 * changed by lwIP or the app, e.g., pbuf_free decrements ref. */
 pbuf_alloced_custom(PBUF_RAW, 0, PBUF_REF, p, *buff, ETH_RX_BUFFER_SIZE);
 }
 else
 {
 RxAllocStatus = RX_ALLOC_ERROR;
 *buff = NULL;
 }
}
 
void HAL_ETH_RxLinkCallback(void **pStart, void **pEnd, uint8_t *buff, uint16_t Length)
{
 struct pbuf **ppStart = (struct pbuf **)pStart;
 struct pbuf **ppEnd = (struct pbuf **)pEnd;
 struct pbuf *p = NULL;
 
 /* Get the struct pbuf from the buff address. */
 p = (struct pbuf *)(buff - offsetof(RxBuff_t, buff));
 p->next = NULL;
 p->tot_len = 0;
 p->len = Length;
 
 /* Chain the buffer. */
 if (!*ppStart)
 {
 /* The first buffer of the packet. */
 *ppStart = p;
 }
 else
 {
 /* Chain the buffer to the end of the packet. */
 (*ppEnd)->next = p;
 }
 *ppEnd = p;
 
 /* Update the total length of all the buffers of the chain. Each pbuf in the chain should have its tot_len
 * set to its own length, plus the length of all the following pbufs in the chain. */
 for (p = *ppStart; p != NULL; p = p->next)
 {
 p->tot_len += Length;
 }
 
 /* Invalidate data cache because Rx DMA's writing to physical memory makes it stale. */
 SCB_InvalidateDCache_by_Addr((uint32_t *)buff, Length);
}
 
void HAL_ETH_TxFreeCallback(uint32_t * buff)
{
 pbuf_free((struct pbuf *)buff);
}
 

    This topic has been closed for replies.
    Best answer by Pavel A.

    ST offers Azure RTOS integration for STM32H7, so there are examples for the ThreadX network stack (NetX).

    1 reply

    Pavel A.Answer
    Super User
    May 28, 2023

    ST offers Azure RTOS integration for STM32H7, so there are examples for the ThreadX network stack (NetX).

    FB__1Author
    Graduate
    May 28, 2023

    Thank you. I will give it a try...