Hello,
I'm debuging an MQX application on Eclipse (Kepler) over SEGGER Jlink probe. The target MCU is the A5 core of Vybrid.
Using the following configuration:
MQX 4.1.0
Eclipse CDT: version 8.3.0.201402142303
GNU ARM Eclipse plug-in : version 3.2.1.201604190915
MQX RTOS Task Aware Debugger for GDB : version 1.0.9
JLinkGDBServerCL.exe: version JLink_V512g
When requesting any of MQX TAD views, communication takes place between the GDB client and server to fetch data, but still the TAD views remain empty and disabled.
**The GDB log shows the following traces**:
!ENTRY org.eclipse.cdt.dsf 4 10005 2016-06-15 14:11:39.063
!MESSAGE Request for monitor: '72^error,msg="No symbol "MQX_USE_LWMEM" in current context."' resulted in an error.
!SUBENTRY 1 org.eclipse.cdt.dsf.gdb 4 10004 2016-06-15 14:11:39.063
!MESSAGE Failed to execute MI command:
-data-evaluate-expression MQX_USE_LWMEM
Error message from debugger back end:
No symbol "MQX_USE_LWMEM" in current context.
!STACK 0
java.lang.Exception: No symbol "MQX_USE_LWMEM" in current context.
at org.eclipse.cdt.dsf.mi.service.command.AbstractMIControl$RxThread.processMIOutput(AbstractMIControl.java:925)
at org.eclipse.cdt.dsf.mi.service.command.AbstractMIControl$RxThread.run(AbstractMIControl.java:754)
!ENTRY org.eclipse.cdt.dsf 4 10005 2016-06-15 14:11:39.606
!MESSAGE Request for monitor: '81^error,msg="No symbol "MQX_USE_LWMSGQ" in current context."' resulted in an error.
!SUBENTRY 1 org.eclipse.cdt.dsf.gdb 4 10004 2016-06-15 14:11:39.606
!MESSAGE Failed to execute MI command:
-data-evaluate-expression MQX_USE_LWMSGQ
Error message from debugger back end:
No symbol "MQX_USE_LWMSGQ" in current context.
!STACK 0
java.lang.Exception: No symbol "MQX_USE_LWMSGQ" in current context.
at org.eclipse.cdt.dsf.mi.service.command.AbstractMIControl$RxThread.processMIOutput(AbstractMIControl.java:925)
at org.eclipse.cdt.dsf.mi.service.command.AbstractMIControl$RxThread.run(AbstractMIControl.java:754)
!ENTRY org.eclipse.cdt.dsf 4 10005 2016-06-15 14:11:40.143
!MESSAGE Request for monitor: '84^error,msg="No symbol "MQX_USE_LWTIMER" in current context."' resulted in an error.
!SUBENTRY 1 org.eclipse.cdt.dsf.gdb 4 10004 2016-06-15 14:11:40.143
!MESSAGE Failed to execute MI command:
-data-evaluate-expression MQX_USE_LWTIMER
Error message from debugger back end:
No symbol "MQX_USE_LWTIMER" in current context.
!STACK 0
java.lang.Exception: No symbol "MQX_USE_LWTIMER" in current context.
at org.eclipse.cdt.dsf.mi.service.command.AbstractMIControl$RxThread.processMIOutput(AbstractMIControl.java:925)
at org.eclipse.cdt.dsf.mi.service.command.AbstractMIControl$RxThread.run(AbstractMIControl.java:754)
!ENTRY org.eclipse.cdt.dsf 4 10005 2016-06-15 14:11:40.646
!MESSAGE Request for monitor: '85^error,msg="No symbol "MQX_USE_MEM" in current context."' resulted in an error.
!SUBENTRY 1 org.eclipse.cdt.dsf.gdb 4 10004 2016-06-15 14:11:40.646
!MESSAGE Failed to execute MI command:
-data-evaluate-expression MQX_USE_MEM
Error message from debugger back end:
No symbol "MQX_USE_MEM" in current context.
!STACK 0
java.lang.Exception: No symbol "MQX_USE_MEM" in current context.
at org.eclipse.cdt.dsf.mi.service.command.AbstractMIControl$RxThread.processMIOutput(AbstractMIControl.java:925)
at org.eclipse.cdt.dsf.mi.service.command.AbstractMIControl$RxThread.run(AbstractMIControl.java:754)
!ENTRY org.eclipse.cdt.dsf 4 10005 2016-06-15 14:11:41.352
!MESSAGE Request for monitor: '107^error,msg="No symbol "_mqxlite_version_number" in current context."' resulted in an error.
!SUBENTRY 1 org.eclipse.cdt.dsf.gdb 4 10004 2016-06-15 14:11:41.352
!MESSAGE Failed to execute MI command:
-data-evaluate-expression _mqxlite_version_number
Error message from debugger back end:
No symbol "_mqxlite_version_number" in current context.
!STACK 0
java.lang.Exception: No symbol "_mqxlite_version_number" in current context.
at org.eclipse.cdt.dsf.mi.service.command.AbstractMIControl$RxThread.processMIOutput(AbstractMIControl.java:925)
at org.eclipse.cdt.dsf.mi.service.command.AbstractMIControl$RxThread.run(AbstractMIControl.java:754)
**And the Tad log shows the following traces**
(13:55:45.369) INFO: [TadState] TAD state init (NONE)
(14:11:01.105) INFO: [TadModel] DSF session ID 0 has started
(14:11:15.820) INFO: [TadState] TAD state changed from DEBUG_STARTED to DEBUG_INIT_0 (Suspended, USER_REQUEST)
(14:11:25.113) INFO: [TadState] TAD state changed from DEBUG_INIT_0 to DEBUG_INIT_1 (Resumed, USER_REQUEST)
(14:11:25.441) INFO: [TadState] TAD state changed from DEBUG_INIT_1 to DEBUG_SUSPENDED (Suspended, BREAKPOINT)
(14:11:29.735) INFO: [TadState] TAD state changed from DEBUG_SUSPENDED to DEBUG_RESUMED (Resumed, STEP)
(14:11:38.761) INFO: [TadState] TAD state changed from DEBUG_RESUMED to READY (Suspended, SIGNAL)
(14:11:39.560) ReadingException: com.freescale.mqx.gdb.tad.model.globalstatus.TadGlobalStatusFactory.whichTadViewsAreEnabled() at 84.line "readIntVariableSafely(MQX_USE_LWMEM)"
(14:11:39.594) ReadingException: com.freescale.mqx.gdb.tad.model.globalstatus.TadGlobalStatusFactory.whichTadViewsAreEnabled() at 86.line "readIntVariableSafely(_mqx_kernel_data->KERNEL_COMPONENTS7)"
(14:11:40.095) ReadingException: com.freescale.mqx.gdb.tad.model.globalstatus.TadGlobalStatusFactory.whichTadViewsAreEnabled() at 90.line "readIntVariableSafely(MQX_USE_LWMSGQ)"
(14:11:40.633) ReadingException: com.freescale.mqx.gdb.tad.model.globalstatus.TadGlobalStatusFactory.whichTadViewsAreEnabled() at 92.line "readIntVariableSafely(MQX_USE_LWTIMER)"
(14:11:40.860) INFO: [TadState] TAD state changed from READY to DEBUG_RESUMED (Resumed, STEP)
(14:11:41.051) INFO: [TadState] TAD state changed from DEBUG_RESUMED to READY (Suspended, STEP)
(14:11:41.135) ReadingException: com.freescale.mqx.gdb.tad.model.globalstatus.TadGlobalStatusFactory.whichTadViewsAreEnabled() at 93.line "readIntVariableSafely(MQX_USE_MEM)"
(14:11:41.171) ReadingException: com.freescale.mqx.gdb.tad.model.globalstatus.TadGlobalStatusFactory.whichTadViewsAreEnabled() at 94.line "readIntVariableSafely(_mqx_kernel_data->KERNEL_COMPONENTS3)"
(14:11:41.839) ReadingException: com.freescale.mqx.gdb.tad.model.globalstatus.TadGlobalStatusFactory.getGlobalStatus() at 33.line "readLongVariableSafely(_mqxlite_version_number)"
(14:11:41.852) INFO: [TadGlobalStatusFactory] MQX data valid (version 4.1.0 (0x04010000))
(14:11:41.852) INFO: [TadModel$3] Loading of TAD Global Status took 3083 ms
Has anyone any idea about this problem?
Thanks.
Mohamed.
已解决! 转到解答。
Hi Mohamed,
MQX for Vybrid is a special version released only for this target and TAD (Task Aware Debugger) is not supported with GNU. As you can see in the attached document 'MQX_GNU_Getting_Started' it does not mention TAD. On the other hand DS5 does support TAD as you can see in 'MQX_DS5_Getting_Started', but this TAD was developed by ARM Ltd and as described in documentation any issue should be addressed directly with them. Actually, TAD for GDB is only supported in KDS for Kinetis devices, this is available in link below. So at the end of the day the combination of Vybrid + GNU + TAD + GDB is not supported by NXP because we have not developed or tested this environment. If you have any NXP reference where the combination above is documented please let me know.
Regads,
Carlos
-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------
> Actually, TAD for GDB is only supported in KDS for Kinetis devices
I'm using TAD on Vybrid VF61, debugging M4 running MQX 4.2., using GDB, Eclipse, Segger.
I took the TAD plugin from Kinetis. How much of TAD is working for me i dont' know, but I do get threads' info, stack usages, statuses, etc.
I know original question was about A5 and MQX 4.1, but anyhow
Hi Mohamed,
MQX for Vybrid is a special version released only for this target and TAD (Task Aware Debugger) is not supported with GNU. As you can see in the attached document 'MQX_GNU_Getting_Started' it does not mention TAD. On the other hand DS5 does support TAD as you can see in 'MQX_DS5_Getting_Started', but this TAD was developed by ARM Ltd and as described in documentation any issue should be addressed directly with them. Actually, TAD for GDB is only supported in KDS for Kinetis devices, this is available in link below. So at the end of the day the combination of Vybrid + GNU + TAD + GDB is not supported by NXP because we have not developed or tested this environment. If you have any NXP reference where the combination above is documented please let me know.
Regads,
Carlos
-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------
Hi Carlos,
thank you for your response, actually I was trying to use this setup despite it isn't described anywhere.
I assumed that, if the TAD plugin was free to be integrated in Eclipse CDT, it would communicate with the GDB client as it is the case in other Eclipse based IDE like the ARM DS-5. Unfortunately that didn't work so far.
Regards,
Mohamed.