⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 probe_com.txt

📁 ucos2.86版本结合STM板极支持包
💻 TXT
📖 第 1 页 / 共 4 页
字号:
;;;1329   }
000246  bd30              POP      {r4,r5,pc}
;;;1330   
                          ENDP

                  ProbeCom_CmdSimpleRd PROC
;;;813                                              CPU_INT16U   tx_buf_sz)
;;;814    {
000248  e92de92d          PUSH     {r0-r8,lr}
00024c  461e              MOV      r6,r3
;;;815        CPU_ADDR     addr;
;;;816        CPU_INT16U   nbytes;
;;;817        CPU_INT08U   error;
;;;818    
;;;819    
;;;820        addr   = 0;
00024e  2700              MOVS     r7,#0
;;;821        nbytes = 0;
000250  2400              MOVS     r4,#0
;;;822        error  = PROBE_COM_STATUS_OK;
000252  2501              MOVS     r5,#1
;;;823    
;;;824    
;;;825        if (rx_pkt_sz == 8) {                                           /* If RX data segment is the expected size              */
000254  2a08              CMP      r2,#8
000256  d10c              BNE      |L1.626|
;;;826                                                                        /*        =  2      (= Rx header size )                 */
;;;827                                                                        /*        +  2      (= Number of bytes)                 */
;;;828                                                                        /*        +  4      (= Address        )                 */
;;;829    
;;;830            nbytes = ProbeCom_GetINT16U(&rx_buf);                       /*  (a) Read the number of bytes to return              */
000258  4668              MOV      r0,sp
00025a  f7fff7ff          BL       ProbeCom_GetINT16U
00025e  4604              MOV      r4,r0
;;;831            addr   = (CPU_ADDR)ProbeCom_GetINT32U(&rx_buf);             /*  (b) Read the memory address                         */
000260  4668              MOV      r0,sp
000262  f7fff7ff          BL       ProbeCom_GetINT32U
000266  4607              MOV      r7,r0
;;;832    
;;;833            if (nbytes + PROBE_COM_SIZE_TX_HEADER > tx_buf_sz) {        /*  (c) If TX packet will NOT fit in buffer             */
000268  1d20              ADDS     r0,r4,#4
00026a  42b0              CMP      r0,r6
00026c  d902              BLS      |L1.628|
;;;834                error = PROBE_COM_STATUS_TX_PKT_TOO_LARGE;              /*          (i) Error                                   */
00026e  25fd              MOVS     r5,#0xfd
000270  e000              B        |L1.628|
                  |L1.626|
;;;835            }
;;;836    
;;;837        } else {                                                        /* If RX data segment is NOT the expected size          */
;;;838    
;;;839            error = PROBE_COM_STATUS_RX_PKT_WRONG_SIZE;
000272  25fe              MOVS     r5,#0xfe
                  |L1.628|
;;;840        }
;;;841    
;;;842        if (error != PROBE_COM_STATUS_OK) {                             /* Error                                                */
000274  2d01              CMP      r5,#1
000276  d006              BEQ      |L1.646|
;;;843            return (ProbeCom_CmdError(tx_buf, error));
000278  4629              MOV      r1,r5
00027a  9801              LDR      r0,[sp,#4]
00027c  f7fff7ff          BL       ProbeCom_CmdError
000280  b004              ADD      sp,sp,#0x10
000282  e8bde8bd          POP      {r4-r8,pc}
                  |L1.646|
;;;844    
;;;845        } else {                                                        /* No error                                             */
;;;846    #if (PROBE_COM_STAT_EN == DEF_ENABLED)
;;;847            ProbeCom_TxSymCtr++;                                        /*  (a) Increment transmit symbol counter               */
000286  485b              LDR      r0,|L1.1012|
000288  6881              LDR      r1,[r0,#8]  ; ProbeCom_TxSymCtr
00028a  1c49              ADDS     r1,r1,#1
00028c  6081              STR      r1,[r0,#8]  ; ProbeCom_TxSymCtr
;;;848            ProbeCom_TxSymByteCtr += nbytes;
00028e  68c1              LDR      r1,[r0,#0xc]  ; ProbeCom_TxSymByteCtr
000290  4421              ADD      r1,r1,r4
000292  60c1              STR      r1,[r0,#0xc]  ; ProbeCom_TxSymByteCtr
;;;849    #endif
;;;850                                                                        /*  (b) Save TX data segment header                     */
;;;851            ProbeCom_StoINT16U(&tx_buf, PROBE_COM_FMT_TX_SIMPLE_RD);    /*          (i) TX packet format                        */
000294  f248f248          MOV      r1,#0x8002
000298  a801              ADD      r0,sp,#4
00029a  f7fff7ff          BL       ProbeCom_StoINT16U
;;;852            ProbeCom_StoINT8U( &tx_buf, PROBE_COM_STATUS_OK);           /*         (ii) Target status                           */
00029e  2101              MOVS     r1,#1
0002a0  a801              ADD      r0,sp,#4
0002a2  f7fff7ff          BL       ProbeCom_StoINT8U
;;;853            ProbeCom_StoINT8U( &tx_buf, ProbeCom_PktModifier());        /*        (iii) Modifier                                */
0002a6  f7fff7ff          BL       ProbeCom_PktModifier
0002aa  4601              MOV      r1,r0
0002ac  a801              ADD      r0,sp,#4
0002ae  f7fff7ff          BL       ProbeCom_StoINT8U
;;;854    
;;;855            Mem_Copy((void *)tx_buf, (void *)addr, nbytes);             /*  (c) Save TX data segment data                       */
0002b2  4622              MOV      r2,r4
0002b4  4639              MOV      r1,r7
0002b6  9801              LDR      r0,[sp,#4]
0002b8  f7fff7ff          BL       Mem_Copy
;;;856    
;;;857            return (nbytes + PROBE_COM_SIZE_TX_HEADER);                 /*  (d) Return TX data segment size                     */
0002bc  1d20              ADDS     r0,r4,#4
0002be  b280              UXTH     r0,r0
;;;858                                                                        /*        =  nbytes (= Tx data   size)                  */
;;;859                                                                        /*        +  4      (= Tx header size)                  */
;;;860        }
;;;861    }
0002c0  b004              ADD      sp,sp,#0x10
0002c2  e8bde8bd          POP      {r4-r8,pc}
;;;862    
                          ENDP

                  ProbeCom_StoINT32U PROC
;;;1358   static  void  ProbeCom_StoINT32U (CPU_INT08U **buf, CPU_INT32U data)
;;;1359   {
0002c6  b530              PUSH     {r4,r5,lr}
0002c8  4605              MOV      r5,r0
0002ca  460c              MOV      r4,r1
;;;1360       ProbeCom_StoINT16U(buf, data & 0x0000FFFFL);
0002cc  b2a1              UXTH     r1,r4
0002ce  4628              MOV      r0,r5
0002d0  f7fff7ff          BL       ProbeCom_StoINT16U
;;;1361       ProbeCom_StoINT16U(buf, data >> 16);
0002d4  0c21              LSRS     r1,r4,#16
0002d6  4628              MOV      r0,r5
0002d8  e8bde8bd          POP      {r4,r5,lr}
0002dc  e7fe              B        ProbeCom_StoINT16U
;;;1362   }
                          ENDP

                  ProbeCom_CmdQuery PROC
;;;683                                           CPU_INT16U   tx_buf_sz)
;;;684    {
0002de  b57f              PUSH     {r0-r6,lr}
;;;685        CPU_INT16U   query;
;;;686        CPU_INT16U   nbytes;
;;;687        CPU_INT08U   error;
;;;688    
;;;689    
;;;690        query  = 0;
0002e0  2600              MOVS     r6,#0
;;;691        nbytes = 0;
0002e2  2400              MOVS     r4,#0
;;;692        error  = PROBE_COM_STATUS_OK;
0002e4  2501              MOVS     r5,#1
;;;693    
;;;694    
;;;695        if (rx_pkt_sz == 4) {                                           /* If RX data segment is the expected size              */
0002e6  2a04              CMP      r2,#4
0002e8  d10e              BNE      |L1.776|
;;;696                                                                        /*        =  2      (= Rx header size)                  */
;;;697                                                                        /*        +  2      (= Query         )                  */
;;;698    
;;;699            query = ProbeCom_GetINT16U(&rx_buf);                        /*  (a) Read the query                                  */
0002ea  4668              MOV      r0,sp
0002ec  f7fff7ff          BL       ProbeCom_GetINT16U
0002f0  4606              MOV      r6,r0
;;;700    
;;;701            switch (query) {
0002f2  f5a6f5a6          SUB      r0,r6,#0x100
0002f6  3801              SUBS     r0,#1
0002f8  d007              BEQ      |L1.778|
0002fa  2801              CMP      r0,#1
0002fc  d005              BEQ      |L1.778|
0002fe  f5b0f5b0          CMP      r0,#0xf00
000302  d002              BEQ      |L1.778|
;;;702                case PROBE_COM_QUERY_MAX_RX_SIZE:
;;;703                case PROBE_COM_QUERY_MAX_TX_SIZE:
;;;704                case PROBE_COM_QUERY_FMT_SUPPORT:
;;;705                     break;
;;;706    
;;;707                default:
;;;708                     error = PROBE_COM_STATUS_QUERY_NOT_SUPPORTED;
000304  25fc              MOVS     r5,#0xfc
;;;709                     break;
000306  e000              B        |L1.778|
                  |L1.776|
;;;710            }
;;;711    
;;;712        } else {                                                        /* If RX data segment is NOT the expected size          */
;;;713    
;;;714            error = PROBE_COM_STATUS_RX_PKT_WRONG_SIZE;
000308  25fe              MOVS     r5,#0xfe
                  |L1.778|
;;;715        }
;;;716    
;;;717        if (error != PROBE_COM_STATUS_OK) {                             /* Error                                                */
00030a  2d01              CMP      r5,#1
00030c  d005              BEQ      |L1.794|
;;;718            return (ProbeCom_CmdError(tx_buf, error));
00030e  4629              MOV      r1,r5
000310  9801              LDR      r0,[sp,#4]
000312  f7fff7ff          BL       ProbeCom_CmdError
000316  b004              ADD      sp,sp,#0x10
;;;719    
;;;720        }
;;;721    
;;;722                                                                        /* No error                                             */
;;;723        ProbeCom_StoINT16U(&tx_buf, PROBE_COM_FMT_TX_QUERY);            /*  (a) TX packet format                                */
;;;724        ProbeCom_StoINT8U( &tx_buf, PROBE_COM_STATUS_OK);               /*  (b) Target status                                   */
;;;725        ProbeCom_StoINT8U( &tx_buf, ProbeCom_PktModifier());            /*  (c) Modifier                                        */
;;;726    
;;;727                                                                        /*  (d) Save TX data segment data                       */
;;;728        switch (query) {
;;;729    
;;;730            case PROBE_COM_QUERY_MAX_RX_SIZE:
;;;731                 ProbeCom_StoINT32U(&tx_buf, PROBE_COM_RX_MAX_SIZE);
;;;732                 nbytes  = 4;
;;;733                 break;
;;;734    
;;;735            case PROBE_COM_QUERY_MAX_TX_SIZE:
;;;736                 ProbeCom_StoINT32U(&tx_buf, PROBE_COM_TX_MAX_SIZE);
;;;737                 nbytes  = 4;
;;;738                 break;
;;;739    
;;;740            case PROBE_COM_QUERY_FMT_SUPPORT:
;;;741                 ProbeCom_StoINT16U(&tx_buf, PROBE_COM_FMT_RX_QUERY      );
;;;742                 ProbeCom_StoINT16U(&tx_buf, PROBE_COM_FMT_RX_SIMPLE_RD  );
;;;743                 nbytes  = 4;
;;;744    #if (PROBE_COM_SUPPORT_WR == DEF_TRUE)
;;;745                 ProbeCom_StoINT16U(&tx_buf, PROBE_COM_FMT_RX_SIMPLE_WR  );
;;;746                 nbytes += 2;
;;;747    #endif
;;;748                 ProbeCom_StoINT16U(&tx_buf, PROBE_COM_FMT_RX_MULTIPLE_RD);
;;;749                 nbytes += 2;
;;;750    #if (PROBE_COM_SUPPORT_STR == DEF_TRUE)
;;;751                 ProbeCom_StoINT16U(&tx_buf, PROBE_COM_FMT_RX_STR_GET);
;;;752                 nbytes += 2;
;;;753    #endif
;;;754                 break;
;;;755    
;;;756            default:
;;;757                 break;
;;;758        }
;;;759    
;;;760        return (nbytes + PROBE_COM_SIZE_TX_HEADER);                     /*  (e) Return TX data segment size                     */
;;;761                                                                        /*        =  nbytes (= Tx data   size)                  */
;;;762                                                                        /*        +  4      (= Tx header size)                  */
;;;763    }
000318  bd70              POP      {r4-r6,pc}
                  |L1.794|
00031a  f248f248          MOV      r1,#0x8001
00031e  a801              ADD      r0,sp,#4
000320  f7fff7ff          BL       ProbeCom_StoINT16U
000324  2101              MOVS     r1,#1
000326  a801              ADD      r0,sp,#4
000328  f7fff7ff          BL       ProbeCom_StoINT8U
00032c  f7fff7ff          BL       ProbeCom_PktModifier
000330  4601              MOV      r1,r0
000332  a801              ADD      r0,sp,#4
000334  f7fff7ff          BL       ProbeCom_StoINT8U
000338  f5a6f5a6          SUB      r0,r6,#0x100
00033c  3801              SUBS     r0,#1
00033e  d019              BEQ      |L1.884|
000340  2801              CMP      r0,#1
000342  d01d              BEQ      |L1.896|
000344  f5b0f5b0          CMP      r0,#0xf00
000348  d110              BNE      |L1.876|
00034a  2101              MOVS     r1,#1
00034c  a801              ADD      r0,sp,#4
00034e  f7fff7ff          BL       ProbeCom_StoINT16U
000352  2102              MOVS     r1,#2
000354  a801              ADD      r0,sp,#4
000356  f7fff7ff          BL       ProbeCom_StoINT16U
00035a  2107              MOVS     r1,#7
00035c  a801              ADD      r0,sp,#4
00035e  f7fff7ff          BL       ProbeCom_StoINT16U
000362  2109              MOVS     r1,#9
000364  a801              ADD      r0,sp,#4
000366  f7fff7ff          BL       ProbeCom_StoINT16U
00036a  2408              MOVS     r4,#8
                  |L1.876|
00036c  1d20              ADDS     r0,r4,#4
00036e  b280              UXTH     r0,r0
000370  b004              ADD      sp,sp,#0x10
000372  bd70              POP      {r4-r6,pc}
                  |L1.884|
000374  2140              MOVS     r1,#0x40
000376  a801              ADD      r0,sp,#4
000378  f7fff7ff          BL       ProbeCom_StoINT32U
00037c  2404              MOVS     r4,#4
00037e  e7f5              B        |L1.876|
                  |L1.896|
000380  2140              MOVS     r1,#0x40
000382  a801              ADD      r0,sp,#4
000384  f7fff7ff          BL       ProbeCom_StoINT32U
000388  2404              MOVS     r4,#4
00038a  e7ef              B        |L1.876|
;;;764    
                          ENDP

                  ProbeCom_ParseRxPkt PROC
;;;353                                     CPU_INT16U   tx_buf_sz)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -