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

📄 twid.lst

📁 IAR5.2下 AT91SAM9260 ARM 对 MCP2515 控制源化码
💻 LST
📖 第 1 页 / 共 3 页
字号:
    252              unsigned char *pData,
    253              unsigned int num,
    254              Async *pAsync)
    255          {
   \                     TWID_Write:
   \   00000000   F14F2DE9           PUSH     {R0,R4-R11,LR}
   \   00000004   01A0B0E1           MOVS     R10,R1
   \   00000008   0290B0E1           MOVS     R9,R2
   \   0000000C   0380B0E1           MOVS     R8,R3
   \   00000010   28409DE5           LDR      R4,[SP, #+40]
   \   00000014   2C509DE5           LDR      R5,[SP, #+44]
   \   00000018   30B09DE5           LDR      R11,[SP, #+48]
    256              AT91S_TWI *pTwi = pTwid->pTwi;
   \   0000001C   00009DE5           LDR      R0,[SP, #+0]
   \   00000020   000090E5           LDR      R0,[R0, #+0]
   \   00000024   0060B0E1           MOVS     R6,R0
    257              AsyncTwi *pTransfer = (AsyncTwi *) pTwid->pTransfer;
   \   00000028   00009DE5           LDR      R0,[SP, #+0]
   \   0000002C   040090E5           LDR      R0,[R0, #+4]
   \   00000030   0070B0E1           MOVS     R7,R0
    258          
    259              trace_LOG(trace_DEBUG, "-D- TWID_Write()\n\r");
    260              SANITY_CHECK(pTwi);
   \   00000034   000056E3           CMP      R6,#+0
   \   00000038   0400001A           BNE      ??TWID_Write_0
   \   0000003C   412FA0E3           MOV      R2,#+260
   \   00000040   ........           LDR      R1,??DataTable20  ;; `?<Constant "E:\\\\IAR\\\\at91lib\\\\driver...">`
   \   00000044   ........           LDR      R0,??DataTable21  ;; `?<Constant "Sanity check failed a...">`
   \   00000048   ........           BL       printf
   \                     ??TWID_Write_1:
   \   0000004C   FEFFFFEA           B        ??TWID_Write_1
    261              SANITY_CHECK((address & 0x80) == 0);
   \                     ??TWID_Write_0:
   \   00000050   80001AE3           TST      R10,#0x80
   \   00000054   0500000A           BEQ      ??TWID_Write_2
   \   00000058   0520A0E3           MOV      R2,#+5
   \   0000005C   402F82E3           ORR      R2,R2,#0x100
   \   00000060   ........           LDR      R1,??DataTable20  ;; `?<Constant "E:\\\\IAR\\\\at91lib\\\\driver...">`
   \   00000064   ........           LDR      R0,??DataTable21  ;; `?<Constant "Sanity check failed a...">`
   \   00000068   ........           BL       printf
   \                     ??TWID_Write_3:
   \   0000006C   FEFFFFEA           B        ??TWID_Write_3
    262              SANITY_CHECK((iaddress & 0xFF000000) == 0);
   \                     ??TWID_Write_2:
   \   00000070   FF0419E3           TST      R9,#0xFF000000
   \   00000074   0500000A           BEQ      ??TWID_Write_4
   \   00000078   0620A0E3           MOV      R2,#+6
   \   0000007C   402F82E3           ORR      R2,R2,#0x100
   \   00000080   ........           LDR      R1,??DataTable20  ;; `?<Constant "E:\\\\IAR\\\\at91lib\\\\driver...">`
   \   00000084   ........           LDR      R0,??DataTable21  ;; `?<Constant "Sanity check failed a...">`
   \   00000088   ........           BL       printf
   \                     ??TWID_Write_5:
   \   0000008C   FEFFFFEA           B        ??TWID_Write_5
    263              SANITY_CHECK(isize < 4);
   \                     ??TWID_Write_4:
   \   00000090   FF8018E2           ANDS     R8,R8,#0xFF      ;; Zero extend
   \   00000094   040058E3           CMP      R8,#+4
   \   00000098   0500003A           BCC      ??TWID_Write_6
   \   0000009C   0720A0E3           MOV      R2,#+7
   \   000000A0   402F82E3           ORR      R2,R2,#0x100
   \   000000A4   ........           LDR      R1,??DataTable20  ;; `?<Constant "E:\\\\IAR\\\\at91lib\\\\driver...">`
   \   000000A8   ........           LDR      R0,??DataTable21  ;; `?<Constant "Sanity check failed a...">`
   \   000000AC   ........           BL       printf
   \                     ??TWID_Write_7:
   \   000000B0   FEFFFFEA           B        ??TWID_Write_7
    264          
    265              // Check that no transfer is already pending
    266              if (pTransfer) {
   \                     ??TWID_Write_6:
   \   000000B4   000057E3           CMP      R7,#+0
   \   000000B8   0300000A           BEQ      ??TWID_Write_8
    267          
    268                  trace_LOG(trace_ERROR, "-E- TWI_Write: A transfer is already pending\n\r");
   \   000000BC   E4009FE5           LDR      R0,??TWID_Write_9  ;; `?<Constant "-E- TWI_Write: A tran...">`
   \   000000C0   ........           BL       printf
    269                  return TWID_ERROR_BUSY;
   \   000000C4   0100A0E3           MOV      R0,#+1
   \   000000C8   350000EA           B        ??TWID_Write_10
    270              }
    271          
    272              // Asynchronous transfer
    273              if (pAsync) {
   \                     ??TWID_Write_8:
   \   000000CC   00005BE3           CMP      R11,#+0
   \   000000D0   1600000A           BEQ      ??TWID_Write_11
    274              
    275                  // Update the transfer descriptor
    276                  pTwid->pTransfer = pAsync;
   \   000000D4   00009DE5           LDR      R0,[SP, #+0]
   \   000000D8   04B080E5           STR      R11,[R0, #+4]
    277                  pTransfer = (AsyncTwi *) pAsync;
   \   000000DC   0B70B0E1           MOVS     R7,R11
    278                  pTransfer->status = ASYNC_STATUS_PENDING;
   \   000000E0   FF00A0E3           MOV      R0,#+255
   \   000000E4   0000C7E5           STRB     R0,[R7, #+0]
    279                  pTransfer->pData = pData;
   \   000000E8   084087E5           STR      R4,[R7, #+8]
    280                  pTransfer->num = num;
   \   000000EC   0C5087E5           STR      R5,[R7, #+12]
    281                  pTransfer->transferred = 1;
   \   000000F0   0100A0E3           MOV      R0,#+1
   \   000000F4   100087E5           STR      R0,[R7, #+16]
    282              
    283                  // Enable write interrupt and start the transfer
    284                  TWI_StartWrite(pTwi, address, iaddress, isize, *pData);
   \   000000F8   0000D4E5           LDRB     R0,[R4, #+0]
   \   000000FC   08002DE5           STR      R0,[SP, #-8]!
   \   00000100   0830B0E1           MOVS     R3,R8
   \   00000104   FF3013E2           ANDS     R3,R3,#0xFF      ;; Zero extend
   \   00000108   0920B0E1           MOVS     R2,R9
   \   0000010C   0A10B0E1           MOVS     R1,R10
   \   00000110   FF1011E2           ANDS     R1,R1,#0xFF      ;; Zero extend
   \   00000114   0600B0E1           MOVS     R0,R6
   \   00000118   ........           BL       TWI_StartWrite
   \   0000011C   08D08DE2           ADD      SP,SP,#+8        ;; stack cleaning
    285                  TWI_EnableIt(pTwi, AT91C_TWI_TXRDY);
   \   00000120   0410A0E3           MOV      R1,#+4
   \   00000124   0600B0E1           MOVS     R0,R6
   \   00000128   ........           BL       TWI_EnableIt
   \   0000012C   1B0000EA           B        ??TWID_Write_12
    286              }
    287              // Synchronous transfer
    288              else {
    289          
    290                  // Start write
    291                  TWI_StartWrite(pTwi, address, iaddress, isize, *pData++);
   \                     ??TWID_Write_11:
   \   00000130   0000D4E5           LDRB     R0,[R4, #+0]
   \   00000134   08002DE5           STR      R0,[SP, #-8]!
   \   00000138   0830B0E1           MOVS     R3,R8
   \   0000013C   FF3013E2           ANDS     R3,R3,#0xFF      ;; Zero extend
   \   00000140   0920B0E1           MOVS     R2,R9
   \   00000144   0A10B0E1           MOVS     R1,R10
   \   00000148   FF1011E2           ANDS     R1,R1,#0xFF      ;; Zero extend
   \   0000014C   0600B0E1           MOVS     R0,R6
   \   00000150   ........           BL       TWI_StartWrite
   \   00000154   08D08DE2           ADD      SP,SP,#+8        ;; stack cleaning
   \   00000158   014094E2           ADDS     R4,R4,#+1
    292                  num--;
   \   0000015C   015055E2           SUBS     R5,R5,#+1
    293          
    294                  // Send all bytes
    295                  while (num > 0) {
   \                     ??TWID_Write_13:
   \   00000160   000055E3           CMP      R5,#+0
   \   00000164   0900000A           BEQ      ??TWID_Write_14
    296                  
    297                      // Wait before sending the next byte
    298                      while (!TWI_ByteSent(pTwi));
   \                     ??TWID_Write_15:
   \   00000168   0600B0E1           MOVS     R0,R6
   \   0000016C   ........           BL       TWI_ByteSent
   \   00000170   000050E3           CMP      R0,#+0
   \   00000174   FBFFFF0A           BEQ      ??TWID_Write_15
    299                      TWI_WriteByte(pTwi, *pData++);
   \   00000178   0010D4E5           LDRB     R1,[R4, #+0]
   \   0000017C   0600B0E1           MOVS     R0,R6
   \   00000180   ........           BL       TWI_WriteByte
   \   00000184   014094E2           ADDS     R4,R4,#+1
    300                      num--;
   \   00000188   015055E2           SUBS     R5,R5,#+1
   \   0000018C   F3FFFFEA           B        ??TWID_Write_13
    301                  }
    302          
    303                  // Wait for actual end of transfer
    304                  while (!TWI_TransferComplete(pTwi));
   \                     ??TWID_Write_14:
   \   00000190   0600B0E1           MOVS     R0,R6
   \   00000194   ........           BL       TWI_TransferComplete
   \   00000198   000050E3           CMP      R0,#+0
   \   0000019C   FBFFFF0A           BEQ      ??TWID_Write_14
    305              }
    306              
    307              return 0;
   \                     ??TWID_Write_12:
   \   000001A0   0000A0E3           MOV      R0,#+0
   \                     ??TWID_Write_10:
   \   000001A4   F28FBDE8           POP      {R1,R4-R11,PC}   ;; return
   \                     ??TWID_Write_9:
   \   000001A8   ........           DC32     `?<Constant "-E- TWI_Write: A tran...">`
    308          }

   \                                 In section .text, align 4, keep-with-next
   \                     ??DataTable20:
   \   00000000   ........           DC32     `?<Constant "E:\\\\IAR\\\\at91lib\\\\driver...">`

   \                                 In section .text, align 4, keep-with-next
   \                     ??DataTable21:
   \   00000000   ........           DC32     `?<Constant "Sanity check failed a...">`

   \                                 In section .rodata, align 4
   \                     `?<Constant "Sanity check failed a...">`:
   \   00000000   53616E697479       DC8 "Sanity check failed at %s:%d\012\015"
   \              20636865636B
   \              206661696C65
   \              642061742025
   \              733A25640A0D
   \              00          
   \   0000001F   00                 DC8 0

   \                                 In section .rodata, align 4
   \                     `?<Constant "E:\\\\IAR\\\\at91lib\\\\driver...">`:
   \   00000000   453A5C494152       DC8 "E:\\IAR\\at91lib\\drivers\\twi\\twid.c"
   \              5C617439316C
   \              69625C647269
   \              766572735C74
   \              77695C747769
   \              642E6300    
   \   00000022   0000               DC8 0, 0

   \                                 In section .rodata, align 4
   \                     `?<Constant "-E- TWID_Read: A tran...">`:
   \   00000000   2D452D205457       DC8 "-E- TWID_Read: A transfer is already pending\012\015"
   \              49445F526561
   \              643A20412074
   \              72616E736665
   \              722069732061
   \              6C7265616479
   \              2070656E6469
   \              6E670A0D00  
   \   0000002F   00                 DC8 0

   \                                 In section .rodata, align 4
   \                     `?<Constant "-E- TWI_Write: A tran...">`:
   \   00000000   2D452D205457       DC8 "-E- TWI_Write: A transfer is already pending\012\015"
   \              495F57726974
   \              653A20412074
   \              72616E736665
   \              722069732061
   \              6C7265616479
   \              2070656E6469
   \              6E670A0D00  
   \   0000002F   00                 DC8 0
    309          

   Maximum stack usage in bytes:

     Function        .cstack
     --------        -------
     TWID_Handler         0
     TWID_Initialize      0
     TWID_Read            0
     TWID_Write           8


   Section sizes:

     Function/Label                            Bytes
     --------------                            -----
     TWID_Initialize                             84
     TWID_Handler                               356
     TWID_Read                                  420
     TWID_Write                                 428
     ??DataTable20                                4
     ??DataTable21                                4
     ?<Constant "Sanity check failed a...">      32
     ?<Constant "E:\\IAR\\at91lib\\driver...">   36
     ?<Constant "-E- TWID_Read: A tran...">      48
     ?<Constant "-E- TWI_Write: A tran...">      48

 
   164 bytes in section .rodata
 1 296 bytes in section .text
 
 1 296 bytes of CODE  memory
   164 bytes of CONST memory

Errors: none
Warnings: none

⌨️ 快捷键说明

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