📄 can_ex1.cod
字号:
257: DD 0 /* Reserved Address */
00000034 00000000 DD 0x0
258: IRQ_Addr: DD IRQ_Handler?A
00000038 IRQ_Addr:
00000038 00001FDC DD IRQ_Handler?A
259: FIQ_Addr: DD FIQ_Handler?A
0000003C FIQ_Addr:
0000003C 00001FD8 DD FIQ_Handler?A
264: Reset_Handler:
00000040 Reset_Handler:
301: LDR R0, =VPBDIV
00000040 E59F00BC LDR R0,[PC,+188] ; PoolRef @0x104
302: LDR R1, =VPBDIV_Val
00000044 E3A01001 MOV R1,#VPBDIV_Val
303: STR R1, [R0]
00000048 E5801000 STR R1,[R0]
308: LDR R0, =PLL_BASE
0000004C E59F00B4 LDR R0,[PC,+180] ; PoolRef @0x108
309: MOV R1, #0xAA
00000050 E3A010AA MOV R1,#0x00AA
310: MOV R2, #0x55
00000054 E3A02055 MOV R2,#0x0055
313: MOV R3, #PLLCFG_Val
00000058 E3A03024 MOV R3,#0x0024
314: STR R3, [R0, #PLLCFG_OFS]
0000005C E5803004 STR R3,[R0,#PLLCFG_OFS]
315: MOV R3, #PLLCON_PLLE
00000060 E3A03001 MOV R3,#0x0001
316: STR R3, [R0, #PLLCON_OFS]
00000064 E5803000 STR R3,[R0,#PLLCON_OFS]
317: STR R1, [R0, #PLLFEED_OFS]
00000068 E580100C STR R1,[R0,#PLLFEED_OFS]
318: STR R2, [R0, #PLLFEED_OFS]
0000006C E580200C STR R2,[R0,#PLLFEED_OFS]
321: PLL_Loop: LDR R3, [R0, #PLLSTAT_OFS]
00000070 PLL_Loop:
00000070 E5903008 LDR R3,[R0,#PLLSTAT_OFS]
322: ANDS R3, R3, #PLLSTAT_PLOCK
00000074 E2133B01 ANDS R3,R3,#0x0400
323: BEQ PLL_Loop
00000078 0AFFFFFC BEQ PLL_Loop ; Targ=0x70
326: MOV R3, #(PLLCON_PLLE | PLLCON_PLLC)
0000007C E3A03003 MOV R3,#0x0003
327: STR R3, [R0, #PLLCON_OFS]
00000080 E5803000 STR R3,[R0,#PLLCON_OFS]
328: STR R1, [R0, #PLLFEED_OFS]
00000084 E580100C STR R1,[R0,#PLLFEED_OFS]
329: STR R2, [R0, #PLLFEED_OFS]
00000088 E580200C STR R2,[R0,#PLLFEED_OFS]
334: LDR R0, =MAM_BASE
0000008C E59F0078 LDR R0,[PC,+120] ; PoolRef @0x10C
335: MOV R1, #MAMTIM_Val
00000090 E3A01004 MOV R1,#0x0004
336: STR R1, [R0, #MAMTIM_OFS]
00000094 E5801004 STR R1,[R0,#MAMTIM_OFS]
337: MOV R1, #MAMCR_Val
00000098 E3A01002 MOV R1,#0x0002
338: STR R1, [R0, #MAMCR_OFS]
0000009C E5801000 STR R1,[R0,#MAMCR_OFS]
353: LDR R0, =Top_Stack
000000A0 E59F0068 LDR R0,[PC,+104] ; PoolRef @0x110
356: MSR CPSR_c, #Mode_UND|I_Bit|F_Bit
000000A4 E321F0DB MSR CPSR_c,#0xDB
357: MOV SP, R0
LARM LINKER/LOCATER V2.32a 03/15/2007 08:58:24 PAGE 6
000000A8 E1A0D000 MOV R13,R0
358: SUB R0, R0, #UND_Stack_Size
000000AC E2400004 SUB R0,R0,#0x0004
361: MSR CPSR_c, #Mode_ABT|I_Bit|F_Bit
000000B0 E321F0D7 MSR CPSR_c,#0xD7
362: MOV SP, R0
000000B4 E1A0D000 MOV R13,R0
363: SUB R0, R0, #ABT_Stack_Size
000000B8 E2400004 SUB R0,R0,#0x0004
366: MSR CPSR_c, #Mode_FIQ|I_Bit|F_Bit
000000BC E321F0D1 MSR CPSR_c,#0xD1
367: MOV SP, R0
000000C0 E1A0D000 MOV R13,R0
368: SUB R0, R0, #FIQ_Stack_Size
000000C4 E2400004 SUB R0,R0,#0x0004
371: MSR CPSR_c, #Mode_IRQ|I_Bit|F_Bit
000000C8 E321F0D2 MSR CPSR_c,#0xD2
372: MOV SP, R0
000000CC E1A0D000 MOV R13,R0
373: SUB R0, R0, #IRQ_Stack_Size
000000D0 E2400080 SUB R0,R0,#0x0080
376: MSR CPSR_c, #Mode_SVC|I_Bit|F_Bit
000000D4 E321F0D3 MSR CPSR_c,#0xD3
377: MOV SP, R0
000000D8 E1A0D000 MOV R13,R0
378: SUB R0, R0, #SVC_Stack_Size
000000DC E2400020 SUB R0,R0,#0x0020
381: MSR CPSR_c, #Mode_USR
000000E0 E321F010 MSR CPSR_c,#Mode_USR
382: MOV SP, R0
000000E4 E1A0D000 MOV R13,R0
385: LDR R0,=?C?INIT
000000E8 E59F0024 LDR R0,[PC,+36] ; PoolRef @0x114
386: TST R0,#1 ; Bit-0 set: INIT is Thumb
000000EC E3100001 TST R0,#0x0001
387: LDREQ LR,=exit?A ; ARM Mode
000000F0 059FE020 LDREQ R14,[PC,+32] ; PoolRef @0x118
388: LDRNE LR,=exit?T ; Thumb Mode
000000F4 159FE020 LDRNE R14,[PC,+32] ; PoolRef @0x11C
389: BX R0
000000F8 E12FFF10 BX R0
390: ENDP
000000FC ; SCOPE-END
393: exit?A PROC CODE32
000000FC ; SCOPE-START
394: B exit?A
000000FC EAFFFFFE B exit?A ; Targ=0xFC
395: ENDP
00000100 ; SCOPE-END
398: exit?T PROC CODE16
00000100 ; SCOPE-START
399: exit: B exit?T
00000100 exit:
00000100 E7FE B exit?T ; T=0x00000100
400: ENDP
00000102 ; SCOPE-END
00000102 ALIGN 4
00000104 E01FC100 DD VPBDIV ; POOL-Entry U=1
00000108 E01FC080 DD PLL_BASE ; POOL-Entry U=1
0000010C E01FC000 DD MAM_BASE ; POOL-Entry U=1
00000110 40000788 DD Top_Stack ; POOL-Entry U=1
00000114 0000033D DD ?C?INIT ; POOL-Entry U=1
00000118 000000FC DD exit?A ; POOL-Entry U=1
0000011C 00000101 DD exit?T ; POOL-Entry U=1
LARM LINKER/LOCATER V2.32a 03/15/2007 08:58:24 PAGE 7
*** Disassembly of Segment '?PR?task_send_CAN?T?CAN_Ex1':
FILE: 'CAN_Ex1.c'
000001D8 task_send_CAN?T: ; FUNCTION START
62: void task_send_CAN (void) __task {
000001D8 B084 SUB R13,#0x10
000001DA ; SCOPE-START
65: 1, 2, STANDARD_FORMAT, DATA_FRAME };
000001DA 4C2B LDR R4,[R15,#172] ; PoolRef @0x288 ; tsk1
000001DC 492B LDR R1,[R15,#172] ; PoolRef @0x28C ; ?tpl?0001
000001DE A800 ADD R0,R13,#0x0
000001E0 2204 MOV R2,#0x4
000001E2 L_383:
000001E2 C908 LDMIA R1!,{R3}
000001E4 C008 STMIA R0!,{R3}
000001E6 1E52 SUB R2,R2,#0x1
000001E8 D1FB BNE L_383 ; T=0x000001E2
67: CAN_init (1, 500000); /* CAN controller 1 init, 500 kbit/s */
000001EA 2001 MOV R0,#0x1
000001EC 4928 LDR R1,[R15,#160] ; PoolRef @0x290
000001EE F000 BL CAN_init?T ; T=0x0B65 (1)
000001F0 FCB9 BL CAN_init?T ; T=0x0B65 (2)
68: CAN_init (2, 500000); /* CAN controller 2 init, 500 kbit/s */
000001F2 2002 MOV R0,#0x2
000001F4 4926 LDR R1,[R15,#152] ; PoolRef @0x290
000001F6 F000 BL CAN_init?T ; T=0x0B65 (1)
000001F8 FCB5 BL CAN_init?T ; T=0x0B65 (2)
74: CAN_rx_object (1, 2, 33, STANDARD_FORMAT); /* Enable reception of */
000001FA 2001 MOV R0,#0x1
000001FC 2102 MOV R1,#0x2
000001FE 2221 MOV R2,#0x21
00000200 2300 MOV R3,#0x0
00000202 F000 BL CAN_rx_object?T ; T=0x0C21 (1)
00000204 FD0D BL CAN_rx_object?T ; T=0x0C21 (2)
78: CAN_start (1); /* Start controller 1 */
00000206 2001 MOV R0,#0x1
00000208 F000 BL CAN_start?T ; T=0x0BE1 (1)
0000020A FCEA BL CAN_start?T ; T=0x0BE1 (2)
79: CAN_start (2); /* Start controller 2 */
0000020C 2002 MOV R0,#0x2
0000020E F000 BL CAN_start?T ; T=0x0BE1 (1)
00000210 FCE7 BL CAN_start?T ; T=0x0BE1 (2)
81: tsk1 = os_tsk_self (); /* Get own task identification number */
00000212 F001 BL os_tsk_self?T ; T=0x1A7D (1)
00000214 FC33 BL os_tsk_self?T ; T=0x1A7D (2)
00000216 6020 STR R0,[R4,#0x0] ; tsk1
82: tsk2 = os_tsk_create (task_rece_CAN, 0); /* Start receive task */
00000218 481E LDR R0,[R15,#120] ; PoolRef @0x294 ; task_rece_CAN?T
0000021A 2200 MOV R2,#0x0
0000021C 2100 MOV R1,#0x0
0000021E 2300 MOV R3,#0x0
00000220 F001 BL os_tsk_create_user?T ; T=0x19F5 (1)
00000222 FBE8 BL os_tsk_create_user?T ; T=0x19F5 (2)
00000224 6060 STR R0,[R4,#0x4] ; tsk2
84: for (;;) {
00000226 L_4:
85: msg_send.data[0] = get_AD (); /* Data[0] field = analog value from */
00000226 F000 BL get_AD?T ; T=0x02C9 (1)
00000228 F84F BL get_AD?T ; T=0x02C9 (2)
0000022A A901 ADD R1,R13,#0x4
0000022C 7008 STRB R0,[R1,#0x0] ; msg_send+4
87: RESET_WATCH_DOG; /* potentiometer */
0000022E 4A1A LDR R2,[R15,#104] ; PoolRef @0x298
00000230 481A LDR R0,[R15,#104] ; PoolRef @0x29C
00000232 6801 LDR R1,[R0,#0x0]
00000234 4311 ORR R1,R2
LARM LINKER/LOCATER V2.32a 03/15/2007 08:58:24 PAGE 8
00000236 6001 STR R1,[R0,#0x0]
00000238 46C0 NOP ; MOV R8,R8
0000023A 46C0 NOP ; MOV R8,R8
0000023C 4A16 LDR R2,[R15,#88] ; PoolRef @0x298
0000023E 4818 LDR R0,[R15,#96] ; PoolRef @0x2A0
00000240 6801 LDR R1,[R0,#0x0]
00000242 4311 ORR R1,R2
00000244 6001 STR R1,[R0,#0x0]
00000246 46C0 NOP ; MOV R8,R8
00000248 46C0 NOP ; MOV R8,R8
0000024A 4A13 LDR R2,[R15,#76] ; PoolRef @0x298
0000024C 4815 LDR R0,[R15,#84] ; PoolRef @0x2A4
0000024E 6801 LDR R1,[R0,#0x0]
00000250 4311 ORR R1,R2
00000252 6001 STR R1,[R0,#0x0]
00000254 46C0 NOP ; MOV R8,R8
00000256 46C0 NOP ; MOV R8,R8
00000258 4A0F LDR R2,[R15,#60] ; PoolRef @0x298
0000025A 4811 LDR R0,[R15,#68] ; PoolRef @0x2A0
0000025C 6801 LDR R1,[R0,#0x0]
0000025E 4311 ORR R1,R2
00000260 6001 STR R1,[R0,#0x0]
00000262 46C0 NOP ; MOV R8,R8
00000264 46C0 NOP ; MOV R8,R8
00000266 4A0C LDR R2,[R15,#48] ; PoolRef @0x298
00000268 480E LDR R0,[R15,#56] ; PoolRef @0x2A4
0000026A 6801 LDR R1,[R0,#0x0]
0000026C 4311 ORR R1,R2
0000026E 6001 STR R1,[R0,#0x0]
00000270 46C0 NOP ; MOV R8,R8
00000272 46C0 NOP ; MOV R8,R8
89: CAN_send (2, &msg_send, 0x0f00); /* Send msg_send on controller 2 */
00000274 A900 ADD R1,R13,#0x0
00000276 2002 MOV R0,#0x2
00000278 4A0B LDR R2,[R15,#44] ; PoolRef @0x2A8
0000027A F000 BL CAN_send?T ; T=0x0BED (1)
0000027C FCB7 BL CAN_send?T ; T=0x0BED (2)
90: os_dly_wait (100); /* Wait 1 second */
0000027E 2064 MOV R0,#0x64
00000280 F001 BL os_dly_wait?T ; T=0x1B8D (1)
00000282 FC84 BL os_dly_wait?T ; T=0x1B8D (2)
91: }
00000284 E7CF B L_4 ; T=0x00000226
00000286 ; SCOPE-END
92: }
00000286 B004 ADD R13,#0x10
00000288 ; END 'task_send_CAN?T'
00000288 40000000 DD tsk1 ; POOL-Entry U=1
0000028C 00000120 DD ?tpl?0001 ; POOL-Entry U=1
00000290 0007A120 DD 0x7A120 ; POOL-Entry U=2
00000294 000002AD DD task_rece_CAN?T ; POOL-Entry U=1
00000298 00000800 DD 0x800 ; POOL-Entry U=5
0000029C E0028008 DD 0xE0028008 ; POOL-Entry U=1
000002A0 E002800C DD 0xE002800C ; POOL-Entry U=2
000002A4 E0028004 DD 0xE0028004 ; POOL-Entry U=2
000002A8 00000F00 DD 0xF00 ; POOL-Entry U=1
*** Disassembly of Segment '?PR?task_rece_CAN?T?CAN_Ex1':
FILE: 'CAN_Ex1.c'
000002AC task_rece_CAN?T: ; FUNCTION START
99: void task_rece_CAN (void) __task {
000002AC B084 SUB R13,#0x10
000002AE ; SCOPE-START
102: for (;;) {
LARM LINKER/LOCATER V2.32a 03/15/2007 08:58:24 PAGE 9
000002AE L_9:
105: if (CAN_receive (1, &msg_rece, 0x00FF) == CAN_OK) {
000002AE A900 ADD R1,R13,#0x0
000002B0 2001 MOV R0,#0x1
000002B2 22FF MOV R2,#0xFF
000002B4 F000 BL CAN_receive?T ; T=0x0C09 (1)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -