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

📄 emac.lst

📁 at91sam7x256 mac驱动演示程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
   \   0000005E   0968               LDR      R1,[R1, #+0]
   \   00000060   0818               ADDS     R0,R1,R0
   \   00000062   0500               MOVS     R5,R0
    227          		TxtdList[i].addr = val & 0xFFFFFFF8;
   \   00000064   0820               MOVS     R0,#+8
   \   00000066   6043               MULS     R0,R4,R0
   \   00000068   ....               LDR      R1,??DataTable24  ;; TxtdList
   \   0000006A   0968               LDR      R1,[R1, #+0]
   \   0000006C   EA08               LSRS     R2,R5,#+3
   \   0000006E   D200               LSLS     R2,R2,#+3
   \   00000070   0A50               STR      R2,[R1, R0]
    228          		TxtdList[i].U_Status.status = 0;
   \   00000072   0820               MOVS     R0,#+8
   \   00000074   6043               MULS     R0,R4,R0
   \   00000076   ....               LDR      R1,??DataTable24  ;; TxtdList
   \   00000078   0968               LDR      R1,[R1, #+0]
   \   0000007A   0818               ADDS     R0,R1,R0
   \   0000007C   0021               MOVS     R1,#+0
   \   0000007E   4160               STR      R1,[R0, #+4]
    229          	}	
   \   00000080   641C               ADDS     R4,R4,#+1
   \   00000082   E6E7               B        ??AT91F_EmacEntry_3
    230          	// Set the WRAP bit at the end of the list descriptor
    231          	TxtdList[NB_TX_BUFFERS-1].U_Status.S_Status.Wrap = 1;
   \                     ??AT91F_EmacEntry_4:
   \   00000084   ....               LDR      R0,??DataTable24  ;; TxtdList
   \   00000086   0068               LDR      R0,[R0, #+0]
   \   00000088   ....               LDR      R1,??DataTable24  ;; TxtdList
   \   0000008A   0968               LDR      R1,[R1, #+0]
   \   0000008C   C968               LDR      R1,[R1, #+12]
   \   0000008E   8022               MOVS     R2,#+128
   \   00000090   D205               LSLS     R2,R2,#+23       ;; #+1073741824
   \   00000092   0A43               ORRS     R2,R2,R1
   \   00000094   C260               STR      R2,[R0, #+12]
    232          
    233          	return(AT91F_EMACInit(AT91C_BASE_EMAC, (unsigned int) RxtdList, (unsigned int) TxtdList));
   \   00000096   ....               LDR      R0,??DataTable24  ;; TxtdList
   \   00000098   0268               LDR      R2,[R0, #+0]
   \   0000009A   ....               LDR      R0,??DataTable10  ;; RxtdList
   \   0000009C   0168               LDR      R1,[R0, #+0]
   \   0000009E   ....               LDR      R0,??DataTable19  ;; 0xfffdc000
   \   000000A0   ........           BL       AT91F_EMACInit
   \   000000A4   30BC               POP      {R4,R5}
   \   000000A6   02BC               POP      {R1}
   \   000000A8   0847               BX       R1               ;; return
   \   000000AA   C046               Nop      
   \                     ??AT91F_EmacEntry_2:
   \   000000AC   ........           DC32     RxPacket
   \   000000B0   ........           DC32     TxPacket
    234          }	
    235          
    236          
    237          //*----------------------------------------------------------------------------
    238          //* \fn    AT91F_TransmitPacket
    239          //* \brief Send a packet
    240          //*----------------------------------------------------------------------------

   \                                 In segment CODE, align 4, keep-with-next
    241          int AT91F_TransmitPacket(char *pData, unsigned int length)
    242          {
   \                     AT91F_TransmitPacket:
   \   00000000   30B5               PUSH     {R4,R5,LR}
   \   00000002   81B0               SUB      SP,SP,#+4
   \   00000004   0200               MOVS     R2,R0
    243          	AT91PS_EMAC pEmac = (AT91PS_EMAC)AT91C_BASE_EMAC;
   \   00000006   ....               LDR      R0,??DataTable19  ;; 0xfffdc000
   \   00000008   0300               MOVS     R3,R0
    244          	volatile int intstatus = pEmac->EMAC_TSR;
   \   0000000A   5869               LDR      R0,[R3, #+20]
   \   0000000C   0090               STR      R0,[SP, #+0]
    245          		
    246          	if ((TxtdList[TxBuffIndex].U_Status.S_Status.BuffUsed == 0))
   \   0000000E   2948               LDR      R0,??AT91F_TransmitPacket_0  ;; TxBuffIndex
   \   00000010   0068               LDR      R0,[R0, #+0]
   \   00000012   0824               MOVS     R4,#+8
   \   00000014   6043               MULS     R0,R4,R0
   \   00000016   ....               LDR      R4,??DataTable24  ;; TxtdList
   \   00000018   2468               LDR      R4,[R4, #+0]
   \   0000001A   2018               ADDS     R0,R4,R0
   \   0000001C   4068               LDR      R0,[R0, #+4]
   \   0000001E   C00F               LSRS     R0,R0,#+31
   \   00000020   0028               CMP      R0,#+0
   \   00000022   42D1               BNE      ??AT91F_TransmitPacket_1
    247          	{
    248          		TxtdList[TxBuffIndex].addr = (unsigned int)pData;
   \   00000024   2348               LDR      R0,??AT91F_TransmitPacket_0  ;; TxBuffIndex
   \   00000026   0068               LDR      R0,[R0, #+0]
   \   00000028   0824               MOVS     R4,#+8
   \   0000002A   6043               MULS     R0,R4,R0
   \   0000002C   ....               LDR      R4,??DataTable24  ;; TxtdList
   \   0000002E   2468               LDR      R4,[R4, #+0]
   \   00000030   2250               STR      R2,[R4, R0]
    249          		TxtdList[TxBuffIndex].U_Status.S_Status.Length = length;
   \   00000032   2048               LDR      R0,??AT91F_TransmitPacket_0  ;; TxBuffIndex
   \   00000034   0068               LDR      R0,[R0, #+0]
   \   00000036   0824               MOVS     R4,#+8
   \   00000038   6043               MULS     R0,R4,R0
   \   0000003A   ....               LDR      R4,??DataTable24  ;; TxtdList
   \   0000003C   2468               LDR      R4,[R4, #+0]
   \   0000003E   2018               ADDS     R0,R4,R0
   \   00000040   1C4C               LDR      R4,??AT91F_TransmitPacket_0  ;; TxBuffIndex
   \   00000042   2468               LDR      R4,[R4, #+0]
   \   00000044   0825               MOVS     R5,#+8
   \   00000046   6C43               MULS     R4,R5,R4
   \   00000048   ....               LDR      R5,??DataTable24  ;; TxtdList
   \   0000004A   2D68               LDR      R5,[R5, #+0]
   \   0000004C   2C19               ADDS     R4,R5,R4
   \   0000004E   6468               LDR      R4,[R4, #+4]
   \   00000050   E40A               LSRS     R4,R4,#+11
   \   00000052   E402               LSLS     R4,R4,#+11
   \   00000054   4D05               LSLS     R5,R1,#+21       ;; ZeroExtS R5,R1,#+21,#+21
   \   00000056   6D0D               LSRS     R5,R5,#+21
   \   00000058   2543               ORRS     R5,R5,R4
   \   0000005A   4560               STR      R5,[R0, #+4]
    250          		TxtdList[TxBuffIndex].U_Status.S_Status.LastBuff = 1;
   \   0000005C   1548               LDR      R0,??AT91F_TransmitPacket_0  ;; TxBuffIndex
   \   0000005E   0068               LDR      R0,[R0, #+0]
   \   00000060   0824               MOVS     R4,#+8
   \   00000062   6043               MULS     R0,R4,R0
   \   00000064   ....               LDR      R4,??DataTable24  ;; TxtdList
   \   00000066   2468               LDR      R4,[R4, #+0]
   \   00000068   2018               ADDS     R0,R4,R0
   \   0000006A   124C               LDR      R4,??AT91F_TransmitPacket_0  ;; TxBuffIndex
   \   0000006C   2468               LDR      R4,[R4, #+0]
   \   0000006E   0825               MOVS     R5,#+8
   \   00000070   6C43               MULS     R4,R5,R4
   \   00000072   ....               LDR      R5,??DataTable24  ;; TxtdList
   \   00000074   2D68               LDR      R5,[R5, #+0]
   \   00000076   2C19               ADDS     R4,R5,R4
   \   00000078   6468               LDR      R4,[R4, #+4]
   \   0000007A   8025               MOVS     R5,#+128
   \   0000007C   2D02               LSLS     R5,R5,#+8        ;; #+32768
   \   0000007E   2543               ORRS     R5,R5,R4
   \   00000080   4560               STR      R5,[R0, #+4]
    251          		if (TxBuffIndex == (NB_TX_BUFFERS - 1))
   \   00000082   0C48               LDR      R0,??AT91F_TransmitPacket_0  ;; TxBuffIndex
   \   00000084   0068               LDR      R0,[R0, #+0]
   \   00000086   0128               CMP      R0,#+1
   \   00000088   03D1               BNE      ??AT91F_TransmitPacket_2
    252          			TxBuffIndex = 0;
   \   0000008A   0A48               LDR      R0,??AT91F_TransmitPacket_0  ;; TxBuffIndex
   \   0000008C   0024               MOVS     R4,#+0
   \   0000008E   0460               STR      R4,[R0, #+0]
   \   00000090   04E0               B        ??AT91F_TransmitPacket_3
    253          		else
    254          			TxBuffIndex ++;
   \                     ??AT91F_TransmitPacket_2:
   \   00000092   0848               LDR      R0,??AT91F_TransmitPacket_0  ;; TxBuffIndex
   \   00000094   074C               LDR      R4,??AT91F_TransmitPacket_0  ;; TxBuffIndex
   \   00000096   2468               LDR      R4,[R4, #+0]
   \   00000098   641C               ADDS     R4,R4,#+1
   \   0000009A   0460               STR      R4,[R0, #+0]
    255          	}
    256          	else
    257          		return 2;
    258          	pEmac->EMAC_NCR |= AT91C_EMAC_TSTART;
   \                     ??AT91F_TransmitPacket_3:
   \   0000009C   1868               LDR      R0,[R3, #+0]
   \   0000009E   8024               MOVS     R4,#+128
   \   000000A0   A400               LSLS     R4,R4,#+2        ;; #+512
   \   000000A2   0443               ORRS     R4,R4,R0
   \   000000A4   1C60               STR      R4,[R3, #+0]
    259          	return 0;
   \   000000A6   0020               MOVS     R0,#+0
   \   000000A8   00E0               B        ??AT91F_TransmitPacket_4
   \                     ??AT91F_TransmitPacket_1:
   \   000000AA   0220               MOVS     R0,#+2
   \                     ??AT91F_TransmitPacket_4:
   \   000000AC   01B0               ADD      SP,SP,#+4
   \   000000AE   30BC               POP      {R4,R5}
   \   000000B0   02BC               POP      {R1}
   \   000000B2   0847               BX       R1               ;; return
   \                     ??AT91F_TransmitPacket_0:
   \   000000B4   ........           DC32     TxBuffIndex
    260          }
    261          
    262          
    263          //*----------------------------------------------------------------------------
    264          //* \fn    AT75F_EMACInt
    265          //* \brief Initialise Emac to receive packets
    266          //*----------------------------------------------------------------------------

   \                                 In segment CODE, align 4, keep-with-next
    267          void AT91F_EMAC_HANDLER (void)
    268          {
   \                     AT91F_EMAC_HANDLER:
   \   00000000   70B5               PUSH     {R4-R6,LR}
   \   00000002   87B0               SUB      SP,SP,#+28
    269            AT91S_IPheader IpHeader;
    270            AT91PS_EMAC pEmac = (AT91PS_EMAC)AT91C_BASE_EMAC;
   \   00000004   ....               LDR      R0,??DataTable19  ;; 0xfffdc000
   \   00000006   0400               MOVS     R4,R0
    271            unsigned int intstatus;
    272            unsigned int i;
    273          
    274            intstatus = pEmac->EMAC_ISR;
   \   00000008   606A               LDR      R0,[R4, #+36]
   \   0000000A   0500               MOVS     R5,R0
    275          	
    276            if (intstatus & AT91C_EMAC_RCOMP)
   \   0000000C   2800               MOVS     R0,R5
   \   0000000E   8007               LSLS     R0,R0,#+30
   \   00000010   13D5               BPL      ??AT91F_EMAC_HANDLER_0
    277            {
    278              LED_TurnOn(LED1);
   \   00000012   8020               MOVS     R0,#+128
   \   00000014   0003               LSLS     R0,R0,#+12       ;; #+524288
   \   00000016   ........           _BLF     LED_TurnOn,??LED_TurnOn??rT
    279              if (AT91F_ProcessEmacPacket(&IpHeader) == AT91C_IPPACKET)
   \   0000001A   6846               MOV      R0,SP
   \   0000001C   ........           BL       AT91F_ProcessEmacPacket
   \   00000020   0128               CMP      R0,#+1
   \   00000022   02D1               BNE      ??AT91F_EMAC_HANDLER_1
    280                AT91F_DisplayIpPacket(&IpHeader);
   \   00000024   6846               MOV      R0,SP
   \   00000026   ........           _BLF     AT91F_DisplayIpPacket,??AT91F_DisplayIpPacket??rT
    281              pEmac->EMAC_RSR |= AT91C_EMAC_REC;		
   \                     ??AT91F_EMAC_HANDLER_1:
   \   0000002A   206A               LDR      R0,[R4, #+32]
   \   0000002C   0221               MOVS     R1,#+2
   \   0000002E   0143               ORRS     R1,R1,R0
   \   00000030   2162               STR      R1,[R4, #+32]
    282              LED_TurnOff(LED1);      					
   \   00000032   8020               MOVS     R0,#+128
   \   00000034   0003               LSLS     R0,R0,#+12       ;; #+524288
   \   00000036   ........           _BLF     LED_TurnOff,??LED_TurnOff??rT

⌨️ 快捷键说明

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