📄 main.lst
字号:
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 + -