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

📄 emac.lst

📁 at91sam7x256 mac驱动演示程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
    283            }
    284          
    285            if(pEmac->EMAC_TSR & AT91C_EMAC_COMP == AT91C_EMAC_COMP)	
   \                     ??AT91F_EMAC_HANDLER_0:
   \   0000003A   6069               LDR      R0,[R4, #+20]
   \   0000003C   C007               LSLS     R0,R0,#+31
   \   0000003E   36D5               BPL      ??AT91F_EMAC_HANDLER_2
    286            {
    287              LED_TurnOn(LED2);
   \   00000040   8020               MOVS     R0,#+128
   \   00000042   4003               LSLS     R0,R0,#+13       ;; #+1048576
   \   00000044   ........           _BLF     LED_TurnOn,??LED_TurnOn??rT
    288              pEmac->EMAC_TSR |= AT91C_EMAC_COMP;	
   \   00000048   6069               LDR      R0,[R4, #+20]
   \   0000004A   2021               MOVS     R1,#+32
   \   0000004C   0143               ORRS     R1,R1,R0
   \   0000004E   6161               STR      R1,[R4, #+20]
    289              for (i = 0; i <NB_TX_BUFFERS; i++)
   \   00000050   0020               MOVS     R0,#+0
   \   00000052   0600               MOVS     R6,R0
   \                     ??AT91F_EMAC_HANDLER_3:
   \   00000054   022E               CMP      R6,#+2
   \   00000056   26D2               BCS      ??AT91F_EMAC_HANDLER_4
    290              {
    291                if(TxtdList[i].U_Status.S_Status.BuffUsed == 1)
   \   00000058   0820               MOVS     R0,#+8
   \   0000005A   7043               MULS     R0,R6,R0
   \   0000005C   ....               LDR      R1,??DataTable24  ;; TxtdList
   \   0000005E   0968               LDR      R1,[R1, #+0]
   \   00000060   0818               ADDS     R0,R1,R0
   \   00000062   4068               LDR      R0,[R0, #+4]
   \   00000064   C00F               LSRS     R0,R0,#+31
   \   00000066   0128               CMP      R0,#+1
   \   00000068   1BD1               BNE      ??AT91F_EMAC_HANDLER_5
    292                {
    293                  TxtdList[i].U_Status.S_Status.Length = 0;
   \   0000006A   0820               MOVS     R0,#+8
   \   0000006C   7043               MULS     R0,R6,R0
   \   0000006E   ....               LDR      R1,??DataTable24  ;; TxtdList
   \   00000070   0968               LDR      R1,[R1, #+0]
   \   00000072   0818               ADDS     R0,R1,R0
   \   00000074   0821               MOVS     R1,#+8
   \   00000076   7143               MULS     R1,R6,R1
   \   00000078   ....               LDR      R2,??DataTable24  ;; TxtdList
   \   0000007A   1268               LDR      R2,[R2, #+0]
   \   0000007C   5118               ADDS     R1,R2,R1
   \   0000007E   4968               LDR      R1,[R1, #+4]
   \   00000080   C90A               LSRS     R1,R1,#+11
   \   00000082   C902               LSLS     R1,R1,#+11
   \   00000084   4160               STR      R1,[R0, #+4]
    294                  TxtdList[i].U_Status.S_Status.BuffUsed = 0;
   \   00000086   0820               MOVS     R0,#+8
   \   00000088   7043               MULS     R0,R6,R0
   \   0000008A   ....               LDR      R1,??DataTable24  ;; TxtdList
   \   0000008C   0968               LDR      R1,[R1, #+0]
   \   0000008E   0818               ADDS     R0,R1,R0
   \   00000090   0821               MOVS     R1,#+8
   \   00000092   7143               MULS     R1,R6,R1
   \   00000094   ....               LDR      R2,??DataTable24  ;; TxtdList
   \   00000096   1268               LDR      R2,[R2, #+0]
   \   00000098   5118               ADDS     R1,R2,R1
   \   0000009A   4968               LDR      R1,[R1, #+4]
   \   0000009C   4900               LSLS     R1,R1,#+1        ;; ZeroExtS R1,R1,#+1,#+1
   \   0000009E   4908               LSRS     R1,R1,#+1
   \   000000A0   4160               STR      R1,[R0, #+4]
    295                }
    296              }
   \                     ??AT91F_EMAC_HANDLER_5:
   \   000000A2   761C               ADDS     R6,R6,#+1
   \   000000A4   D6E7               B        ??AT91F_EMAC_HANDLER_3
    297              LED_TurnOff(LED2);
   \                     ??AT91F_EMAC_HANDLER_4:
   \   000000A6   8020               MOVS     R0,#+128
   \   000000A8   4003               LSLS     R0,R0,#+13       ;; #+1048576
   \   000000AA   ........           _BLF     LED_TurnOff,??LED_TurnOff??rT
    298            }
    299          
    300            if(pEmac->EMAC_TSR & AT91C_EMAC_UBR == AT91C_EMAC_UBR )	
   \                     ??AT91F_EMAC_HANDLER_2:
   \   000000AE   6069               LDR      R0,[R4, #+20]
   \   000000B0   C007               LSLS     R0,R0,#+31
   \   000000B2   0BD5               BPL      ??AT91F_EMAC_HANDLER_6
    301            {
    302              LED_TurnOn(LED3);	
   \   000000B4   8020               MOVS     R0,#+128
   \   000000B6   8003               LSLS     R0,R0,#+14       ;; #+2097152
   \   000000B8   ........           _BLF     LED_TurnOn,??LED_TurnOn??rT
    303              pEmac->EMAC_TSR |= AT91C_EMAC_UBR;	
   \   000000BC   6069               LDR      R0,[R4, #+20]
   \   000000BE   0121               MOVS     R1,#+1
   \   000000C0   0143               ORRS     R1,R1,R0
   \   000000C2   6161               STR      R1,[R4, #+20]
    304              LED_TurnOff(LED3);
   \   000000C4   8020               MOVS     R0,#+128
   \   000000C6   8003               LSLS     R0,R0,#+14       ;; #+2097152
   \   000000C8   ........           _BLF     LED_TurnOff,??LED_TurnOff??rT
    305            } 		
    306          }
   \                     ??AT91F_EMAC_HANDLER_6:
   \   000000CC   07B0               ADD      SP,SP,#+28
   \   000000CE   70BC               POP      {R4-R6}
   \   000000D0   01BC               POP      {R0}
   \   000000D2   0047               BX       R0               ;; return
    307          
    308          //*----------------------------------------------------------------------------
    309          //* \fn    AT91F_IcmpChksum
    310          //* \brief Process ICMP Checksum...
    311          //*----------------------------------------------------------------------------

   \                                 In segment CODE, align 4, keep-with-next
    312          unsigned short AT91F_IcmpChksum(unsigned short *p, int len)
    313          {
   \                     AT91F_IcmpChksum:
   \   00000000   30B5               PUSH     {R4,R5,LR}
   \   00000002   0200               MOVS     R2,R0
    314          	int i, t;	
    315          	for (i=0,t=0; i < len; i++, p++)
   \   00000004   0020               MOVS     R0,#+0
   \   00000006   0300               MOVS     R3,R0
   \   00000008   0020               MOVS     R0,#+0
   \   0000000A   0400               MOVS     R4,R0
   \                     ??AT91F_IcmpChksum_0:
   \   0000000C   8B42               CMP      R3,R1
   \   0000000E   0EDA               BGE      ??AT91F_IcmpChksum_1
    316          		t += SWAP16(*p);
   \   00000010   1088               LDRH     R0,[R2, #+0]
   \   00000012   0006               LSLS     R0,R0,#+24       ;; ZeroExtS R0,R0,#+24,#+24
   \   00000014   000E               LSRS     R0,R0,#+24
   \   00000016   0002               LSLS     R0,R0,#+8
   \   00000018   1588               LDRH     R5,[R2, #+0]
   \   0000001A   2D04               LSLS     R5,R5,#+16       ;; ZeroExtS R5,R5,#+16,#+16
   \   0000001C   2D0C               LSRS     R5,R5,#+16
   \   0000001E   2D0A               LSRS     R5,R5,#+8
   \   00000020   2D04               LSLS     R5,R5,#+16       ;; ZeroExtS R5,R5,#+16,#+16
   \   00000022   2D0C               LSRS     R5,R5,#+16
   \   00000024   0543               ORRS     R5,R5,R0
   \   00000026   6419               ADDS     R4,R4,R5
   \   00000028   5B1C               ADDS     R3,R3,#+1
   \   0000002A   921C               ADDS     R2,R2,#+2
   \   0000002C   EEE7               B        ??AT91F_IcmpChksum_0
    317          	t = (t & 0xffff) + (t >> 16);
   \                     ??AT91F_IcmpChksum_1:
   \   0000002E   2004               LSLS     R0,R4,#+16       ;; ZeroExtS R0,R4,#+16,#+16
   \   00000030   000C               LSRS     R0,R0,#+16
   \   00000032   2414               ASRS     R4,R4,#+16
   \   00000034   0419               ADDS     R4,R0,R4
    318          	return (~t);
   \   00000036   E043               MVNS     R0,R4
   \   00000038   0004               LSLS     R0,R0,#+16       ;; ZeroExtS R0,R0,#+16,#+16
   \   0000003A   000C               LSRS     R0,R0,#+16
   \   0000003C   30BC               POP      {R4,R5}
   \   0000003E   02BC               POP      {R1}
   \   00000040   0847               BX       R1               ;; return
    319          }
    320          
    321          
    322          //*----------------------------------------------------------------------------
    323          //* \fn    AT91F_ProcessEmacPacket
    324          //* \brief Process ARP and ICMP packets...
    325          //*----------------------------------------------------------------------------

   \                                 In segment CODE, align 4, keep-with-next
    326          int AT91F_ProcessEmacPacket(AT91PS_IPheader pHeader)
    327          {
   \                     AT91F_ProcessEmacPacket:
   \   00000000   F1B5               PUSH     {R0,R4-R7,LR}
   \   00000002   86B0               SUB      SP,SP,#+24
    328          
    329          
    330          	unsigned int i, icmp_len;
    331          	char *pData;
    332          	int status = AT91C_NO_IPPACKET;
   \   00000004   0020               MOVS     R0,#+0
   \   00000006   0490               STR      R0,[SP, #+16]
    333          	AT91PS_EMAC pEmac = (AT91PS_EMAC)AT91C_BASE_EMAC;
   \   00000008   ....               LDR      R0,??DataTable25  ;; 0xfffdc000
   \   0000000A   0590               STR      R0,[SP, #+20]
    334          	
    335          	AT91PS_EthHdr	pEth;
    336          	AT91PS_ArpHdr	pArp;
    337          	AT91PS_IPheader pIpHeader;
    338          	AT91PS_IcmpEchoHdr pIcmpEcho;
    339          	int process = 0;
   \   0000000C   0020               MOVS     R0,#+0
   \   0000000E   0500               MOVS     R5,R0
    340          	
    341          	// Receive one packet		
    342          	process = 0;	
   \   00000010   0020               MOVS     R0,#+0
   \   00000012   0500               MOVS     R5,R0
    343          	status = 0;
   \   00000014   0020               MOVS     R0,#+0
   \   00000016   0490               STR      R0,[SP, #+16]
    344          	
    345          	
    346          	for (i = 0; i < NB_RX_BUFFERS; ++i)
   \   00000018   0020               MOVS     R0,#+0
   \   0000001A   0600               MOVS     R6,R0
   \                     ??AT91F_ProcessEmacPacket_0:
   \   0000001C   642E               CMP      R6,#+100
   \   0000001E   15D2               BCS      ??AT91F_ProcessEmacPacket_1
    347          	{
    348          		if(RxtdList[i].addr & AT91C_OWNERSHIP_BIT)
   \   00000020   0820               MOVS     R0,#+8
   \   00000022   7043               MULS     R0,R6,R0
   \   00000024   ....               LDR      R1,??DataTable37  ;; RxtdList
   \   00000026   0968               LDR      R1,[R1, #+0]
   \   00000028   0858               LDR      R0,[R1, R0]
   \   0000002A   C007               LSLS     R0,R0,#+31
   \   0000002C   0CD5               BPL      ??AT91F_ProcessEmacPacket_2
    349          		{
    350          			if (pEmac->EMAC_RSR & AT91C_EMAC_REC == AT91C_EMAC_REC)
   \   0000002E   0598               LDR      R0,[SP, #+20]
   \   00000030   006A               LDR      R0,[R0, #+32]
   \   00000032   C007               LSLS     R0,R0,#+31
   \   00000034   05D5               BPL      ??AT91F_ProcessEmacPacket_3
    351          				(pEmac->EMAC_RSR) |= AT91C_EMAC_REC;							
   \   00000036   0598               LDR      R0,[SP, #+20]
   \   00000038   0599               LDR      R1,[SP, #+20]
   \   0000003A   096A               LDR      R1,[R1, #+32]
   \   0000003C   0222               MOVS     R2,#+2
   \   0000003E   0A43               ORRS     R2,R2,R1
   \   00000040   0262               STR      R2,[R0, #+32]
    352          			process = 1;	
   \                     ??AT91F_ProcessEmacPacket_3:
   \   00000042   0120           

⌨️ 快捷键说明

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