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

📄 artx_can.lst

📁 can bus 源代码
💻 LST
📖 第 1 页 / 共 3 页
字号:
 00000082          ENDP ; 'CAN_push?T'


*** CODE SEGMENT '?PR?CAN_send?T?ARTX_CAN':
  152: CAN_ERROR CAN_send (U32 ctrl, CAN_msg *msg, U16 timeout)  {
 00000000  B510      PUSH        {R4,LR}
 00000002  ---- Variable 'timeout' assigned to Register 'R2' ----
 00000002  1C0B      MOV         R3,R1 ; msg
 00000004  ---- Variable 'msg' assigned to Register 'R3' ----
 00000004  1C04      MOV         R4,R0 ; ctrl
 00000006  ---- Variable 'ctrl' assigned to Register 'R4' ----
  153:   msg->type = DATA_FRAME;
 00000006  2000      MOV         R0,#0x0
 00000008  1C19      MOV         R1,R3 ; msg
 0000000A  73C8      STRB        R0,[R1,#0xF]
  155:   return (CAN_push (ctrl, msg, timeout));
 0000000C  1C10      MOV         R0,R2 ; timeout
 0000000E  0402      LSL         R2,R0,#0x10 ; timeout
 00000010  0C12      LSR         R2,R2,#0x10
 00000012  1C20      MOV         R0,R4 ; ctrl
 00000014  1C19      MOV         R1,R3 ; msg
 00000016  F7FF      BL          CAN_push?T  ; T=0x0001  (1)
 00000018  FFF3      BL          CAN_push?T  ; T=0x0001  (2)
  156: }
 0000001A  BC10      POP         {R4}
 0000001C  BC08      POP         {R3}
 0000001E  4718      BX          R3
 00000020          ENDP ; 'CAN_send?T'


*** CODE SEGMENT '?PR?CAN_request?T?ARTX_CAN':
ARM COMPILER V2.32a,  ARTX_CAN                                                             15/03/07  08:58:24  PAGE 10  

  170: CAN_ERROR CAN_request (U32 ctrl, CAN_msg *msg, U16 timeout)  {
 00000000  B510      PUSH        {R4,LR}
 00000002  ---- Variable 'timeout' assigned to Register 'R2' ----
 00000002  1C0B      MOV         R3,R1 ; msg
 00000004  ---- Variable 'msg' assigned to Register 'R3' ----
 00000004  1C04      MOV         R4,R0 ; ctrl
 00000006  ---- Variable 'ctrl' assigned to Register 'R4' ----
  171:   msg->type = REMOTE_FRAME;
 00000006  2001      MOV         R0,#0x1
 00000008  1C19      MOV         R1,R3 ; msg
 0000000A  73C8      STRB        R0,[R1,#0xF]
  173:   return (CAN_push (ctrl, msg, timeout));
 0000000C  1C10      MOV         R0,R2 ; timeout
 0000000E  0402      LSL         R2,R0,#0x10 ; timeout
 00000010  0C12      LSR         R2,R2,#0x10
 00000012  1C20      MOV         R0,R4 ; ctrl
 00000014  1C19      MOV         R1,R3 ; msg
 00000016  F7FF      BL          CAN_push?T  ; T=0x0001  (1)
 00000018  FFF3      BL          CAN_push?T  ; T=0x0001  (2)
  174: }
 0000001A  BC10      POP         {R4}
 0000001C  BC08      POP         {R3}
 0000001E  4718      BX          R3
 00000020          ENDP ; 'CAN_request?T'


*** CODE SEGMENT '?PR?CAN_set?T?ARTX_CAN':
  189: CAN_ERROR CAN_set (U32 ctrl, CAN_msg *msg, U16 timeout)  {
 00000000  B5F0      PUSH        {R4-R7,LR}
 00000002  1C17      MOV         R7,R2 ; timeout
 00000004  ---- Variable 'timeout' assigned to Register 'R7' ----
 00000004  1C0E      MOV         R6,R1 ; msg
 00000006  ---- Variable 'msg' assigned to Register 'R6' ----
 00000006  1C05      MOV         R5,R0 ; ctrl
 00000008  ---- Variable 'ctrl' assigned to Register 'R5' ----
 00000008  B081      SUB         R13,#0x4
 0000000A            ; SCOPE-START
  190:   S32 i = timeout;
 0000000A  1C38      MOV         R0,R7 ; timeout
 0000000C  0404      LSL         R4,R0,#0x10 ; timeout
 0000000E  0C24      LSR         R4,R4,#0x10
 00000010  ---- Variable 'i' assigned to Register 'R4' ----
  192:   U32 ctrl0 = ctrl-1;                 /* Controller index 0 .. x-1           */
 00000010  1C28      MOV         R0,R5 ; ctrl
 00000012  3801      SUB         R0,#0x1
 00000014  9000      STR         R0,[R13,#0x0] ; ctrl0
  194:   do {
 00000016          L_15:
  195:     if (CAN_hw_tx_empty (ctrl) == CAN_OK)  {  /* Transmit hardware free      */
 00000016  1C28      MOV         R0,R5 ; ctrl
 00000018  F7FF      BL          CAN_hw_tx_empty?T  ; T=0x0001  (1)
 0000001A  FFF2      BL          CAN_hw_tx_empty?T  ; T=0x0001  (2)
 0000001C  2800      CMP         R0,#0x0 ; CAN_hw_tx_empty?T
 0000001E  D10D      BNE         L_19  ; T=0x0000003C
  196:       wr_to_CAN_hw[ctrl0] = 1;          /* Writing to transmit hardware      */
 00000020  2001      MOV         R0,#0x1
 00000022  9A00      LDR         R2,[R13,#0x0] ; ctrl0
 00000024  4800      LDR         R1,=wr_to_CAN_hw ; wr_to_CAN_hw
 00000026  5488      STRB        R0,[R1,R2]
  197:       result = CAN_hw_set (ctrl, msg);  /* Set message                       */
 00000028  1C28      MOV         R0,R5 ; ctrl
 0000002A  1C31      MOV         R1,R6 ; msg
 0000002C  F7FF      BL          CAN_hw_set?T  ; T=0x0001  (1)
 0000002E  FFE8      BL          CAN_hw_set?T  ; T=0x0001  (2)
  198:       wr_to_CAN_hw[ctrl0] = 0;          /* Writing to tx hardware finished   */
 00000030  2000      MOV         R0,#0x0
 00000032  9A00      LDR         R2,[R13,#0x0] ; ctrl0
 00000034  4800      LDR         R1,=wr_to_CAN_hw ; wr_to_CAN_hw
ARM COMPILER V2.32a,  ARTX_CAN                                                             15/03/07  08:58:24  PAGE 11  

 00000036  5488      STRB        R0,[R1,R2]
  199:       return CAN_OK;
 00000038  2000      MOV         R0,#0x0
 0000003A  E00E      B           L_20  ; T=0x0000005A
  200:     }
 0000003C          L_19:
  201:     if (timeout == 0xffff)              /* Indefinite wait                   */
 0000003C  1C38      MOV         R0,R7 ; timeout
 0000003E  0400      LSL         R0,R0,#0x10 ; timeout
 00000040  0C00      LSR         R0,R0,#0x10
 00000042  4800      LDR         R1,=0xFFFF
 00000044  4288      CMP         R0,R1
 00000046  D100      BNE         L_21  ; T=0x0000004A
  202:       i++;
 00000048  3401      ADD         R4,#0x1
 0000004A          L_21:
  203:     i--;
 0000004A  3C01      SUB         R4,#0x1
  204:     os_dly_wait (1);                    /* Wait 1 timer tick                 */
 0000004C  2001      MOV         R0,#0x1
 0000004E  F7FF      BL          os_dly_wait?T  ; T=0x0001  (1)
 00000050  FFD7      BL          os_dly_wait?T  ; T=0x0001  (2)
  205:   }  while (i >= 0);
 00000052  1C20      MOV         R0,R4 ; i
 00000054  2800      CMP         R0,#0x0 ; i
 00000056  DADE      BGE         L_15  ; T=0x00000016
  207:   return CAN_TIMEOUT_ERROR;             /* CAN message not set               */
 00000058  2008      MOV         R0,#0x8
 0000005A            ; SCOPE-END
  208: }
 0000005A          L_20:
 0000005A  B001      ADD         R13,#0x4
 0000005C  BCF0      POP         {R4-R7}
 0000005E  BC08      POP         {R3}
 00000060  4718      BX          R3
 00000062          ENDP ; 'CAN_set?T'


*** CODE SEGMENT '?PR?CAN_pull?T?ARTX_CAN':
  223: static CAN_ERROR CAN_pull (U32 ctrl, CAN_msg *msg, U16 timeout)  {
 00000000  B510      PUSH        {R4,LR}
 00000002  ---- Variable 'timeout' assigned to Register 'R2' ----
 00000002  1C0C      MOV         R4,R1 ; msg
 00000004  ---- Variable 'msg' assigned to Register 'R4' ----
 00000004  ---- Variable 'ctrl' assigned to Register 'R0' ----
 00000004  B081      SUB         R13,#0x4
 00000006            ; SCOPE-START
  225:   U32 ctrl0 = ctrl-1;                 /* Controller index 0 .. x-1           */
 00000006  1C03      MOV         R3,R0 ; ctrl
 00000008  3B01      SUB         R3,#0x1
 0000000A  ---- Variable 'ctrl0' assigned to Register 'R3' ----
  228:   if (os_mbx_wait (MBX_rx_ctrl[ctrl0], &ptrmsg, timeout) == OS_R_TMO)
 0000000A  1C19      MOV         R1,R3 ; ctrl0
 0000000C  2060      MOV         R0,#0x60
 0000000E  4341      MUL         R1,R0
 00000010  4800      LDR         R0,=MBX_rx_ctrl ; MBX_rx_ctrl
 00000012  1840      ADD         R0,R1 ; MBX_rx_ctrl
 00000014  1C11      MOV         R1,R2 ; timeout
 00000016  040A      LSL         R2,R1,#0x10 ; timeout
 00000018  0C12      LSR         R2,R2,#0x10
 0000001A  A900      ADD         R1,R13,#0x0
 0000001C  F7FF      BL          os_mbx_wait?T  ; T=0x0001  (1)
 0000001E  FFF0      BL          os_mbx_wait?T  ; T=0x0001  (2)
 00000020  2801      CMP         R0,#0x1 ; os_mbx_wait?T
 00000022  D101      BNE         L_22  ; T=0x00000028
  229:     return CAN_TIMEOUT_ERROR;
 00000024  2008      MOV         R0,#0x8
 00000026  E00E      B           L_23  ; T=0x00000046
ARM COMPILER V2.32a,  ARTX_CAN                                                             15/03/07  08:58:24  PAGE 12  

 00000028          L_22:
  232:   *msg = *ptrmsg;
 00000028  9900      LDR         R1,[R13,#0x0] ; ptrmsg
 0000002A  1C20      MOV         R0,R4 ; msg
 0000002C  2204      MOV         R2,#0x4
 0000002E          L_31:
 0000002E  C908      LDMIA       R1!,{R3}
 00000030  C008      STMIA       R0!,{R3}
 00000032  1E52      SUB         R2,R2,#0x1
 00000034  D1FB      BNE         L_31  ; T=0x0000002E
  235:   if (_free_box (CAN_mpool, ptrmsg) == 1)
 00000036  4800      LDR         R0,=CAN_mpool ; CAN_mpool
 00000038  9900      LDR         R1,[R13,#0x0] ; ptrmsg
 0000003A  DF07      SWI         0x7 ; _free_box?T
 0000003C  2801      CMP         R0,#0x1 ; _free_box?T
 0000003E  D101      BNE         L_24  ; T=0x00000044
  236:     return CAN_DEALLOC_MEM_ERROR;
 00000040  2007      MOV         R0,#0x7
 00000042  E000      B           L_23  ; T=0x00000046
 00000044          L_24:
  238:   return CAN_OK;
 00000044  2000      MOV         R0,#0x0
 00000046            ; SCOPE-END
  239: }
 00000046          L_23:
 00000046  B001      ADD         R13,#0x4
 00000048  BC10      POP         {R4}
 0000004A  BC08      POP         {R3}
 0000004C  4718      BX          R3
 0000004E          ENDP ; 'CAN_pull?T'


*** CODE SEGMENT '?PR?CAN_receive?T?ARTX_CAN':
  253: CAN_ERROR CAN_receive (U32 ctrl, CAN_msg *msg, U16 timeout)  {
 00000000  B500      PUSH        {LR}
 00000002  ---- Variable 'timeout' assigned to Register 'R2' ----
 00000002  1C0B      MOV         R3,R1 ; msg
 00000004  ---- Variable 'msg' assigned to Register 'R3' ----
 00000004  1C01      MOV         R1,R0 ; ctrl
 00000006  ---- Variable 'ctrl' assigned to Register 'R1' ----
  254:   return (CAN_pull (ctrl, msg, timeout));
 00000006  1C10      MOV         R0,R2 ; timeout
 00000008  0402      LSL         R2,R0,#0x10 ; timeout
 0000000A  0C12      LSR         R2,R2,#0x10
 0000000C  1C08      MOV         R0,R1 ; ctrl
 0000000E  1C19      MOV         R1,R3 ; msg
 00000010  F7FF      BL          CAN_pull?T  ; T=0x0001  (1)
 00000012  FFF6      BL          CAN_pull?T  ; T=0x0001  (2)
  255: }
 00000014  BC08      POP         {R3}
 00000016  4718      BX          R3
 00000018          ENDP ; 'CAN_receive?T'


*** CODE SEGMENT '?PR?CAN_rx_object?T?ARTX_CAN':
  271: CAN_ERROR CAN_rx_object (U32 ctrl, U32 ch, U32 id, CAN_FORMAT format)  {
 00000000  B508      PUSH        {R3,LR}
 00000002  1C13      MOV         R3,R2 ; id
 00000004  ---- Variable 'id' assigned to Register 'R3' ----
 00000004  1C0A      MOV         R2,R1 ; ch
 00000006  ---- Variable 'ch' assigned to Register 'R2' ----
 00000006  1C01      MOV         R1,R0 ; ctrl
 00000008  ---- Variable 'ctrl' assigned to Register 'R1' ----
  272:   return (CAN_hw_rx_object (ctrl, ch, id, format));
 00000008  1C08      MOV         R0,R1 ; ctrl
 0000000A  1C11      MOV         R1,R2 ; ch
 0000000C  1C1A      MOV         R2,R3 ; id
 0000000E  9B00      LDR         R3,[R13,#0x0] ; format
 00000010  F7FF      BL          CAN_hw_rx_object?T  ; T=0x0001  (1)
 00000012  FFF6      BL          CAN_hw_rx_object?T  ; T=0x0001  (2)
ARM COMPILER V2.32a,  ARTX_CAN                                                             15/03/07  08:58:24  PAGE 13  

  273: }
 00000014  B001      ADD         R13,#0x4
 00000016  BC08      POP         {R3}
 00000018  4718      BX          R3
 0000001A          ENDP ; 'CAN_rx_object?T'


*** CODE SEGMENT '?PR?CAN_tx_object?T?ARTX_CAN':
  288: CAN_ERROR CAN_tx_object (U32 ctrl, U32 ch, CAN_FORMAT format)  {
 00000000  B504      PUSH        {R2,LR}
 00000002  1C0A      MOV         R2,R1 ; ch
 00000004  ---- Variable 'ch' assigned to Register 'R2' ----
 00000004  1C01      MOV         R1,R0 ; ctrl
 00000006  ---- Variable 'ctrl' assigned to Register 'R1' ----
  289:   return (CAN_hw_tx_object (ctrl, ch, format));
 00000006  1C08      MOV         R0,R1 ; ctrl
 00000008  1C11      MOV         R1,R2 ; ch
 0000000A  9A00      LDR         R2,[R13,#0x0] ; format
 0000000C  F7FF      BL          CAN_hw_tx_object?T  ; T=0x0001  (1)
 0000000E  FFF8      BL          CAN_hw_tx_object?T  ; T=0x0001  (2)
  290: }
 00000010  B001      ADD         R13,#0x4
 00000012  BC08      POP         {R3}
 00000014  4718      BX          R3
 00000016          ENDP ; 'CAN_tx_object?T'



Module Information          Static
----------------------------------
  code size            =    ------
  data size            =      1679
  const size           =    ------
End of Module Information.


ARM COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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