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

📄 main.lst

📁 at91sam7x256 mac驱动演示程序
💻 LST
📖 第 1 页 / 共 4 页
字号:
    178                        AT91C_BASE_PIOB, // PIO controller base address
    179                        ((unsigned int) AT91C_PB2_ETX0    ) |
    180                        ((unsigned int) AT91C_PB12_ETXER   ) |
    181                        ((unsigned int) AT91C_PB16_ECOL    ) |
    182                        ((unsigned int) AT91C_PB11_ETX3    ) |
    183                        ((unsigned int) AT91C_PB6_ERX1    ) |
    184                        ((unsigned int) AT91C_PB15_ERXDV_ECRSDV   ) |
    185                        ((unsigned int) AT91C_PB13_ERX2    ) |
    186                        ((unsigned int) AT91C_PB3_ETX1    ) |
    187                        ((unsigned int) AT91C_PB8_EMDC    ) |
    188                        ((unsigned int) AT91C_PB5_ERX0    ) |
    189                        ((unsigned int) AT91C_PB14_ERX3    ) |
    190                        ((unsigned int) AT91C_PB4_ECRS) |
    191                        ((unsigned int) AT91C_PB1_ETXEN   ) |
    192                        ((unsigned int) AT91C_PB10_ETX2    ) |
    193                        ((unsigned int) AT91C_PB0_ETXCK_EREFCK) |
    194                        ((unsigned int) AT91C_PB9_EMDIO   ) |
    195                        ((unsigned int) AT91C_PB7_ERXER   ) |
    196                        ((unsigned int) AT91C_PB17_ERXCK   ),
    197                        0);
   \   0000007E   0022               MOVS     R2,#+0
   \   00000080   4D49               LDR      R1,??main_0+0x24  ;; 0x3ffff
   \   00000082   4448               LDR      R0,??main_0      ;; 0xfffff600
   \   00000084   ........           _BLF     AT91F_PIO_CfgPeriph,??AT91F_PIO_CfgPeriph??rT
    198          
    199          
    200            //Enable com between EMAC PHY
    201            AT91F_Enable_Mdi(pEMAC);
   \   00000088   3000               MOVS     R0,R6
   \   0000008A   ........           _BLF     AT91F_Enable_Mdi,??AT91F_Enable_Mdi??rT
    202          
    203            //PHY configuration
    204          #ifndef RMII
    205            //PHY has internal pull down : disable MII isolate
    206            read_phy(pEMAC, AT91C_PHY_ADDR, MII_BMCR, (unsigned int *)&control);
   \   0000008E   6B46               MOV      R3,SP
   \   00000090   0022               MOVS     R2,#+0
   \   00000092   1F21               MOVS     R1,#+31
   \   00000094   3000               MOVS     R0,R6
   \   00000096   ........           _BLF     read_phy,??read_phy??rT
    207            read_phy(pEMAC, AT91C_PHY_ADDR, MII_BMCR, (unsigned int *)&control);
   \   0000009A   6B46               MOV      R3,SP
   \   0000009C   0022               MOVS     R2,#+0
   \   0000009E   1F21               MOVS     R1,#+31
   \   000000A0   3000               MOVS     R0,R6
   \   000000A2   ........           _BLF     read_phy,??read_phy??rT
    208            control&=~BMCR_ISOLATE;
   \   000000A6   0098               LDR      R0,[SP, #+0]
   \   000000A8   4449               LDR      R1,??main_0+0x28  ;; 0xfffffbff
   \   000000AA   0140               ANDS     R1,R1,R0
   \   000000AC   0091               STR      R1,[SP, #+0]
    209            write_phy(pEMAC, AT91C_PHY_ADDR, MII_BMCR, control);
   \   000000AE   009B               LDR      R3,[SP, #+0]
   \   000000B0   0022               MOVS     R2,#+0
   \   000000B2   1F21               MOVS     R1,#+31
   \   000000B4   3000               MOVS     R0,R6
   \   000000B6   ........           _BLF     write_phy,??write_phy??rT
    210          #endif
    211          
    212            // Wait for PHY auto negotiation completed
    213            do {
    214              	read_phy(pEMAC, AT91C_PHY_ADDR, MII_BMSR, (unsigned int *)&status);
   \                     ??main_2:
   \   000000BA   01AB               ADD      R3,SP,#+4
   \   000000BC   0122               MOVS     R2,#+1
   \   000000BE   1F21               MOVS     R1,#+31
   \   000000C0   3000               MOVS     R0,R6
   \   000000C2   ........           _BLF     read_phy,??read_phy??rT
    215          	read_phy(pEMAC, AT91C_PHY_ADDR, MII_BMSR, (unsigned int *)&status);
   \   000000C6   01AB               ADD      R3,SP,#+4
   \   000000C8   0122               MOVS     R2,#+1
   \   000000CA   1F21               MOVS     R1,#+31
   \   000000CC   3000               MOVS     R0,R6
   \   000000CE   ........           _BLF     read_phy,??read_phy??rT
    216            }
    217            while (!(status & BMSR_ANEGCOMPLETE));
   \   000000D2   0198               LDR      R0,[SP, #+4]
   \   000000D4   8006               LSLS     R0,R0,#+26
   \   000000D6   F0D5               BPL      ??main_2
    218            AT91F_Disable_Mdi(pEMAC);
   \   000000D8   3000               MOVS     R0,R6
   \   000000DA   ........           _BLF     AT91F_Disable_Mdi,??AT91F_Disable_Mdi??rT
    219          
    220          #ifdef RMII
    221            //Enable EMAC in RMII mode, enable RMII clock (50MHz from oscillator on ERFCK)
    222            pEMAC->EMAC_USRIO= AT91C_EMAC_RMII | AT91C_EMAC_CLKEN ;
    223          #else
    224            //Enable EMAC in MII mode, enable clock ERXCK and ETXCK
    225            pEMAC->EMAC_USRIO= AT91C_EMAC_CLKEN ;
   \   000000DE   C020               MOVS     R0,#+192
   \   000000E0   0221               MOVS     R1,#+2
   \   000000E2   3150               STR      R1,[R6, R0]
    226          #endif
    227          
    228            //EMAC configuration
    229            if ( AT91F_EmacEntry())
   \   000000E4   ........           _BLF     AT91F_EmacEntry,??AT91F_EmacEntry??rT
   \   000000E8   0028               CMP      R0,#+0
   \   000000EA   08D0               BEQ      ??main_3
    230            {
    231              sprintf(MsgBuffer, "Error EMAC init: 0x%x", status);
   \   000000EC   019A               LDR      R2,[SP, #+4]
   \   000000EE   3449               LDR      R1,??main_0+0x2C  ;; `?<Constant "Error EMAC init: 0x%x">`
   \   000000F0   ....               LDR      R0,??DataTable21  ;; MsgBuffer
   \   000000F2   ........           _BLF     sprintf,??sprintf??rT
    232              AT91F_DBGU_Printk(MsgBuffer);
   \   000000F6   ....               LDR      R0,??DataTable21  ;; MsgBuffer
   \   000000F8   ........           _BLF     AT91F_DBGU_Printk,??AT91F_DBGU_Printk??rT
    233              while(1);
   \                     ??main_4:
   \   000000FC   FEE7               B        ??main_4
    234            }
    235          
    236          #ifdef EMAC_IRQ
    237              AT91F_AIC_ConfigureIt (AT91C_BASE_AIC, AT91C_ID_EMAC_B, AT91C_AIC_PRIOR_HIGHEST, AT91C_AIC_SRCTYPE_INT_HIGH_LEVEL, AT91F_EMAC_HANDLER);						
    238              pEMAC->EMAC_IDR = 0x3fff;
    239              AT91F_AIC_EnableIt(AT91C_BASE_AIC, AT91C_ID_EMAC_B); //AT91C_ID_EMACB
    240              pEMAC->EMAC_IER = AT91C_EMAC_RCOMP | AT91C_EMAC_TCOMP | AT91C_EMAC_TXUBR;
    241          #endif
    242          
    243            //Packet processing :  dipslay on DBGU, ping answer
    244            while(1)
    245            {
    246          #ifndef EMAC_IRQ
    247              if (AT91F_ProcessEmacPacket(&IpHeader) == AT91C_IPPACKET)
   \                     ??main_3:
   \   000000FE   02A8               ADD      R0,SP,#+8
   \   00000100   ........           _BLF     AT91F_ProcessEmacPacket,??AT91F_ProcessEmacPacket??rT
   \   00000104   0128               CMP      R0,#+1
   \   00000106   0AD1               BNE      ??main_5
    248              {
    249                  LED_TurnOn(LED1);
   \   00000108   8020               MOVS     R0,#+128
   \   0000010A   0003               LSLS     R0,R0,#+12       ;; #+524288
   \   0000010C   ........           _BLF     LED_TurnOn,??LED_TurnOn??rT
    250                  AT91F_DisplayIpPacket(&IpHeader);
   \   00000110   02A8               ADD      R0,SP,#+8
   \   00000112   ........           BL       AT91F_DisplayIpPacket
    251                  LED_TurnOff(LED1);
   \   00000116   8020               MOVS     R0,#+128
   \   00000118   0003               LSLS     R0,R0,#+12       ;; #+524288
   \   0000011A   ........           _BLF     LED_TurnOff,??LED_TurnOff??rT
    252              }
    253          
    254              if( (pEMAC->EMAC_TSR & AT91C_EMAC_COMP) == AT91C_EMAC_COMP)	
   \                     ??main_5:
   \   0000011E   7069               LDR      R0,[R6, #+20]
   \   00000120   8006               LSLS     R0,R0,#+26
   \   00000122   2ED5               BPL      ??main_6
    255              {	
    256                      for (i = 0; i <NB_TX_BUFFERS; i++)
   \   00000124   0020               MOVS     R0,#+0
   \   00000126   0400               MOVS     R4,R0
   \                     ??main_7:
   \   00000128   022C               CMP      R4,#+2
   \   0000012A   2ADA               BGE      ??main_6
    257                      {
    258                              pEMAC->EMAC_TSR |= AT91C_EMAC_COMP;	
   \   0000012C   7069               LDR      R0,[R6, #+20]
   \   0000012E   2021               MOVS     R1,#+32
   \   00000130   0143               ORRS     R1,R1,R0
   \   00000132   7161               STR      R1,[R6, #+20]
    259                              if(TxtdList[i].U_Status.S_Status.BuffUsed == 1)
   \   00000134   0820               MOVS     R0,#+8
   \   00000136   6043               MULS     R0,R4,R0
   \   00000138   2249               LDR      R1,??main_0+0x30  ;; TxtdList
   \   0000013A   0968               LDR      R1,[R1, #+0]
   \   0000013C   0818               ADDS     R0,R1,R0
   \   0000013E   4068               LDR      R0,[R0, #+4]
   \   00000140   C00F               LSRS     R0,R0,#+31
   \   00000142   0128               CMP      R0,#+1
   \   00000144   1BD1               BNE      ??main_8
    260                              {
    261                                      TxtdList[i].U_Status.S_Status.Length = 0;
   \   00000146   0820               MOVS     R0,#+8
   \   00000148   6043               MULS     R0,R4,R0
   \   0000014A   1E49               LDR      R1,??main_0+0x30  ;; TxtdList
   \   0000014C   0968               LDR      R1,[R1, #+0]
   \   0000014E   0818               ADDS     R0,R1,R0
   \   00000150   0821               MOVS     R1,#+8
   \   00000152   6143               MULS     R1,R4,R1
   \   00000154   1B4A               LDR      R2,??main_0+0x30  ;; TxtdList
   \   00000156   1268               LDR      R2,[R2, #+0]
   \   00000158   5118               ADDS     R1,R2,R1
   \   0000015A   4968               LDR      R1,[R1, #+4]
   \   0000015C   C90A               LSRS     R1,R1,#+11
   \   0000015E   C902               LSLS     R1,R1,#+11
   \   00000160   4160               STR      R1,[R0, #+4]
    262                                      TxtdList[i].U_Status.S_Status.BuffUsed = 0;
   \   00000162   0820               MOVS     R0,#+8
   \   00000164   6043               MULS     R0,R4,R0
   \   00000166   1749               LDR      R1,??main_0+0x30  ;; TxtdList
   \   00000168   0968               LDR      R1,[R1, #+0]
   \   0000016A   0818               ADDS     R0,R1,R0
   \   0000016C   0821               MOVS     R1,#+8
   \   0000016E   6143               MULS     R1,R4,R1
   \   00000170   144A               LDR      R2,??main_0+0x30  ;; TxtdList
   \   00000172   1268               LDR      R2,[R2, #+0]
   \   00000174   5118               ADDS     R1,R2,R1
   \   00000176   4968               LDR      R1,[R1, #+4]
   \   00000178   4900               LSLS     R1,R1,#+1        ;; ZeroExtS R1,R1,#+1,#+1
   \   0000017A   4908               LSRS     R1,R1,#+1
   \   0000017C   4160               STR      R1,[R0, #+4]
    263                              }
    264                      }
   \                     ??main_8:
   \   0000017E   641C               ADDS     R4,R4,#+1
   \   00000180   D2E7               B        ??main_7
    265              }			
    266          
    267              if( (pEMAC->EMAC_TSR & AT91C_EMAC_UBR) == AT91C_EMAC_UBR )		
   \                     ??main_6:
   \   00000182   7069               LDR      R0,[R6, #+20]
   \   00000184   C007               LSLS     R0,R0,#+31
   \   00000186   BAD5               BPL      ??main_3
    268                      pEMAC->EMAC_TSR |= AT91C_EMAC_UBR;		
   \   00000188   7069               LDR      R0,[R6, #+20]
   \   0000018A   0121               MOVS     R1,#+1
   \   0000018C   0143               ORRS     R1,R1,R0
   \   0000018E   7161               STR      R1,[R6, #+20]
   \   00000190   B5E7               B        ??main_3
   \   00000192   C046               Nop      
   \                     ??main_0:
   \   00000194   00F6FFFF           DC32     0xfffff600
   \   00000198   00C0FDFF           DC32     0xfffdc000
   \   0000019C   00FDFFFF           DC32     0xfffffd00
   \   000001A0   00FCFFFF           DC32     0xfffffc00
   \   000001A4   000100A5           DC32     0xa5000100
   \   000001A8   080000A5           DC32     0xa5000008
   \   000001AC   ........           DC32     `?<Constant "\\n\\n\\r-I- ==============...">_1`
   \   000001B0   ........           DC32     `?<Constant "-I- AT91SAM7X256 EMAC...">`
   \   000001B4   ........           DC32     `?<Constant "-I- -----------------...">`
   \   000001B8   FFFF0300           DC32     0x3ffff
   \   000001BC   FFFBFFFF           DC32     0xfffffbff
   \   000001C0   ........           DC32     `?<Constant "Error EMAC init: 0x%x">`

⌨️ 快捷键说明

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