2018-04-23 08:03 AM
I'm using CubeMx to generate the basic configuration for NUCLEO-H743ZI board;
Default settings are used, FREERTOS and LWIP flags are enabled sys timebase source set to TIM1
as suggested by CubeMx.
Project files are generated for SW4STM32 IDE.
When project is built and debugger is started the default application ends inside 'Default_Handler infinte Loop' after SCB_CleanInvalidateDCache inside LWIp initialization.
MX_LWIP_Init() ---- netif_add() ----low_level_init() which create the ethernetif_input() thread that uses ethernetif_input() ---- low_level_input() ---- SCB_CleanInvalidateDCache()
which causes the unexpected interrupt.
if __DCACHE_PRESENT is set to 0 the
SCB_CleanInvalidateDCache() is effectively skipped but
at this point HAL_ETH_Transmit and HAL_ETH_Receive return HAL_ETH_ERROR_DMA
Anyone has the same issue?
#nucleo-f743zi #stm32h7 #lwip2018-04-27 07:49 AM
>>Anyone has the same issue?
I just debug issues as I encounter them.
Perhaps flushing the cache and write-buffers can trash what you thought should be on the stack, definitely 32-byte alignment issues to be conscious of.
Are you sure it's not trying to get into the Hard Fault Handler, or one of the other MemManage, BusFault or UsageFault routines.
Or if you are missing an IRQ Handler for one of your peripherals.
Here we'd have the Hard Fault Handler outputting diagnostic data so we can see if things crash and die.
2018-06-14 02:16 AM
>>Anyone has the same issue?
I had the same,
To resolve it simply i had to enable data and instr. cache, that wasn't enabled by default by ST-Cube generated project.
Then , now my main code start as follow:
....
....
int main(void)
{ /* USER CODE BEGIN 1 *//* USER CODE END 1 *//* Enable I-Cache-------------------------------------------------------------*/
SCB_EnableICache();/* Enable D-Cache-------------------------------------------------------------*/
SCB_EnableDCache();/* MCU Configuration----------------------------------------------------------*/
/* Reset of all peripherals, Initializes the Flash interface and the Systick. */
HAL_Init();....
....
This seems to solve it.
2018-07-04 10:46 AM
Hello,
Thank you for reporting this issue. This is raised internally for fix.
We apologize for any inconvenience this may have caused you.
With Regards,
Imen
2018-07-05 01:16 AM
Hello
,To fix the Ethernet driver issue:
MX_LWIP_Init() ----netif_add() ----low_level_init()which create theethernetif_input() thread that uses ethernetif_input() ----low_level_input() ----SCB_CleanInvalidateDCache()which causes the unexpected interrupt.
Add a condition on the clean:
if( (SCB->CCR & SCB_CCR_DC_Msk) == SCB_CCR_DC_Msk){ /* Dcache is enabled, clean & invalidate the Dcache */SCB_CleanInvalidateDCache();}�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?
With Regards,
Imen
2018-07-05 01:35 AM
Hi Michele,
This issue has been fixed and will be in the next release, Thanks for reporting the bug