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

📄 sd.lst

📁 Philips LPC2138 Demo Application with Keil C
💻 LST
📖 第 1 页 / 共 5 页
字号:
 000000B4  BC08      POP         {R3}
 000000B6  4718      BX          R3
 000000B8          ENDP ; 'sd_Init?T'


*** CODE SEGMENT '?PR?sd_Command?T?sd':
   72: void sd_Command(hwInterface *iface,euint8 cmd, euint16 paramx, euint16 paramy)
 00000000  B5F0      PUSH        {R4-R7,LR}
 00000002  1C1D      MOV         R5,R3 ; paramy
 00000004  ---- Variable 'paramy' assigned to Register 'R5' ----
 00000004  1C16      MOV         R6,R2 ; paramx
 00000006  ---- Variable 'paramx' assigned to Register 'R6' ----
 00000006  1C0F      MOV         R7,R1 ; cmd
 00000008  ---- Variable 'cmd' assigned to Register 'R7' ----
 00000008  1C04      MOV         R4,R0 ; iface
 0000000A  ---- Variable 'iface' assigned to Register 'R4' ----
   74:     if_spiSend(iface,0xff);
 0000000A  1C20      MOV         R0,R4 ; iface
 0000000C  21FF      MOV         R1,#0xFF
 0000000E  F7FF      BL          if_spiSend?T  ; T=0x0001  (1)
 00000010  FFF7      BL          if_spiSend?T  ; T=0x0001  (2)
   76:     if_spiSend(iface,0x40 | cmd);
 00000012  1C38      MOV         R0,R7 ; cmd
 00000014  0601      LSL         R1,R0,#0x18 ; cmd
 00000016  0E09      LSR         R1,R1,#0x18
 00000018  2040      MOV         R0,#0x40
 0000001A  4301      ORR         R1,R0
 0000001C  1C20      MOV         R0,R4 ; iface
 0000001E  F7FF      BL          if_spiSend?T  ; T=0x0001  (1)
 00000020  FFEF      BL          if_spiSend?T  ; T=0x0001  (2)
   77:     if_spiSend(iface,(euint8) (paramx >> 8)); /* MSB of parameter x */
 00000022  1C30      MOV         R0,R6 ; paramx
 00000024  0400      LSL         R0,R0,#0x10 ; paramx
 00000026  0C00      LSR         R0,R0,#0x10
 00000028  0A00      LSR         R0,R0,#0x8
 0000002A  0600      LSL         R0,R0,#0x18
 0000002C  0E00      LSR         R0,R0,#0x18
 0000002E  0601      LSL         R1,R0,#0x18
 00000030  0E09      LSR         R1,R1,#0x18
 00000032  1C20      MOV         R0,R4 ; iface
 00000034  F7FF      BL          if_spiSend?T  ; T=0x0001  (1)
 00000036  FFE4      BL          if_spiSend?T  ; T=0x0001  (2)
   78:     if_spiSend(iface,(euint8) (paramx)); /* LSB of parameter x */
 00000038  1C30      MOV         R0,R6 ; paramx
 0000003A  0600      LSL         R0,R0,#0x18 ; paramx
 0000003C  0E00      LSR         R0,R0,#0x18
 0000003E  0601      LSL         R1,R0,#0x18
 00000040  0E09      LSR         R1,R1,#0x18
 00000042  1C20      MOV         R0,R4 ; iface
 00000044  F7FF      BL          if_spiSend?T  ; T=0x0001  (1)
 00000046  FFDC      BL          if_spiSend?T  ; T=0x0001  (2)
   79:     if_spiSend(iface,(euint8) (paramy >> 8)); /* MSB of parameter y */
 00000048  1C28      MOV         R0,R5 ; paramy
 0000004A  0400      LSL         R0,R0,#0x10 ; paramy
 0000004C  0C00      LSR         R0,R0,#0x10
 0000004E  0A00      LSR         R0,R0,#0x8
 00000050  0600      LSL         R0,R0,#0x18
 00000052  0E00      LSR         R0,R0,#0x18
 00000054  0601      LSL         R1,R0,#0x18
 00000056  0E09      LSR         R1,R1,#0x18
 00000058  1C20      MOV         R0,R4 ; iface
 0000005A  F7FF      BL          if_spiSend?T  ; T=0x0001  (1)
 0000005C  FFD1      BL          if_spiSend?T  ; T=0x0001  (2)
   80:     if_spiSend(iface,(euint8) (paramy)); /* LSB of parameter y */
 0000005E  1C28      MOV         R0,R5 ; paramy
 00000060  0600      LSL         R0,R0,#0x18 ; paramy
 00000062  0E00      LSR         R0,R0,#0x18
ARM COMPILER V2.42,  sd                                                                    27/03/06  10:45:52  PAGE 11  

 00000064  0601      LSL         R1,R0,#0x18
 00000066  0E09      LSR         R1,R1,#0x18
 00000068  1C20      MOV         R0,R4 ; iface
 0000006A  F7FF      BL          if_spiSend?T  ; T=0x0001  (1)
 0000006C  FFC9      BL          if_spiSend?T  ; T=0x0001  (2)
   82:     if_spiSend(iface,0x95); /* Checksum (should be only valid for first command (0) */
 0000006E  1C20      MOV         R0,R4 ; iface
 00000070  2195      MOV         R1,#0x95
 00000072  F7FF      BL          if_spiSend?T  ; T=0x0001  (1)
 00000074  FFC5      BL          if_spiSend?T  ; T=0x0001  (2)
   84:     if_spiSend(iface,0xff); /* eat empty command - response */
 00000076  1C20      MOV         R0,R4 ; iface
 00000078  21FF      MOV         R1,#0xFF
 0000007A  F7FF      BL          if_spiSend?T  ; T=0x0001  (1)
 0000007C  FFC1      BL          if_spiSend?T  ; T=0x0001  (2)
   85: }
 0000007E  BCF0      POP         {R4-R7}
 00000080  BC08      POP         {R3}
 00000082  4718      BX          R3
 00000084          ENDP ; 'sd_Command?T'


*** CODE SEGMENT '?PR?sd_Resp8b?T?sd':
   88: euint8 sd_Resp8b(hwInterface *iface)
 00000000  B570      PUSH        {R4-R6,LR}
 00000002  1C06      MOV         R6,R0 ; iface
 00000004  ---- Variable 'iface' assigned to Register 'R6' ----
   89: {
 00000004            ; SCOPE-START
   94:     for(i=0;i<8;i++){
 00000004  2500      MOV         R5,#0x0
 00000006  ---- Variable 'i' assigned to Register 'R5' ----
 00000006  E010      B           L_19  ; T=0x0000002A
 00000008          L_20:
   95:         resp = if_spiSend(iface,0xff);
 00000008  1C30      MOV         R0,R6 ; iface
 0000000A  21FF      MOV         R1,#0xFF
 0000000C  F7FF      BL          if_spiSend?T  ; T=0x0001  (1)
 0000000E  FFF8      BL          if_spiSend?T  ; T=0x0001  (2)
 00000010  1C04      MOV         R4,R0 ; resp
 00000012  ---- Variable 'resp' assigned to Register 'R4' ----
   96:         if(resp != 0xff)
 00000012  1C20      MOV         R0,R4 ; resp
 00000014  0600      LSL         R0,R0,#0x18 ; resp
 00000016  0E00      LSR         R0,R0,#0x18
 00000018  28FF      CMP         R0,#0xFF
 0000001A  D003      BEQ         L_17  ; T=0x00000024
   97:             return(resp);
 0000001C  1C20      MOV         R0,R4 ; resp
 0000001E  0600      LSL         R0,R0,#0x18 ; resp
 00000020  0E00      LSR         R0,R0,#0x18
 00000022  E00A      B           L_23  ; T=0x0000003A
   98:     }
 00000024          L_17:
 00000024  3501      ADD         R5,#0x1
 00000026  062D      LSL         R5,R5,#0x18
 00000028  0E2D      LSR         R5,R5,#0x18
 0000002A          L_19:
 0000002A  1C28      MOV         R0,R5 ; i
 0000002C  0600      LSL         R0,R0,#0x18 ; i
 0000002E  0E00      LSR         R0,R0,#0x18
 00000030  2808      CMP         R0,#0x8
 00000032  DBE9      BLT         L_20  ; T=0x00000008
  100:     return(resp);
 00000034  1C20      MOV         R0,R4 ; resp
 00000036  0600      LSL         R0,R0,#0x18 ; resp
 00000038  0E00      LSR         R0,R0,#0x18
 0000003A            ; SCOPE-END
ARM COMPILER V2.42,  sd                                                                    27/03/06  10:45:52  PAGE 12  

  101: }
 0000003A          L_23:
 0000003A  BC70      POP         {R4-R6}
 0000003C  BC08      POP         {R3}
 0000003E  4718      BX          R3
 00000040          ENDP ; 'sd_Resp8b?T'


*** CODE SEGMENT '?PR?sd_Resp16b?T?sd':
  104: euint16 sd_Resp16b(hwInterface *iface)
 00000000  B530      PUSH        {R4-R5,LR}
 00000002  1C05      MOV         R5,R0 ; iface
 00000004  ---- Variable 'iface' assigned to Register 'R5' ----
  105: {
 00000004            ; SCOPE-START
  108:     resp = ( sd_Resp8b(iface) << 8 ) & 0xff00;
 00000004  1C28      MOV         R0,R5 ; iface
 00000006  F7FF      BL          sd_Resp8b?T  ; T=0x0001  (1)
 00000008  FFFB      BL          sd_Resp8b?T  ; T=0x0001  (2)
 0000000A  0604      LSL         R4,R0,#0x18 ; sd_Resp8b?T
 0000000C  0E24      LSR         R4,R4,#0x18
 0000000E  0224      LSL         R4,R4,#0x8
 00000010  4800      LDR         R0,=0xFF00
 00000012  4004      AND         R4,R0
 00000014  0424      LSL         R4,R4,#0x10
 00000016  0C24      LSR         R4,R4,#0x10
 00000018  ---- Variable 'resp' assigned to Register 'R4' ----
  109:     resp |= if_spiSend(iface,0xff);
 00000018  1C28      MOV         R0,R5 ; iface
 0000001A  21FF      MOV         R1,#0xFF
 0000001C  F7FF      BL          if_spiSend?T  ; T=0x0001  (1)
 0000001E  FFF0      BL          if_spiSend?T  ; T=0x0001  (2)
 00000020  0600      LSL         R0,R0,#0x18 ; if_spiSend?T
 00000022  0E00      LSR         R0,R0,#0x18
 00000024  4304      ORR         R4,R0
  111:     return(resp);
 00000026  1C20      MOV         R0,R4 ; resp
 00000028  0400      LSL         R0,R0,#0x10 ; resp
 0000002A  0C00      LSR         R0,R0,#0x10
 0000002C            ; SCOPE-END
  112: }
 0000002C  BC30      POP         {R4-R5}
 0000002E  BC08      POP         {R3}
 00000030  4718      BX          R3
 00000032          ENDP ; 'sd_Resp16b?T'


*** CODE SEGMENT '?PR?sd_Resp8bError?T?sd':
  115: void sd_Resp8bError(hwInterface *iface,euint8 value)
 00000000  B510      PUSH        {R4,LR}
 00000002  1C0C      MOV         R4,R1 ; value
 00000004  ---- Variable 'value' assigned to Register 'R4' ----
  117:     switch(value)
 00000004  1C20      MOV         R0,R4 ; value
 00000006  2801      CMP         R0,#0x1 ; value
 00000008  D023      BEQ         L_26  ; T=0x00000052
 0000000A  2802      CMP         R0,#0x2 ; value
 0000000C  D01D      BEQ         L_28  ; T=0x0000004A
 0000000E  2804      CMP         R0,#0x4 ; value
 00000010  D017      BEQ         L_29  ; T=0x00000042
 00000012  2808      CMP         R0,#0x8 ; value
 00000014  D011      BEQ         L_30  ; T=0x0000003A
 00000016  2810      CMP         R0,#0x10 ; value
 00000018  D00B      BEQ         L_31  ; T=0x00000032
 0000001A  2820      CMP         R0,#0x20 ; value
 0000001C  D005      BEQ         L_32  ; T=0x0000002A
 0000001E  2840      CMP         R0,#0x40 ; value
 00000020  D11B      BNE         L_27  ; T=0x0000005A
  119:         case 0x40:
 00000022          L_33:
ARM COMPILER V2.42,  sd                                                                    27/03/06  10:45:52  PAGE 13  

  120:             DBG((TXT("Argument out of bounds.\n")));
 00000022  4800      LDR         R0,=??S_1 ; ??S_1
 00000024  F7FF      BL          lpc2000_debug_printf?T  ; T=0x0001  (1)
 00000026  FFEC      BL          lpc2000_debug_printf?T  ; T=0x0001  (2)
  121:             break;
 00000028  E01D      B           L_25  ; T=0x00000066
  122:         case 0x20:
 0000002A          L_32:
  123:             DBG((TXT("Address out of bounds.\n")));
 0000002A  4800      LDR         R0,=??S_2 ; ??S_2
 0000002C  F7FF      BL          lpc2000_debug_printf?T  ; T=0x0001  (1)
 0000002E  FFE8      BL          lpc2000_debug_printf?T  ; T=0x0001  (2)
  124:             break;
 00000030  E019      B           L_25  ; T=0x00000066
  125:         case 0x10:
 00000032          L_31:
  126:             DBG((TXT("Error during erase sequence.\n")));
 00000032  4800      LDR         R0,=??S_3 ; ??S_3
 00000034  F7FF      BL          lpc2000_debug_printf?T  ; T=0x0001  (1)
 00000036  FFE4      BL          lpc2000_debug_printf?T  ; T=0x0001  (2)
  127:             break;
 00000038  E015      B           L_25  ; T=0x00000066
  128:         case 0x08:
 0000003A          L_30:
  129:             DBG((TXT("CRC failed.\n")));
 0000003A  4800      LDR         R0,=??S_4 ; ??S_4
 0000003C  F7FF      BL          lpc2000_debug_printf?T  ; T=0x0001  (1)
 0000003E  FFE0      BL          lpc2000_debug_printf?T  ; T=0x0001  (2)
  130:             break;
 00000040  E011      B           L_25  ; T=0x00000066
  131:         case 0x04:
 00000042          L_29:
  132:             DBG((TXT("Illegal command.\n")));
 00000042  4800      LDR         R0,=??S_5 ; ??S_5
 00000044  F7FF      BL          lpc2000_debug_printf?T  ; T=0x0001  (1)
 00000046  FFDC      BL          lpc2000_debug_printf?T  ; T=0x0001  (2)
  133:             break;
 00000048  E00D      B           L_25  ; T=0x00000066
  134:         case 0x02:
 0000004A          L_28:
  135:             DBG((TXT("Erase reset (see SanDisk docs p5-13).\n")));
 0000004A  4800      LDR         R0,=??S_6 ; ??S_6
 0000004C  F7FF      BL          lpc2000_debug_printf?T  ; T=0x0001  (1)
 0000004E  FFD8      BL          lpc2000_debug_printf?T  ; T=0x0001  (2)
  136:             break;
 00000050  E009      B           L_25  ; T=0x00000066
  137:         case 0x01:
 00000052          L_26:
  138:             DBG((TXT("Card is initialising.\n")));
 00000052  4800      LDR         R0,=??S_7 ; ??S_7
 00000054  F7FF      BL          lpc2000_debug_printf?T  ; T=0x0001  (1)
 00000056  FFD4      BL          lpc2000_debug_printf?T  ; T=0x0001  (2)
  139:             break;
 00000058  E005      B           L_25  ; T=0x00000066
  140:         default:
 0000005A          L_27:
  141:             DBG((TXT("Unknown error 0x%x (see SanDisk docs p5-13).\n"),value));
 0000005A  1C20      MOV         R0,R4 ; value
 0000005C  0601      LSL         R1,R0,#0x18 ; value
 0000005E  0E09      LSR         R1,R1,#0x18
 00000060  4800      LDR         R0,=??S_8 ; ??S_8
 00000062  F7FF      BL          lpc2000_debug_printf?T  ; T=0x0001  (1)
 00000064  FFCD      BL          lpc2000_debug_printf?T  ; T=0x0001  (2)
  143:     }
 00000066          L_25:
  144: }
ARM COMPILER V2.42,  sd                                                                    27/03/06  10:45:52  PAGE 14  

 00000066  BC10      POP         {R4}
 00000068  BC08      POP         {R3}
 0000006A  4718      BX          R3
 0000006C          ENDP ; 'sd_Resp8bError?T'

⌨️ 快捷键说明

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