uC/Probe doesn't request the needed data

0

First of all I have to apologize for the big amount of data I've added in my post. But as I can't figure out what or where exactly my problem lies I think all of it is needed to explain myself.

As I've explained in a previous post, I'm trying to get my Embedded C Project (Infineon XE169 - C166 Family) to communicate with uC/Probe. But until now I'm running into multiple problems. The problem I had before was a pointer problem, which currently is fixed with a dirty workaround, so the answer to that post will come later when I've got a clean fix (The previous issue: Find out if an object on a specific address is a pointer )

Since I've now (dirty) fixed that issue, all data communicated between uC/Probe and the Embedded software seem to be correct. But however uC/Probe is still not showing data.

When starting uC/Probe with the Kernell Awareness screen it will show the correct number of rows in the table, this is the same number of rows as there are tasks created (This can be seen in the log data below) Emtpy uCProbe tasks

This same problem also occurs on the Semaphores, Mutexes and other uC/OS III related "Objects". The Constants and Miscellaneous pages are shown correct with the correct information.

This is the data communicated between the Embedded C Software and uC/Probe

The rows completely on the left is data from uC/Probe to the Embedded Board and the data with a tab in front of it is data from the Embedded Board to uC/Probe

uC/Probe starts with requesting the RX and TX queue sizes, the Endianness of the Embedded chip, CPU Usage and some more information that is needed, I've tried to add behind every data row what exactly is requested and what is responded.

uCPr 4 0 01 00 01 01 00 /                           FMT_RX_QUERY - MAX_RX_SIZE
     uCPr 8 0 01 80 01 02 D0 00 00 00 00 /              MAX_RX_SIZE = 0xD0 = 208
uCPr 4 0 01 00 02 01 00 /                           FMT_RX_QUERY - MAX_TX_SIZE
     uCPr 8 0 01 80 01 02 D0 00 00 00 00 /              MAX_TX_SIZE = 0xD0 = 208
uCPr 4 0 01 00 01 02 00 /                           FMT_RX_QUERY - Endianness Test
     uCPr 8 0 01 80 01 02 78 56 34 12 00 /              Endianness Little Endian
uCPr 8 0 02 00 02 00 50 3F 61 00 00 /               Request OSStatTaskCPUUsage  (Address: 0x00613F50)
     uCPr 6 0 02 80 01 02 BC 23 00 /                    CPU Usage = 0x23BC = 9148 = 91.48%
uCPr 8 0 02 00 02 00 54 3F 61 00 00 /               Request OSTaskQty           (Address: 0x00613F54)
     uCPr 6 0 02 80 01 02 19 00 00 /                    Number of Tasks = 0x0019 = 25 Tasks
uCPr 8 0 02 00 01 00 73 1A C1 00 00 /               Request OSDbg_DbgEn         (Address: 0x00C11A73)
     uCPr 5 0 02 80 01 02 01 00 /                       Debug Enabled = 0x01 = 1
uCPr 8 0 02 00 04 00 DC 3E 61 00 00 /               Request OSTCBCurPtr         (Address: 0x613EDC)
     uCPr 8 0 02 80 01 02 E6 1F 61 00 00 /              Current Task Pointer: 0x00611FE6 = Valid TCB Location = ProbeTCPIP_OS_Task
uCPr 8 0 02 00 02 00 88 2F C1 00 00 /               Request OSDbg_TCBSize
     uCPr 6 0 02 80 01 02 BA 00 00 /                    TCB Size = 0x00BA = 186 Bytes large
uCPr 8 0 02 00 01 00 73 1A C1 00 00 /               Request OSDbg_DbgEn         (Address: 0x00C11A73)
     uCPr 5 0 02 80 01 02 01 00 /                       Debug Enabled = 0x01 = 1
uCPr 8 0 02 00 04 00 C0 3E 61 00 00 /               Request OSTaskDbgListPtr    (Address: 0x613EC0)
     uCPr 8 0 02 80 01 02 1C B1 60 00 00 /              Debug List Pointer: 0x0060B11C = Valid TCB Location = TcpIP S:1 Task (Application Task)
uCPr 8 0 02 00 01 00 73 1A C1 00 00 /               Request OSDbg_DbgEn         (Address: 0x00C11A73)
     uCPr 5 0 02 80 01 02 01 00 /                       Debug Enabled = 0x01 = 1
uCPr 8 0 02 00 02 00 54 3F 61 00 00 /               Request OSTaskQty           (Address: 0x00613F54)
     uCPr 6 0 02 80 01 02 19 00 00 /                    Number of Tasks = 0x0019 = 25 Tasks
uCPr 8 0 02 00 04 00 DC 3E 61 00 00 /               Request OSTCBCurPtr         (Address: 0x00613EDC)
     uCPr 8 0 02 80 01 02 E6 1F 61 00 00 /              Current Task Pointer: 0x611FE6 = Valid TCB Location = ProbeTCPIP_OS_Task
uCPr 8 0 02 00 BA 00 1C B1 60 00 00 /               Request Item where OSTaskDbgListPtr is pointing to TcpIp S:1 Task   (Address: 0x0060B11C)
     uCPr 190 0 02 80 01 02 70 C5 00 00 00 00 80 43 61 00 4E C3 00 00 00 00 00 00 00 00 D2 12 61 00 D4 9E 60 00 E0 3C 61 00 02 C3 0A 61 C0 00 16 B1 60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 0E 0E 00 00 00 00 00 80 01 00 00 03 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 0A 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 3B 17 00 00 00 00 00 00 86 FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 6A 00 00 00 16 01 00 00 00 00 00 00 D4 9E 60 00 9C 2F C1 00 00 /

The last message above is the response from the Embedded board to uC/Probe with all data of the requested task (OS_TCB).

Underneath I've extracted the message and the whole OS_TCB seems to be sent correct.

uCPr          PREFIX
190 0 02 80 01 02 Read 190 bytes (0xBE), 02 08 = 0x8002 = FMT_TX_RD, 01 = STATUS_OK, 02 = Packet Modifier = Terminal Exec Done

70 C5         *StkPtr                       - Pointer to current top of stack - only 2 bytes long because in near memory                - TcpIp_Task_Stk    (Address: 0xC570)
00 00 00 00   *ExtPtr                       - Pointer to user definable data for TCB extension  --Not in uC/Probe(void*)
80 43 61 00   *NamePtr                      - Pointer to the task name                                                                  - "TcpIP S:1"       (Address: 0x00614380)
4E C3         *StkLimitPtr                  - Pointer used to set stack 'watermark' limit - only 2 bytes long because in near memory    - In TcpIp_Task_Stk (Address: 0xC34E)
00 00 00 00   *NextPtr                      - Pointer to next TCB in the TCB list 
00 00 00 00   *PrevPtr                      - Pointer to the previous TCB in the TCB list
D2 12 61 00   *TickNextPtr                                                                                                              - OsSMT_ErrorTask (Application Task) (Address: 0x006112D2)
D4 9E 60 00   *TickPrevPtr                                                                                                              - TcpIPS2Task (Application Task) (Address: 0x00609ED4)
E0 3C 61 00   *TickListPtr                  - Pointer to tick list if task is in a tick list                                            - OSTickListDly     (Address: 0x00613CE0)
02 C3         *StkBasePtr                   - Pointer to base address of stack - only 2 bytes long because in near memory               - In TcpIP_Task_Stk (Address: 0xC302)
0A 61 C0 00   TaskEntryAddr                 - Pointer to task entry point address                                                       - TLC_Task (Task Function Address) (Address: 0x00C0610A)
16 B1 60 00   *TaskEntryArg                 - Argument passed to task when it was created       --not in uC/Probe (void*)               - Argument of TLC_Task function, Pointer to variable SMT_NODE (Address: 0x0060B116)
00 00 00 00   *PendNextPtr                  - Pointer to next TCB in pend list
00 00 00 00   *PendPrevPtr                  - Pointer to previous TCB in pend list
00 00 00 00   *PendObjPtr                   - Pointer to object pended on
00            PendOn                        - Indicates what task is pending only
00            PendStatus                    - Pend status
01            TaskState                     - See OS_TASK_STATE_xxx                                                                     - Task State = 0x01 = OS_TASK_STATE_DLY
0E            Prio                          - Task priority(0 == highest)                                                               - Task Priority = 0x0E = 14
0E            BasePrio                      - Base priority (Not inherited)                                                             - Task Base Priority = 0x0E = 14
00              Offset
00 00 00 00   *MutexGrpHeadPtr              - Owned mutex group head pointer
80 01 00 00   StkSize                       - Size of task stack (in number of stack elements)                                          - Stacksize = 0x00000180 = 384 bytes
03 00         Opt                           - Task options as passed by OSTaskCreate()                                                  - OS_OPT_TASK_STK_CHK (Enable stack checking for the task) and OS_OPT_TASK_STK_CLR (Clear the stack when the task is created)
00 00 00 00   SemCtr                        - Task specific semaphore counter
01 00 00 00   TickRemain                    - Number of ticks remaining (updated by OS_TickTask)                                        - 0x00000001
00 00 00 00   TickCtrPrev                   - Used by OSTimeDlyXX() in PERIODIC mode
00 00 00 00   TimeQuanta
0A 00 00 00   TimeQuantaCtr                                                                                                             - 0x0000000A = 10
00 00 00 00   *MsgPtr                       - Message Received                                  --not in uC/Probe (void)
00 00         MsgSize   
00 00 00 00 00 00 00 00 00 00 00 00 00 00 MsgQ - Message queue associated with task   
00 00 00 00   MsgQPendTime                  - Time it took for signal to be received
00 00 00 00   MsgQPendTimeMax               - Max amout of time it took for signal to be received
00 00 00 00   RegTbl                        - Task Specific registers
00 00 00 00   FlagsPend                     - Event flag(s) to wait on
00 00 00 00   FlagsRdy                      - Event flags that made task ready to run
00 00         FlagsOpt                      - Options (See OS_OPT_FLAG_xxx)
00            SuspendCtr                    - Nesting counter for OSTaskSuspend
00              Offset
00 00         CPUUsage                      - CPU Usage of task (0.00 - 100.00%)                                                        - 0x0000 = 0 = 0%
00 00         CPUUsageMax                   - CPU Usage of task (0.00 - 100.00%) peak                                               - 0x0000 = 0 = 0%
3B 17 00 00   CtxSwCtr                      - Number of time the task was switched in                                                   - 0x0000173B = 5947 Context switches
00 00 00 00   CyclesDelta                   - value of OS_TS_GET() - .CyclesStart
86 FF 00 00   CyclesStart                   - Snapshot of cycle counter at start of task resumption                                 - 0x0000FF86 = 65414
00 00 00 00   CyclesTotal                   - Total number of # of cycles the task has been running 
00 00 00 00   CyclesTotalPrev               - Snapshot of previous # of cycles 
00 00 00 00   SemPendTime                   - Time it took for signal to be received
00 00 00 00   SemPendTimeMax                - Max amount of time it took for signal to be received 
6A 00 00 00   StkUsed                       - Number of stack elements used from the stack                                          - Used = 0x0000006A = 106 bytes
16 01 00 00   StkFree                       - Number of stack elements free on the stack                                            - Free = 0x00000116 = 278 bytes
00 00 00 00   *DbgPrevPtr                                                                                                               - No Previous Task TCB (Nullpointer)
D4 9E 60 00   *DbgNextPtr                                                                                                               - TcpIPS2Task (Application Task) (Address: 0x00609ED4)
9C 2F C1 00   *DbgNamePtr                                                                                                               - " ", Empty because task is not pending on Queue or Semaphore (Address 0x00C12F9C)
00 /          POSTFIX

But after this data is sent to uC/Probe it doesn't seem to do anything with this data, the only data sent between the 2 programs is now the following:

It keeps requesting the Number of tasks and the Current Task pointer and nothing else. I've only added 2 loops of this, but it keeps requesting this data till eternity.

uCPr 8 0 02 00 02 00 54 3F 61 00 00 /               Request OSTaskQty           (Address: 0x00613F54)
     uCPr 6 0 02 80 01 02 19 00 00 /                    Number of Tasks = 0x0019 = 25 Tasks
uCPr 8 0 02 00 04 00 DC 3E 61 00 00 /               Request OSTCBCurPtr         (Address: 0x00613EDC)
     uCPr 8 0 02 80 01 02 E6 1F 61 00 00 /              Current Task Pointer: 0x611FE6 = Valid TCB Location = ProbeTCPIP_OS_Task
uCPr 8 0 02 00 02 00 54 3F 61 00 00 /               Request OSTaskQty           (Address: 0x00613F54)
     uCPr 6 0 02 80 01 02 19 00 00 /                    Number of Tasks = 0x0019 = 25 Tasks
uCPr 8 0 02 00 04 00 DC 3E 61 00 00 /               Request OSTCBCurPtr         (Address: 0x00613EDC)
     uCPr 8 0 02 80 01 02 E6 1F 61 00 00 /              Current Task Pointer: 0x611FE6 = Valid TCB Location = ProbeTCPIP_OS_Task

So I'm hoping someone could tell me if there is something wrong in the above communication, or why uC/Probe is hanging in the above loop of requesting the Number of tasks and current task pointer? And why it isn't requesting the pointer information like the name of the task and continuing to requesting data of the other tasks?

ucos
micrium
infineon
asked on Stack Overflow Mar 19, 2018 by Roel Balink • edited Mar 23, 2018 by Roel Balink

0 Answers

Nobody has answered this question yet.


User contributions licensed under CC BY-SA 3.0