On Fri, Jan 29, 2021, 5:52 AM Robin Müller <robin.muelle...@gmail.com> wrote:
> Hi, > > I am actually configuring the MPU with the following function, which was > taken over from the STM32 example project: > > /*Configure the MPU attributes */ > void MPU_Config(void) > { > MPU_Region_InitTypeDef MPU_InitStruct; > > /* Disable the MPU */ > HAL_MPU_Disable(); > > /* Configure the MPU attributes as Device not cacheable > for ETH DMA descriptors */ > MPU_InitStruct.Enable = MPU_REGION_ENABLE; > MPU_InitStruct.BaseAddress = 0x30040000; > MPU_InitStruct.Size = MPU_REGION_SIZE_256B; > MPU_InitStruct.AccessPermission = MPU_REGION_FULL_ACCESS; > MPU_InitStruct.IsBufferable = MPU_ACCESS_BUFFERABLE; > MPU_InitStruct.IsCacheable = MPU_ACCESS_NOT_CACHEABLE; > MPU_InitStruct.IsShareable = MPU_ACCESS_NOT_SHAREABLE; > MPU_InitStruct.Number = MPU_REGION_NUMBER0; > MPU_InitStruct.TypeExtField = MPU_TEX_LEVEL0; > MPU_InitStruct.SubRegionDisable = 0x00; > MPU_InitStruct.DisableExec = MPU_INSTRUCTION_ACCESS_ENABLE; > > HAL_MPU_ConfigRegion(&MPU_InitStruct); > > /* Configure the MPU attributes as Cacheable write through > for LwIP RAM heap which contains the Tx buffers */ > MPU_InitStruct.Enable = MPU_REGION_ENABLE; > MPU_InitStruct.BaseAddress = 0x30044000; > MPU_InitStruct.Size = MPU_REGION_SIZE_16KB; > MPU_InitStruct.AccessPermission = MPU_REGION_FULL_ACCESS; > MPU_InitStruct.IsBufferable = MPU_ACCESS_NOT_BUFFERABLE; > MPU_InitStruct.IsCacheable = MPU_ACCESS_CACHEABLE; > MPU_InitStruct.IsShareable = MPU_ACCESS_NOT_SHAREABLE; > MPU_InitStruct.Number = MPU_REGION_NUMBER1; > MPU_InitStruct.TypeExtField = MPU_TEX_LEVEL0; > MPU_InitStruct.SubRegionDisable = 0x00; > MPU_InitStruct.DisableExec = MPU_INSTRUCTION_ACCESS_ENABLE; > > HAL_MPU_ConfigRegion(&MPU_InitStruct); > > /* Enable the MPU */ > HAL_MPU_Enable(MPU_PRIVILEGED_DEFAULT); > } > > If I read the function correctly, it configures the descriptor areas as > non-cacheable and the LwIP heap region > as non bufferable. I call this in hardware_init, which is the first > function called in my Init funnction > > void hardware_init() { > BSP_LED_Init(LED1); > BSP_LED_Init(LED2); > BSP_LED_Init(LED3); > > MPU_Config(); > > /* Initialize the LwIP stack */ > lwip_init(); > > /* Configure the Network interface */ > Netif_Config(); > > } > > I checked everything again and basically the setup appears to be identical > to the example now.. I'm confused that it's not working. > I also supplied the following interrupt function in my C code: > > /** > * @brief This function handles Ethernet interrupt request. > * @param None > * @retval None > */ > void ETH_IRQHandler(void) > { > HAL_ETH_IRQHandler(&EthHandle); > } > > But it appears not to be called.. > Is the irq being registered via the RTEMS interrupt APIs? If not and you are getting an interrupt, I'd wonder why you aren't seeing a spurious interrupt flagged. It shouldn't be installed directly at the hardware level. --joel > Kind Regards > Robin > > On Fri, 29 Jan 2021 at 12:03, Sebastian Huber < > sebastian.hu...@embedded-brains.de> wrote: > >> On 29/01/2021 12:01, Robin Müller wrote: >> >> > The HAL_ETH_Transmit call just times out. If I set the timeout to 20 >> > to HAL_MAX_DELAY, the function will just block indefinitely. >> > Does anyone have an idea why this might happen? >> I would check the memory settings in the MPU for this area. You probably >> need some sort of device memory (uncached). >> >> -- >> embedded brains GmbH >> Herr Sebastian HUBER >> Dornierstr. 4 >> 82178 Puchheim >> Germany >> email: sebastian.hu...@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/ >> >> _______________________________________________ > users mailing list > users@rtems.org > http://lists.rtems.org/mailman/listinfo/users
_______________________________________________ users mailing list users@rtems.org http://lists.rtems.org/mailman/listinfo/users