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

📄 emac.lst

📁 AT91SAM7X256芯片底层驱动源码。在IAR430环境下编译
💻 LST
📖 第 1 页 / 共 5 页
字号:
   \   00000054   144A               LDR         R2,??AT91F_EmacEntry_2+0x4  ;; TxPacket
   \   00000056   1268               LDR         R2,[R2, #+0]
   \   00000058   5118               ADD         R1,R2,R1
    228          		TxtdList[i].addr = val & 0xFFFFFFF8;
   \   0000005A   0822               MOV         R2,#+0x8
   \   0000005C   4243               MUL         R2,R0
   \   0000005E   ....               LDR         R3,??DataTable24   ;; TxtdList
   \   00000060   1B68               LDR         R3,[R3, #+0]
   \   00000062   0724               MOV         R4,#+0x7
   \   00000064   A143               BIC         R1,R4
   \   00000066   9950               STR         R1,[R3, R2]
    229          		TxtdList[i].U_Status.status = 0;
   \   00000068   0821               MOV         R1,#+0x8
   \   0000006A   4143               MUL         R1,R0
   \   0000006C   ....               LDR         R2,??DataTable24   ;; TxtdList
   \   0000006E   1268               LDR         R2,[R2, #+0]
   \   00000070   5118               ADD         R1,R2,R1
   \   00000072   0022               MOV         R2,#+0
   \   00000074   4A60               STR         R2,[R1, #+0x4]
    230          	}	
   \   00000076   401C               ADD         R0,#+0x1
   \                     ??AT91F_EmacEntry_3:
   \   00000078   0228               CMP         R0,#+0x2
   \   0000007A   E8D3               BCC         ??AT91F_EmacEntry_4
    231          	// Set the WRAP bit at the end of the list descriptor
    232          	TxtdList[NB_TX_BUFFERS-1].U_Status.S_Status.Wrap = 1;
   \   0000007C   ....               LDR         R0,??DataTable24   ;; TxtdList
   \   0000007E   0068               LDR         R0,[R0, #+0]
   \   00000080   ....               LDR         R1,??DataTable24   ;; TxtdList
   \   00000082   0968               LDR         R1,[R1, #+0]
   \   00000084   C968               LDR         R1,[R1, #+0xC]
   \   00000086   8022               MOV         R2,#+0x80
   \   00000088   D205               LSL         R2,R2,#+0x17       ;; #+0x40000000
   \   0000008A   0A43               ORR         R2,R1
   \   0000008C   C260               STR         R2,[R0, #+0xC]
    233          
    234          	return(AT91F_EMACInit(AT91C_BASE_EMAC, (unsigned int) RxtdList, (unsigned int) TxtdList));
   \   0000008E   ....               LDR         R0,??DataTable24   ;; TxtdList
   \   00000090   0268               LDR         R2,[R0, #+0]
   \   00000092   ....               LDR         R0,??DataTable10   ;; RxtdList
   \   00000094   0168               LDR         R1,[R0, #+0]
   \   00000096   ....               LDR         R0,??DataTable19   ;; 0xfffdc000
   \   00000098   ........           BL          AT91F_EMACInit
   \   0000009C   10BC               POP         {R4}
   \   0000009E   02BC               POP         {R1}
   \   000000A0   0847               BX          R1                 ;; return
   \   000000A2   C046               NOP         
   \                     ??AT91F_EmacEntry_2:
   \   000000A4   ........           DC32        RxPacket
   \   000000A8   ........           DC32        TxPacket
    235          }	
    236          
    237          
    238          //*----------------------------------------------------------------------------
    239          //* \fn    AT91F_TransmitPacket
    240          //* \brief Send a packet
    241          //*----------------------------------------------------------------------------

   \                                 In segment CODE, align 4, keep-with-next
    242          int AT91F_TransmitPacket(char *pData, unsigned int length)
    243          {
   \                     AT91F_TransmitPacket:
   \   00000000   10B5               PUSH        {R4,LR}
   \   00000002   81B0               SUB         SP,#+0x4
    244          	AT91PS_EMAC pEmac = (AT91PS_EMAC)AT91C_BASE_EMAC;
   \   00000004   ....               LDR         R2,??DataTable19   ;; 0xfffdc000
    245          	volatile int intstatus = pEmac->EMAC_TSR;
   \   00000006   5369               LDR         R3,[R2, #+0x14]
   \   00000008   0093               STR         R3,[SP, #+0]
    246          		
    247          	if ((TxtdList[TxBuffIndex].U_Status.S_Status.BuffUsed == 0))
   \   0000000A   294B               LDR         R3,??AT91F_TransmitPacket_0  ;; TxBuffIndex
   \   0000000C   1B68               LDR         R3,[R3, #+0]
   \   0000000E   0824               MOV         R4,#+0x8
   \   00000010   6343               MUL         R3,R4
   \   00000012   ....               LDR         R4,??DataTable24   ;; TxtdList
   \   00000014   2468               LDR         R4,[R4, #+0]
   \   00000016   E318               ADD         R3,R4,R3
   \   00000018   5B68               LDR         R3,[R3, #+0x4]
   \   0000001A   DB0F               LSR         R3,R3,#+0x1F
   \   0000001C   002B               CMP         R3,#+0
   \   0000001E   42D1               BNE         ??AT91F_TransmitPacket_1
    248          	{
    249          		TxtdList[TxBuffIndex].addr = (unsigned int)pData;
   \   00000020   234B               LDR         R3,??AT91F_TransmitPacket_0  ;; TxBuffIndex
   \   00000022   1B68               LDR         R3,[R3, #+0]
   \   00000024   0824               MOV         R4,#+0x8
   \   00000026   6343               MUL         R3,R4
   \   00000028   ....               LDR         R4,??DataTable24   ;; TxtdList
   \   0000002A   2468               LDR         R4,[R4, #+0]
   \   0000002C   E050               STR         R0,[R4, R3]
    250          		TxtdList[TxBuffIndex].U_Status.S_Status.Length = length;
   \   0000002E   2048               LDR         R0,??AT91F_TransmitPacket_0  ;; TxBuffIndex
   \   00000030   0068               LDR         R0,[R0, #+0]
   \   00000032   0823               MOV         R3,#+0x8
   \   00000034   5843               MUL         R0,R3
   \   00000036   ....               LDR         R3,??DataTable24   ;; TxtdList
   \   00000038   1B68               LDR         R3,[R3, #+0]
   \   0000003A   1818               ADD         R0,R3,R0
   \   0000003C   1C4B               LDR         R3,??AT91F_TransmitPacket_0  ;; TxBuffIndex
   \   0000003E   1B68               LDR         R3,[R3, #+0]
   \   00000040   0824               MOV         R4,#+0x8
   \   00000042   6343               MUL         R3,R4
   \   00000044   ....               LDR         R4,??DataTable24   ;; TxtdList
   \   00000046   2468               LDR         R4,[R4, #+0]
   \   00000048   E318               ADD         R3,R4,R3
   \   0000004A   5B68               LDR         R3,[R3, #+0x4]
   \   0000004C   DB0A               LSR         R3,R3,#+0xB
   \   0000004E   DB02               LSL         R3,R3,#+0xB
   \   00000050   4905               LSL         R1,R1,#+0x15       ;; ZeroExt     R1,R1,#+0x15,#+0x15
   \   00000052   490D               LSR         R1,R1,#+0x15
   \   00000054   1943               ORR         R1,R3
   \   00000056   4160               STR         R1,[R0, #+0x4]
    251          		TxtdList[TxBuffIndex].U_Status.S_Status.LastBuff = 1;
   \   00000058   1548               LDR         R0,??AT91F_TransmitPacket_0  ;; TxBuffIndex
   \   0000005A   0068               LDR         R0,[R0, #+0]
   \   0000005C   0821               MOV         R1,#+0x8
   \   0000005E   4843               MUL         R0,R1
   \   00000060   ....               LDR         R1,??DataTable24   ;; TxtdList
   \   00000062   0968               LDR         R1,[R1, #+0]
   \   00000064   0818               ADD         R0,R1,R0
   \   00000066   1249               LDR         R1,??AT91F_TransmitPacket_0  ;; TxBuffIndex
   \   00000068   0968               LDR         R1,[R1, #+0]
   \   0000006A   0823               MOV         R3,#+0x8
   \   0000006C   5943               MUL         R1,R3
   \   0000006E   ....               LDR         R3,??DataTable24   ;; TxtdList
   \   00000070   1B68               LDR         R3,[R3, #+0]
   \   00000072   5918               ADD         R1,R3,R1
   \   00000074   4968               LDR         R1,[R1, #+0x4]
   \   00000076   8023               MOV         R3,#+0x80
   \   00000078   1B02               LSL         R3,R3,#+0x8        ;; #+0x8000
   \   0000007A   0B43               ORR         R3,R1
   \   0000007C   4360               STR         R3,[R0, #+0x4]
    252          		if (TxBuffIndex == (NB_TX_BUFFERS - 1))
   \   0000007E   0C48               LDR         R0,??AT91F_TransmitPacket_0  ;; TxBuffIndex
   \   00000080   0068               LDR         R0,[R0, #+0]
   \   00000082   0128               CMP         R0,#+0x1
   \   00000084   03D1               BNE         ??AT91F_TransmitPacket_2
    253          			TxBuffIndex = 0;
   \   00000086   0A48               LDR         R0,??AT91F_TransmitPacket_0  ;; TxBuffIndex
   \   00000088   0021               MOV         R1,#+0
   \   0000008A   0160               STR         R1,[R0, #+0]
   \   0000008C   04E0               B           ??AT91F_TransmitPacket_3
    254          		else
    255          			TxBuffIndex ++;
   \                     ??AT91F_TransmitPacket_2:
   \   0000008E   0848               LDR         R0,??AT91F_TransmitPacket_0  ;; TxBuffIndex
   \   00000090   0749               LDR         R1,??AT91F_TransmitPacket_0  ;; TxBuffIndex
   \   00000092   0968               LDR         R1,[R1, #+0]
   \   00000094   491C               ADD         R1,#+0x1
   \   00000096   0160               STR         R1,[R0, #+0]
    256          	}
    257          	else
    258          		return 2;
    259          	pEmac->EMAC_NCR |= AT91C_EMAC_TSTART;
   \                     ??AT91F_TransmitPacket_3:
   \   00000098   1068               LDR         R0,[R2, #+0]
   \   0000009A   8021               MOV         R1,#+0x80
   \   0000009C   8900               LSL         R1,R1,#+0x2        ;; #+0x200
   \   0000009E   0143               ORR         R1,R0
   \   000000A0   1160               STR         R1,[R2, #+0]
    260          	return 0;
   \   000000A2   0020               MOV         R0,#+0
   \   000000A4   00E0               B           ??AT91F_TransmitPacket_4
   \                     ??AT91F_TransmitPacket_1:
   \   000000A6   0220               MOV         R0,#+0x2
   \                     ??AT91F_TransmitPacket_4:
   \   000000A8   01B0               ADD         SP,#+0x4
   \   000000AA   10BC               POP         {R4}
   \   000000AC   02BC               POP         {R1}
   \   000000AE   0847               BX          R1                 ;; return
   \                     ??AT91F_TransmitPacket_0:
   \   000000B0   ........           DC32        TxBuffIndex
    261          }
    262          
    263          
    264          //*----------------------------------------------------------------------------
    265          //* \fn    AT75F_EMACInt
    266          //* \brief Initialise Emac to receive packets
    267          //*----------------------------------------------------------------------------

   \                                 In segment CODE, align 4, keep-with-next
    268          void AT91F_EMAC_HANDLER (void)
    269          {
   \                     AT91F_EMAC_HANDLER:
   \   00000000   10B5               PUSH        {R4,LR}
   \   00000002   87B0               SUB         SP,#+0x1C
    270            AT91S_IPheader IpHeader;
    271            AT91PS_EMAC pEmac = (AT91PS_EMAC)AT91C_BASE_EMAC;
   \   00000004   ....               LDR         R4,??DataTable19   ;; 0xfffdc000
    272            unsigned int intstatus;
    273            unsigned int i;
    274          
    275            intstatus = pEmac->EMAC_ISR;
   \   00000006   606A               LDR         R0,[R4, #+0x24]
    276          	
    277            if (intstatus & AT91C_EMAC_RCOMP)
   \   00000008   8007               LSL         R0,R0,#+0x1E
   \   0000000A   13D5               BPL         ??AT91F_EMAC_HANDLER_0
    278            {
    279              LED_TurnOn(LED1);
   \   0000000C   8020               MOV         R0,#+0x80
   \   0000000E   0003               LSL         R0,R0,#+0xC        ;; #+0x80000
   \   00000010   ........           _BLF        LED_TurnOn,LED_TurnOn??rT
    280              if (AT91F_ProcessEmacPacket(&IpHeader) == AT91C_IPPACKET)
   \   00000014   6846               MOV         R0,SP
   \   00000016   ........           BL          AT91F_ProcessEmacPacket
   \   0000001A   0128               CMP         R0,#+0x1
   \   0000001C   02D1               BNE         ??AT91F_EMAC_HANDLER_1
    281                AT91F_DisplayIpPacket(&IpHeader);
   \   0000001E   6846               MOV         R0,SP
   \   00000020   ........           _BLF        AT91F_DisplayIpPacket,AT91F_DisplayIpPacket??rT
    282              pEmac->EMAC_RSR |= AT91C_EMAC_REC;		
   \                     ??AT91F_EMAC_HANDLER_1:
   \   00000024   206A               LDR         R0,[R4, #+0x20]
   \   00000026   0221               MOV         R1,#+0x2
   \   00000028   0143               ORR         R1,R0
   \   0000002A   2162               STR         R1,[R4, #+0x20]
    283              LED_TurnOff(LED1);      					

⌨️ 快捷键说明

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