?? spi.lst
字號:
253 {
254 //* If End of Receive Transfer interrupt occurred
255 if (( status & AT91C_SPI_RXBUFF))
\ SPI0_Handler:
\ 00000000 400010E3 TST R0,#0x40
\ 00000004 0A00000A BEQ ??SPI0_Handler_0
256 {
257 //* Disable the Transmit Interrupt
258 AT91C_BASE_SPI0->SPI_IDR = AT91C_SPI_RXBUFF;
\ 00000008 ........ LDR R1,??DataTable2 ;; 0xfffc8018
\ 0000000C 4020A0E3 MOV R2,#+64
\ 00000010 002081E5 STR R2,[R1, #+0]
259 AT91C_BASE_SPI0->SPI_PTCR = AT91C_PDC_TXTDIS + AT91C_PDC_RXTDIS;
\ 00000014 34109FE5 LDR R1,??SPI0_Handler_1 ;; 0xfffc8120
\ 00000018 0220A0E3 MOV R2,#+2
\ 0000001C 802F82E3 ORR R2,R2,#0x200
\ 00000020 002081E5 STR R2,[R1, #+0]
260 r_flag = 0;
\ 00000024 28109FE5 LDR R1,??SPI0_Handler_1+0x4 ;; r_flag
\ 00000028 0020A0E3 MOV R2,#+0
\ 0000002C 0020C1E5 STRB R2,[R1, #+0]
261 return;
\ 00000030 050000EA B ??SPI0_Handler_2
262 }
263 AT91C_BASE_SPI0->SPI_PTCR = AT91C_PDC_TXTDIS + AT91C_PDC_RXTDIS;
\ ??SPI0_Handler_0:
\ 00000034 14109FE5 LDR R1,??SPI0_Handler_1 ;; 0xfffc8120
\ 00000038 0220A0E3 MOV R2,#+2
\ 0000003C 802F82E3 ORR R2,R2,#0x200
\ 00000040 002081E5 STR R2,[R1, #+0]
264 AT91C_BASE_SPI0->SPI_IDR = status;
\ 00000044 ........ LDR R1,??DataTable2 ;; 0xfffc8018
\ 00000048 000081E5 STR R0,[R1, #+0]
265 }
\ ??SPI0_Handler_2:
\ 0000004C 1EFF2FE1 BX LR ;; return
\ ??SPI0_Handler_1:
\ 00000050 2081FCFF DC32 0xfffc8120
\ 00000054 ........ DC32 r_flag
266
267
268 //*****************************************************************************
269 //* 函數(shù)名稱:AT91F_SPI_Handler
270 //* 函數(shù)功能:SPI0 中斷入口
271 //* 入口參數(shù):無
272 //* 返回值 :無
273 //*****************************************************************************
\ In section .text, align 4, keep-with-next
274 void AT91F_SPI0_Handler(void)
275 {
\ AT91F_SPI0_Handler:
\ 00000000 10402DE9 PUSH {R4,LR}
276 unsigned int status = 0;
\ 00000004 0000A0E3 MOV R0,#+0
\ 00000008 0040B0E1 MOVS R4,R0
277
278 AIC_DisableIT(AT91C_ID_SPI0);
\ 0000000C 0C00A0E3 MOV R0,#+12
\ 00000010 ........ BL AIC_DisableIT
279
280 status = AT91C_BASE_SPI0->SPI_SR;
\ 00000014 24009FE5 LDR R0,??AT91F_SPI0_Handler_0 ;; 0xfffc8010
\ 00000018 000090E5 LDR R0,[R0, #+0]
\ 0000001C 0040B0E1 MOVS R4,R0
281 status &= AT91C_BASE_SPI0->SPI_IMR;
\ 00000020 1C009FE5 LDR R0,??AT91F_SPI0_Handler_0+0x4 ;; 0xfffc801c
\ 00000024 000090E5 LDR R0,[R0, #+0]
\ 00000028 044010E0 ANDS R4,R0,R4
282
283 SPI0_Handler(status);
\ 0000002C 0400B0E1 MOVS R0,R4
\ 00000030 ........ BL SPI0_Handler
284 // 允許SPI0中斷
285 AIC_EnableIT(AT91C_ID_SPI0);
\ 00000034 0C00A0E3 MOV R0,#+12
\ 00000038 ........ BL AIC_EnableIT
286 }
\ 0000003C 1080BDE8 POP {R4,PC} ;; return
\ ??AT91F_SPI0_Handler_0:
\ 00000040 1080FCFF DC32 0xfffc8010
\ 00000044 1C80FCFF DC32 0xfffc801c
287
288
\ In section .text, align 4, keep-with-next
289 void init_SPI0(void)
290 {
\ init_SPI0:
\ 00000000 38402DE9 PUSH {R3-R5,LR}
291 long long int mod;
292
293 //* Configure SPI in Master Mode with No CS selected !!!
294 SPI_Configure(AT91C_BASE_SPI0, AT91C_ID_SPI0, AT91C_SPI_MSTR | AT91C_SPI_MODFDIS | AT91C_SPI_PCS);
\ 00000004 1120A0E3 MOV R2,#+17
\ 00000008 F02A82E3 ORR R2,R2,#0xF0000
\ 0000000C 0C10A0E3 MOV R1,#+12
\ 00000010 7C009FE5 LDR R0,??init_SPI0_0 ;; 0xfffc8000
\ 00000014 ........ BL SPI_Configure
295
296 //* Configure SPI CS0 for MCP2515 see the datasheet!
297 mod = (AT91C_SPI_DLYBCT & 0x80) | (AT91C_SPI_DLYBS & 0x100000) | AT91C_SPI_NCPHA | (0x30 << 8);
\ 00000018 78009FE5 LDR R0,??init_SPI0_0+0x4 ;; 0x103002
\ 0000001C 0010A0E3 MOV R1,#+0
\ 00000020 0040A0E1 MOV R4,R0
\ 00000024 0150A0E1 MOV R5,R1
298 SPI_CfgCs(AT91C_BASE_SPI0,0, mod);
\ 00000028 0420B0E1 MOVS R2,R4
\ 0000002C 0010A0E3 MOV R1,#+0
\ 00000030 5C009FE5 LDR R0,??init_SPI0_0 ;; 0xfffc8000
\ 00000034 ........ BL SPI_CfgCs
299
300 //* 配制 PIO 為 SPI0 驅(qū)動
301 PIO_CfgPeriph(AT91C_BASE_PIOA, // PIO controller base address
302 ((unsigned int) AT91C_PA1_SPI0_MOSI) |
303 ((unsigned int) AT91C_PA3_SPI0_NPCS0) |
304 ((unsigned int) AT91C_PA0_SPI0_MISO) |
305 ((unsigned int) AT91C_PA2_SPI0_SPCK), // Peripheral A
306 0); // Peripheral B
\ 00000038 0020A0E3 MOV R2,#+0
\ 0000003C 0F10A0E3 MOV R1,#+15
\ 00000040 FF00E0E3 MVN R0,#+255
\ 00000044 B00EC0E3 BIC R0,R0,#0xB00
\ 00000048 ........ BL PIO_CfgPeriph
307
308 AT91F_PDC_Open(AT91C_BASE_PDC_SPI0); // 打開 SPI0 PDC
\ 0000004C 48009FE5 LDR R0,??init_SPI0_0+0x8 ;; 0xfffc8100
\ 00000050 ........ BL AT91F_PDC_Open
309 // 配制 SPI0 中斷
310 AIC_ConfigureIt(AT91C_BASE_AIC,
311 AT91C_ID_SPI0,
312 SPI0_INTERRUPT_LEVEL,
313 AT91C_AIC_SRCTYPE_INT_HIGH_LEVEL,
314 AT91F_SPI0_Handler);
\ 00000054 44009FE5 LDR R0,??init_SPI0_0+0xC ;; AT91F_SPI0_Handler
\ 00000058 08002DE5 STR R0,[SP, #-8]!
\ 0000005C 0030A0E3 MOV R3,#+0
\ 00000060 0720A0E3 MOV R2,#+7
\ 00000064 0C10A0E3 MOV R1,#+12
\ 00000068 FF00E0E3 MVN R0,#+255
\ 0000006C F00EC0E3 BIC R0,R0,#0xF00
\ 00000070 ........ BL AIC_ConfigureIt
\ 00000074 08D08DE2 ADD SP,SP,#+8 ;; stack cleaning
315
316 SPI_Enable(AT91C_BASE_SPI0); // 使能 SPI0
\ 00000078 14009FE5 LDR R0,??init_SPI0_0 ;; 0xfffc8000
\ 0000007C ........ BL SPI_Enable
317 SPI_EnableIt(0x1<<6); //允許接收緩沖區(qū)滿中斷---RXBUFF
\ 00000080 4000A0E3 MOV R0,#+64
\ 00000084 ........ BL SPI_EnableIt
318 AIC_EnableIT(AT91C_ID_SPI0); // 使能 SPI0 中斷
\ 00000088 0C00A0E3 MOV R0,#+12
\ 0000008C ........ BL AIC_EnableIT
319 }
\ 00000090 3180BDE8 POP {R0,R4,R5,PC} ;; return
\ ??init_SPI0_0:
\ 00000094 0080FCFF DC32 0xfffc8000
\ 00000098 02301000 DC32 0x103002
\ 0000009C 0081FCFF DC32 0xfffc8100
\ 000000A0 ........ DC32 AT91F_SPI0_Handler
\ In section .text, align 4, keep-with-next
\ ??DataTable2:
\ 00000000 1880FCFF DC32 0xfffc8018
\ In section .rodata, align 4
\ `?<Constant {14, 13, 176, 7}>`:
\ 00000000 0E0DB007 DC8 14, 13, 176, 7
320
321
Maximum stack usage in bytes:
Function .cstack
-------- -------
AT91F_SPI0_Handler 0
SPI0_Handler 0
SPI_CfgCs 0
SPI_CfgPCS 0
SPI_Configure 0
SPI_ConfigureNPCS 0
SPI_Disable 0
SPI_DisableIt 0
SPI_Enable 0
SPI_EnableIt 0
SPI_IsFinished 0
SPI_Read 0
SPI_ReadBuffer 0
SPI_Write 0
SPI_WriteBuffer 0
init_SPI0 8
Section sizes:
Function/Label Bytes
-------------- -----
r_flag 1
SPI_Enable 12
SPI_Disable 12
SPI_Configure 36
SPI_CfgCs 16
SPI_ConfigureNPCS 16
SPI_CfgPCS 44
SPI_EnableIt 16
SPI_DisableIt 12
SPI_Write 80
SPI_WriteBuffer 76
SPI_IsFinished 32
SPI_Read 28
SPI_ReadBuffer 76
SPI0_Handler 88
AT91F_SPI0_Handler 72
init_SPI0 164
??DataTable2 4
?<Constant {14, 13, 176, 7}> 4
1 byte in section .data
4 bytes in section .rodata
784 bytes in section .text
784 bytes of CODE memory
4 bytes of CONST memory
1 byte of DATA memory
Errors: none
Warnings: none
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -