Dear community,
the system I am using is a Phytec PCM052, Kernel 3.13, MQX BSP TWRVF65GS10 M4, U-Boot 2013/2017
The first problem was a kernel CRC error code when booting with U-Boot 2013.
I found out that U-Boot shares some old NAND flash kernel drivers that use different ECC modes.
Upgrading to U-Boot 2017 "fixed" the issue, but caused a problem with MQX as my M4 code no longer runs at all, nor does the idle task.
Some error searches showed that in the function _mqx() after a call of _bsp_enable_card() the dispatch function is triggered about one second later.
(Timer Dispatch.S _pend_svc, /* 0x0E 0x00000038 - ivINT_PendableSrvReq */)
This function only finds empty task queues and continues to run endlessly.
During the normal execution of _mqx(), the idle task is created and queued, and then the dispatcher is called.
It seems that U-Boot 2017 changes some settings that affect the M4.
Unlike U-Boot 2013, there is now a function called
"m4go - Starting the secondary Cortex-M4 from the scatter file image".
Does anyone of you have any idea where exactly I could look further besides debugging U-Boot ?
Hello,
This could be due to low power routine, Looking at mqx/examples/lowpower:
Low power driver (io/lpm/lpm.c) defines a routine
_mqx_uint _lpm_idle_sleep_setup
(
/* [IN] Whether to turn on/off the idle sleep feature */
boolean idle_sleep
)
that restarts Idle task (if needed) with updated parameter.
I only need to call _lpm_idle_sleep_setup(TRUE) at beginnning of my task to allow entering wait mode.
However MQX is not supported anymore with uboot2017, do not know exactly whats the problem is.
Regards