UC/Probe не запрашивает необходимые данные

Прежде всего, я должен извиниться за большой объем данных, которые я добавил в свой пост. Но так как я не могу понять, в чем и где именно заключается моя проблема, я думаю, что все это необходимо, чтобы объяснить себя.

Как я объяснил в предыдущем посте, я пытаюсь заставить мой Embedded C Project (Infineon XE169 - C166 Family) связаться с uC/Probe. Но до сих пор я сталкиваюсь с несколькими проблемами. У меня была проблема с указателем, которая в настоящее время исправлена ​​с помощью грязного обходного пути, поэтому ответ на этот пост придет позже, когда я получу чистое исправление (предыдущая проблема: выяснить, находится ли объект по определенному адресу это указатель)

Поскольку я (грязно) исправил эту проблему, все данные, передаваемые между uC / Probe и встроенным программным обеспечением, кажутся правильными. Но, однако, UC / Probe все еще не показывает данные.

При запуске uC / Probe с экраном Kernell Awareness будет отображаться правильное количество строк в таблице, это то же количество строк, что и для созданных задач (это можно увидеть в данных журнала ниже) Emtpy UCProbe задачи

Эта же проблема возникает и в семафорах, мьютексах и других связанных с uC/OS III "объектах". Страницы Константы и Разное отображаются правильно с правильной информацией.

Это данные, передаваемые между Embedded C Software и uC/Probe.

Полностью слева - данные от uC / Probe до встроенной платы, а данные с вкладкой перед ними - от Embedded Board до uC/Probe.

uC / Probe начинается с запроса размеров очереди RX и TX, порядкового номера встроенного чипа, использования ЦП и некоторой дополнительной информации, которая требуется, я попытался добавить за каждой строкой данных, что именно запрашивается и что отвечает.

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 /

Последнее сообщение выше - это ответ от встроенной платы на uC / Probe со всеми данными запрошенного задания (OS_TCB).

Ниже я извлек сообщение, и весь OS_TCB, кажется, отправлено правильно.

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

Но после того, как эти данные отправлены в uC / Probe, они, похоже, ничего не делают с этими данными, единственные данные, передаваемые между двумя программами, теперь следующие:

Он продолжает запрашивать количество задач и указатель текущей задачи и ничего больше. Я только добавил 2 цикла этого, но он продолжает запрашивать эти данные до бесконечности.

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

Поэтому я надеюсь, что кто-то может сказать мне, если что-то не так в приведенном выше сообщении, или почему uC / Probe зависает в вышеуказанном цикле запроса количества задач и указателя текущей задачи? И почему он не запрашивает информацию указателя, такую ​​как имя задачи, и продолжает запрашивать данные других задач?

0 ответов

Другие вопросы по тегам