📄 artx_can.lst
字号:
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 + -