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

📄 emac.lst

📁 AT91SAM7X256芯片底层驱动源码。在IAR430环境下编译
💻 LST
📖 第 1 页 / 共 5 页
字号:
   \   0000002C   8020               MOV         R0,#+0x80
   \   0000002E   0003               LSL         R0,R0,#+0xC        ;; #+0x80000
   \   00000030   ........           _BLF        LED_TurnOff,LED_TurnOff??rT
    284            }
    285          
    286            if(pEmac->EMAC_TSR & AT91C_EMAC_COMP == AT91C_EMAC_COMP)	
   \                     ??AT91F_EMAC_HANDLER_0:
   \   00000034   6069               LDR         R0,[R4, #+0x14]
   \   00000036   C007               LSL         R0,R0,#+0x1F
   \   00000038   35D5               BPL         ??AT91F_EMAC_HANDLER_2
    287            {
    288              LED_TurnOn(LED2);
   \   0000003A   8020               MOV         R0,#+0x80
   \   0000003C   4003               LSL         R0,R0,#+0xD        ;; #+0x100000
   \   0000003E   ........           _BLF        LED_TurnOn,LED_TurnOn??rT
    289              pEmac->EMAC_TSR |= AT91C_EMAC_COMP;	
   \   00000042   6069               LDR         R0,[R4, #+0x14]
   \   00000044   2021               MOV         R1,#+0x20
   \   00000046   0143               ORR         R1,R0
   \   00000048   6161               STR         R1,[R4, #+0x14]
    290              for (i = 0; i <NB_TX_BUFFERS; i++)
   \   0000004A   0020               MOV         R0,#+0
   \   0000004C   25E0               B           ??AT91F_EMAC_HANDLER_3
    291              {
    292                if(TxtdList[i].U_Status.S_Status.BuffUsed == 1)
   \                     ??AT91F_EMAC_HANDLER_4:
   \   0000004E   0821               MOV         R1,#+0x8
   \   00000050   4143               MUL         R1,R0
   \   00000052   ....               LDR         R2,??DataTable24   ;; TxtdList
   \   00000054   1268               LDR         R2,[R2, #+0]
   \   00000056   5118               ADD         R1,R2,R1
   \   00000058   4968               LDR         R1,[R1, #+0x4]
   \   0000005A   C90F               LSR         R1,R1,#+0x1F
   \   0000005C   0129               CMP         R1,#+0x1
   \   0000005E   1BD1               BNE         ??AT91F_EMAC_HANDLER_5
    293                {
    294                  TxtdList[i].U_Status.S_Status.Length = 0;
   \   00000060   0821               MOV         R1,#+0x8
   \   00000062   4143               MUL         R1,R0
   \   00000064   ....               LDR         R2,??DataTable24   ;; TxtdList
   \   00000066   1268               LDR         R2,[R2, #+0]
   \   00000068   5118               ADD         R1,R2,R1
   \   0000006A   0822               MOV         R2,#+0x8
   \   0000006C   4243               MUL         R2,R0
   \   0000006E   ....               LDR         R3,??DataTable24   ;; TxtdList
   \   00000070   1B68               LDR         R3,[R3, #+0]
   \   00000072   9A18               ADD         R2,R3,R2
   \   00000074   5268               LDR         R2,[R2, #+0x4]
   \   00000076   D20A               LSR         R2,R2,#+0xB
   \   00000078   D202               LSL         R2,R2,#+0xB
   \   0000007A   4A60               STR         R2,[R1, #+0x4]
    295                  TxtdList[i].U_Status.S_Status.BuffUsed = 0;
   \   0000007C   0821               MOV         R1,#+0x8
   \   0000007E   4143               MUL         R1,R0
   \   00000080   ....               LDR         R2,??DataTable24   ;; TxtdList
   \   00000082   1268               LDR         R2,[R2, #+0]
   \   00000084   5118               ADD         R1,R2,R1
   \   00000086   0822               MOV         R2,#+0x8
   \   00000088   4243               MUL         R2,R0
   \   0000008A   ....               LDR         R3,??DataTable24   ;; TxtdList
   \   0000008C   1B68               LDR         R3,[R3, #+0]
   \   0000008E   9A18               ADD         R2,R3,R2
   \   00000090   5268               LDR         R2,[R2, #+0x4]
   \   00000092   5200               LSL         R2,R2,#+0x1        ;; ZeroExt     R2,R2,#+0x1,#+0x1
   \   00000094   5208               LSR         R2,R2,#+0x1
   \   00000096   4A60               STR         R2,[R1, #+0x4]
    296                }
    297              }
   \                     ??AT91F_EMAC_HANDLER_5:
   \   00000098   401C               ADD         R0,#+0x1
   \                     ??AT91F_EMAC_HANDLER_3:
   \   0000009A   0228               CMP         R0,#+0x2
   \   0000009C   D7D3               BCC         ??AT91F_EMAC_HANDLER_4
    298              LED_TurnOff(LED2);
   \   0000009E   8020               MOV         R0,#+0x80
   \   000000A0   4003               LSL         R0,R0,#+0xD        ;; #+0x100000
   \   000000A2   ........           _BLF        LED_TurnOff,LED_TurnOff??rT
    299            }
    300          
    301            if(pEmac->EMAC_TSR & AT91C_EMAC_UBR == AT91C_EMAC_UBR )	
   \                     ??AT91F_EMAC_HANDLER_2:
   \   000000A6   6069               LDR         R0,[R4, #+0x14]
   \   000000A8   C007               LSL         R0,R0,#+0x1F
   \   000000AA   0BD5               BPL         ??AT91F_EMAC_HANDLER_6
    302            {
    303              LED_TurnOn(LED3);	
   \   000000AC   8020               MOV         R0,#+0x80
   \   000000AE   8003               LSL         R0,R0,#+0xE        ;; #+0x200000
   \   000000B0   ........           _BLF        LED_TurnOn,LED_TurnOn??rT
    304              pEmac->EMAC_TSR |= AT91C_EMAC_UBR;	
   \   000000B4   6069               LDR         R0,[R4, #+0x14]
   \   000000B6   0121               MOV         R1,#+0x1
   \   000000B8   0143               ORR         R1,R0
   \   000000BA   6161               STR         R1,[R4, #+0x14]
    305              LED_TurnOff(LED3);
   \   000000BC   8020               MOV         R0,#+0x80
   \   000000BE   8003               LSL         R0,R0,#+0xE        ;; #+0x200000
   \   000000C0   ........           _BLF        LED_TurnOff,LED_TurnOff??rT
    306            } 		
    307          }
   \                     ??AT91F_EMAC_HANDLER_6:
   \   000000C4   07B0               ADD         SP,#+0x1C
   \   000000C6   10BC               POP         {R4}
   \   000000C8   01BC               POP         {R0}
   \   000000CA   0047               BX          R0                 ;; return
    308          
    309          //*----------------------------------------------------------------------------
    310          //* \fn    AT91F_IcmpChksum
    311          //* \brief Process ICMP Checksum...
    312          //*----------------------------------------------------------------------------

   \                                 In segment CODE, align 4, keep-with-next
    313          unsigned short AT91F_IcmpChksum(unsigned short *p, int len)
    314          {
   \                     AT91F_IcmpChksum:
   \   00000000   30B5               PUSH        {R4,R5,LR}
    315          	int i, t;	
    316          	for (i=0,t=0; i < len; i++, p++)
   \   00000002   0023               MOV         R3,#+0
   \   00000004   0022               MOV         R2,#+0
   \   00000006   0DE0               B           ??AT91F_IcmpChksum_0
    317          		t += SWAP16(*p);
   \                     ??AT91F_IcmpChksum_1:
   \   00000008   0488               LDRH        R4,[R0, #+0]
   \   0000000A   2406               LSL         R4,R4,#+0x18       ;; ZeroExt     R4,R4,#+0x18,#+0x18
   \   0000000C   240E               LSR         R4,R4,#+0x18
   \   0000000E   2402               LSL         R4,R4,#+0x8
   \   00000010   0588               LDRH        R5,[R0, #+0]
   \   00000012   2D04               LSL         R5,R5,#+0x10       ;; ZeroExt     R5,R5,#+0x10,#+0x10
   \   00000014   2D0C               LSR         R5,R5,#+0x10
   \   00000016   2D0A               LSR         R5,R5,#+0x8
   \   00000018   2D04               LSL         R5,R5,#+0x10       ;; ZeroExt     R5,R5,#+0x10,#+0x10
   \   0000001A   2D0C               LSR         R5,R5,#+0x10
   \   0000001C   2543               ORR         R5,R4
   \   0000001E   5219               ADD         R2,R2,R5
   \   00000020   5B1C               ADD         R3,#+0x1
   \   00000022   801C               ADD         R0,#+0x2
   \                     ??AT91F_IcmpChksum_0:
   \   00000024   8B42               CMP         R3,R1
   \   00000026   EFDB               BLT         ??AT91F_IcmpChksum_1
    318          	t = (t & 0xffff) + (t >> 16);
   \   00000028   1004               LSL         R0,R2,#+0x10       ;; ZeroExt     R0,R2,#+0x10,#+0x10
   \   0000002A   000C               LSR         R0,R0,#+0x10
   \   0000002C   111C               MOV         R1,R2
   \   0000002E   0914               ASR         R1,R1,#+0x10
   \   00000030   4218               ADD         R2,R0,R1
    319          	return (~t);
   \   00000032   D043               MVN         R0,R2
   \   00000034   0004               LSL         R0,R0,#+0x10       ;; ZeroExt     R0,R0,#+0x10,#+0x10
   \   00000036   000C               LSR         R0,R0,#+0x10
   \   00000038   30BC               POP         {R4,R5}
   \   0000003A   02BC               POP         {R1}
   \   0000003C   0847               BX          R1                 ;; return
    320          }
    321          
    322          
    323          //*----------------------------------------------------------------------------
    324          //* \fn    AT91F_ProcessEmacPacket
    325          //* \brief Process ARP and ICMP packets...
    326          //*----------------------------------------------------------------------------

   \                                 In segment CODE, align 4, keep-with-next
    327          int AT91F_ProcessEmacPacket(AT91PS_IPheader pHeader)
    328          {
   \                     AT91F_ProcessEmacPacket:
   \   00000000   F0B5               PUSH        {R4-R7,LR}
   \   00000002   83B0               SUB         SP,#+0xC
    329          
    330          
    331          	unsigned int i, icmp_len;
    332          	char *pData;
    333          	int status = AT91C_NO_IPPACKET;
   \   00000004   0021               MOV         R1,#+0
   \   00000006   0291               STR         R1,[SP, #+0x8]
    334          	AT91PS_EMAC pEmac = (AT91PS_EMAC)AT91C_BASE_EMAC;
   \   00000008   ....               LDR         R1,??DataTable25   ;; 0xfffdc000
    335          	
    336          	AT91PS_EthHdr	pEth;
    337          	AT91PS_ArpHdr	pArp;
    338          	AT91PS_IPheader pIpHeader;
    339          	AT91PS_IcmpEchoHdr pIcmpEcho;
    340          	int process = 0;
   \   0000000A   0024               MOV         R4,#+0
    341          	
    342          	// Receive one packet		
    343          	process = 0;	
   \   0000000C   0022               MOV         R2,#+0
   \   0000000E   141C               MOV         R4,R2
    344          	status = 0;
   \   00000010   0022               MOV         R2,#+0
   \   00000012   0292               STR         R2,[SP, #+0x8]
    345          	
    346          	
    347          	for (i = 0; i < NB_RX_BUFFERS; ++i)
   \   00000014   0022               MOV         R2,#+0
   \   00000016   00E0               B           ??AT91F_ProcessEmacPacket_0
   \                     ??AT91F_ProcessEmacPacket_1:
   \   00000018   521C               ADD         R2,#+0x1
   \                     ??AT91F_ProcessEmacPacket_0:
   \   0000001A   642A               CMP         R2,#+0x64
   \   0000001C   0ED2               BCS         ??AT91F_ProcessEmacPacket_2
    348          	{
    349          		if(RxtdList[i].addr & AT91C_OWNERSHIP_BIT)
   \   0000001E   0823               MOV         R3,#+0x8
   \   00000020   5343               MUL         R3,R2
   \   00000022   ....               LDR         R5,??DataTable37   ;; RxtdList
   \   00000024   2D68               LDR         R5,[R5, #+0]
   \   00000026   EB58               LDR         R3,[R5, R3]
   \   00000028   DB07               LSL         R3,R3,#+0x1F
   \   0000002A   F5D5               BPL         ??AT91F_ProcessEmacPacket_1
    350          		{
    351          			if (pEmac->EMAC_RSR & AT91C_EMAC_REC == AT91C_EMAC_REC)
   \   0000002C   0B6A               LDR         R3,[R1, #+0x20]
   \   0000002E   DB07               LSL         R3,R3,#+0x1F
   \   00000030   03D5               BPL         ??AT91F_ProcessEmacPacket

⌨️ 快捷键说明

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