Using LwIP on the STM32H7
Robin Müller
robin.mueller.m at gmail.com
Thu Jan 28 16:52:21 UTC 2021
By the way, the lwipopts.h from the STM32 example application appears to
use the SRAM3 as the LWIP heap memory as well:
/* Relocate the LwIP RAM heap pointer */
#define LWIP_RAM_HEAP_POINTER (0x30044000)
Might this be an issue? I'm also not sure whether any interrupts are
configured .. but I think the Raw API is polling based..
Kind Regards
Robin Müller
On Thu, 28 Jan 2021 at 17:40, Robin Müller <robin.mueller.m at gmail.com>
wrote:
> Okay, I managed to achieve the initialization process by adapting the BSP
> to perform the descriptor list initialization.
> Unfortunately, the program now appears to crash in the following polling
> function, which is called every 100 ms:
>
> void ethernetif_input(struct netif *netif)
> {
> err_t err;
> struct pbuf *p;
>
> /* move received packet into a new pbuf */
> p = low_level_input(netif);
>
> /* no packet could be read, silently ignore this */
> if (p == NULL) return;
>
> /* entry point to the LwIP stack */
> err = netif->input(p, netif);
>
> if (err != ERR_OK)
> {
> LWIP_DEBUGF(NETIF_DEBUG, ("ethernetif_input: IP input error\n"));
> pbuf_free(p);
> p = NULL;
> }
>
> HAL_ETH_BuildRxDescriptors(&EthHandle);
> }
>
> More specifically, it appears to crash in netif->input.. Is there someone
> who has managed to make LwIP work on the STM32 with the Raw API?
>
> Kind Regards
> Robin Müller
>
> On Thu, 28 Jan 2021 at 17:15, Robin Müller <robin.mueller.m at gmail.com>
> wrote:
>
>> Alright, I think these descriptors were not initialized inside the
>> functions:
>> ETH_DMATxDescListInit
>> ETH_DMARxDescListInit
>>
>> because they are wrapped in preprocessor guards:
>>
>> static void ETH_DMATxDescListInit(ETH_HandleTypeDef *heth)
>> {
>> #ifndef __rtems__
>> ETH_DMADescTypeDef *dmatxdesc;
>> uint32_t i;
>>
>> /* Fill each DMATxDesc descriptor with the right values */
>> for(i=0; i < (uint32_t)ETH_TX_DESC_CNT; i++)
>> {
>> dmatxdesc = heth->Init.TxDesc + i;
>>
>> WRITE_REG(dmatxdesc->DESC0, 0x0);
>> WRITE_REG(dmatxdesc->DESC1, 0x0);
>> WRITE_REG(dmatxdesc->DESC2, 0x0);
>> WRITE_REG(dmatxdesc->DESC3, 0x0);
>>
>> WRITE_REG(heth->TxDescList.TxDesc[i], (uint32_t)dmatxdesc);
>> }
>>
>> heth->TxDescList.CurTxDesc = 0;
>>
>> /* Set Transmit Descriptor Ring Length */
>> WRITE_REG(heth->Instance->DMACTDRLR, (ETH_TX_DESC_CNT -1));
>>
>> /* Set Transmit Descriptor List Address */
>> WRITE_REG(heth->Instance->DMACTDLAR, (uint32_t) heth->Init.TxDesc);
>>
>> /* Set Transmit Descriptor Tail pointer */
>> WRITE_REG(heth->Instance->DMACTDTPR, (uint32_t) heth->Init.TxDesc);
>> #endif /* __rtems__ */
>> }
>>
>> Is there a specific reason the function was excluded?
>>
>> Kind Regards
>> Robin
>>
>> On Thu, 28 Jan 2021 at 16:47, Sebastian Huber <
>> sebastian.huber at embedded-brains.de> wrote:
>>
>>> On 28/01/2021 16:45, Robin Müller wrote:
>>>
>>> > *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.bsp_nocache*)))
>>> > .bsp_nocache 0x0000000030000000 0x18c0
>>> >
>>> CMakeFiles/fsfw_example.dir/bsp_stm32_rtems/boardconfig/ethernetif.c.obj
>>> > 0x0000000030000000 DMARxDscrTab
>>> > 0x0000000030000060 DMATxDscrTab
>>> > 0x00000000300000c0 Rx_Buff
>>> > 0x00000000300018c0 bsp_section_nocache_end = .
>>> > 0x00000000000018c0 bsp_section_nocache_size =
>>> > (bsp_section_nocache_end - bsp_section_nocache_begin)
>>> >
>>> > But in the debugger, the descriptor entries are still zeroed out
>>> > unfortunately..
>>> If you place them in BSP_NOCACHENOLOAD_SECTION or
>>> BSP_NOCACHENOLOAD_SUBSECTION(), they are not loaded (zero initialized).
>>>
>>> --
>>> embedded brains GmbH
>>> Herr Sebastian HUBER
>>> Dornierstr. 4
>>> 82178 Puchheim
>>> Germany
>>> email: sebastian.huber at embedded-brains.de
>>> phone: +49-89-18 94 741 - 16
>>> fax: +49-89-18 94 741 - 08
>>>
>>> Registergericht: Amtsgericht München
>>> Registernummer: HRB 157899
>>> Vertretungsberechtigte Geschäftsführer: Peter Rasmussen, Thomas Dörfler
>>> Unsere Datenschutzerklärung finden Sie hier:
>>> https://embedded-brains.de/datenschutzerklaerung/
>>>
>>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rtems.org/pipermail/users/attachments/20210128/a1f30114/attachment.html>
More information about the users
mailing list