📄 main.lst
字号:
\ 0000006A ........ _BLF AT91F_DBGU_Printk,??AT91F_DBGU_Printk??rT
171
172 //Wait for hardware reset end
173 while( !(pRSTC->RSTC_RSR & AT91C_RSTC_NRSTL) ) {;}
\ ??main_1:
\ 0000006E 7868 LDR R0,[R7, #+4]
\ 00000070 C003 LSLS R0,R0,#+15
\ 00000072 FCD5 BPL ??main_1
174
175 //EMAC IO init for EMAC-PHY com
176 // Remove EF100 config
177 AT91F_PIO_CfgPeriph(
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);
\ 00000074 0022 MOVS R2,#+0
\ 00000076 4249 LDR R1,??main_0+0x24 ;; 0x3ffff
\ 00000078 3848 LDR R0,??main_0 ;; 0xfffffffffffff600
\ 0000007A ........ _BLF AT91F_PIO_CfgPeriph,??AT91F_PIO_CfgPeriph??rT
198
199
200 //Enable com between EMAC PHY
201 AT91F_Enable_Mdi(pEMAC);
\ 0000007E 3000 MOVS R0,R6
\ 00000080 ........ _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);
207 read_phy(pEMAC, AT91C_PHY_ADDR, MII_BMCR, (unsigned int *)&control);
208 control&=~BMCR_ISOLATE;
209 write_phy(pEMAC, AT91C_PHY_ADDR, MII_BMCR, control);
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:
\ 00000084 6B46 MOV R3,SP
\ 00000086 0122 MOVS R2,#+1
\ 00000088 1F21 MOVS R1,#+31
\ 0000008A 3000 MOVS R0,R6
\ 0000008C ........ _BLF read_phy,??read_phy??rT
215 read_phy(pEMAC, AT91C_PHY_ADDR, MII_BMSR, (unsigned int *)&status);
\ 00000090 6B46 MOV R3,SP
\ 00000092 0122 MOVS R2,#+1
\ 00000094 1F21 MOVS R1,#+31
\ 00000096 3000 MOVS R0,R6
\ 00000098 ........ _BLF read_phy,??read_phy??rT
216 }
217 while (!(status & BMSR_ANEGCOMPLETE));
\ 0000009C 0098 LDR R0,[SP, #+0]
\ 0000009E 8006 LSLS R0,R0,#+26
\ 000000A0 F0D5 BPL ??main_2
218 AT91F_Disable_Mdi(pEMAC);
\ 000000A2 3000 MOVS R0,R6
\ 000000A4 ........ _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 ;
\ 000000A8 C020 MOVS R0,#+192
\ 000000AA 0321 MOVS R1,#+3
\ 000000AC 3150 STR R1,[R6, R0]
223 #else
224 //Enable EMAC in MII mode, enable clock ERXCK and ETXCK
225 pEMAC->EMAC_USRIO= AT91C_EMAC_CLKEN ;
226 #endif
227
228 //EMAC configuration
229 if ( AT91F_EmacEntry())
\ 000000AE ........ _BLF AT91F_EmacEntry,??AT91F_EmacEntry??rT
\ 000000B2 0028 CMP R0,#+0
\ 000000B4 08D0 BEQ ??main_3
230 {
231 sprintf(MsgBuffer, "Error EMAC init: 0x%x", status);
\ 000000B6 009A LDR R2,[SP, #+0]
\ 000000B8 3249 LDR R1,??main_0+0x28 ;; `?<Constant "Error EMAC init: 0x%x">`
\ 000000BA .... LDR R0,??DataTable21 ;; MsgBuffer
\ 000000BC ........ _BLF sprintf,??sprintf??rT
232 AT91F_DBGU_Printk(MsgBuffer);
\ 000000C0 .... LDR R0,??DataTable21 ;; MsgBuffer
\ 000000C2 ........ _BLF AT91F_DBGU_Printk,??AT91F_DBGU_Printk??rT
233 while(1);
\ ??main_4:
\ 000000C6 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:
\ 000000C8 01A8 ADD R0,SP,#+4
\ 000000CA ........ _BLF AT91F_ProcessEmacPacket,??AT91F_ProcessEmacPacket??rT
\ 000000CE 0128 CMP R0,#+1
\ 000000D0 0AD1 BNE ??main_5
248 {
249 LED_TurnOn(LED1);
\ 000000D2 8020 MOVS R0,#+128
\ 000000D4 0003 LSLS R0,R0,#+12 ;; #+524288
\ 000000D6 ........ _BLF LED_TurnOn,??LED_TurnOn??rT
250 AT91F_DisplayIpPacket(&IpHeader);
\ 000000DA 01A8 ADD R0,SP,#+4
\ 000000DC ........ BL AT91F_DisplayIpPacket
251 LED_TurnOff(LED1);
\ 000000E0 8020 MOVS R0,#+128
\ 000000E2 0003 LSLS R0,R0,#+12 ;; #+524288
\ 000000E4 ........ _BLF LED_TurnOff,??LED_TurnOff??rT
252 }
253
254 if( (pEMAC->EMAC_TSR & AT91C_EMAC_COMP) == AT91C_EMAC_COMP)
\ ??main_5:
\ 000000E8 7069 LDR R0,[R6, #+20]
\ 000000EA 8006 LSLS R0,R0,#+26
\ 000000EC 2ED5 BPL ??main_6
255 {
256 for (i = 0; i <NB_TX_BUFFERS; i++)
\ 000000EE 0020 MOVS R0,#+0
\ 000000F0 0400 MOVS R4,R0
\ ??main_7:
\ 000000F2 022C CMP R4,#+2
\ 000000F4 2ADA BGE ??main_6
257 {
258 pEMAC->EMAC_TSR |= AT91C_EMAC_COMP;
\ 000000F6 7069 LDR R0,[R6, #+20]
\ 000000F8 2021 MOVS R1,#+32
\ 000000FA 0143 ORRS R1,R1,R0
\ 000000FC 7161 STR R1,[R6, #+20]
259 if(TxtdList[i].U_Status.S_Status.BuffUsed == 1)
\ 000000FE 0820 MOVS R0,#+8
\ 00000100 6043 MULS R0,R4,R0
\ 00000102 2149 LDR R1,??main_0+0x2C ;; TxtdList
\ 00000104 0968 LDR R1,[R1, #+0]
\ 00000106 0818 ADDS R0,R1,R0
\ 00000108 4068 LDR R0,[R0, #+4]
\ 0000010A C00F LSRS R0,R0,#+31
\ 0000010C 0128 CMP R0,#+1
\ 0000010E 1BD1 BNE ??main_8
260 {
261 TxtdList[i].U_Status.S_Status.Length = 0;
\ 00000110 0820 MOVS R0,#+8
\ 00000112 6043 MULS R0,R4,R0
\ 00000114 1C49 LDR R1,??main_0+0x2C ;; TxtdList
\ 00000116 0968 LDR R1,[R1, #+0]
\ 00000118 0818 ADDS R0,R1,R0
\ 0000011A 0821 MOVS R1,#+8
\ 0000011C 6143 MULS R1,R4,R1
\ 0000011E 1A4A LDR R2,??main_0+0x2C ;; TxtdList
\ 00000120 1268 LDR R2,[R2, #+0]
\ 00000122 5118 ADDS R1,R2,R1
\ 00000124 4968 LDR R1,[R1, #+4]
\ 00000126 C90A LSRS R1,R1,#+11
\ 00000128 C902 LSLS R1,R1,#+11
\ 0000012A 4160 STR R1,[R0, #+4]
262 TxtdList[i].U_Status.S_Status.BuffUsed = 0;
\ 0000012C 0820 MOVS R0,#+8
\ 0000012E 6043 MULS R0,R4,R0
\ 00000130 1549 LDR R1,??main_0+0x2C ;; TxtdList
\ 00000132 0968 LDR R1,[R1, #+0]
\ 00000134 0818 ADDS R0,R1,R0
\ 00000136 0821 MOVS R1,#+8
\ 00000138 6143 MULS R1,R4,R1
\ 0000013A 134A LDR R2,??main_0+0x2C ;; TxtdList
\ 0000013C 1268 LDR R2,[R2, #+0]
\ 0000013E 5118 ADDS R1,R2,R1
\ 00000140 4968 LDR R1,[R1, #+4]
\ 00000142 4900 LSLS R1,R1,#+1 ;; ZeroExtS R1,R1,#+1,#+1
\ 00000144 4908 LSRS R1,R1,#+1
\ 00000146 4160 STR R1,[R0, #+4]
263 }
264 }
\ ??main_8:
\ 00000148 641C ADDS R4,R4,#+1
\ 0000014A D2E7 B ??main_7
265 }
266
267 if( (pEMAC->EMAC_TSR & AT91C_EMAC_UBR) == AT91C_EMAC_UBR )
\ ??main_6:
\ 0000014C 7069 LDR R0,[R6, #+20]
\ 0000014E C007 LSLS R0,R0,#+31
\ 00000150 BAD5 BPL ??main_3
268 pEMAC->EMAC_TSR |= AT91C_EMAC_UBR;
\ 00000152 7069 LDR R0,[R6, #+20]
\ 00000154 0121 MOVS R1,#+1
\ 00000156 0143 ORRS R1,R1,R0
\ 00000158 7161 STR R1,[R6, #+20]
\ 0000015A B5E7 B ??main_3
\ ??main_0:
\ 0000015C 00F6FFFF DC32 0xfffffffffffff600
\ 00000160 00C0FDFF DC32 0xfffffffffffdc000
\ 00000164 00FDFFFF DC32 0xfffffffffffffd00
\ 00000168 00FCFFFF DC32 0xfffffffffffffc00
\ 0000016C 000100A5 DC32 0xffffffffa5000100
\ 00000170 080000A5 DC32 0xffffffffa5000008
\ 00000174 ........ DC32 `?<Constant "\\n\\n\\r-I- ==============...">_1`
\ 00000178 ........ DC32 `?<Constant "-I- AT91SAM7X256 EMAC...">`
\ 0000017C ........ DC32 `?<Constant "-I- -----------------...">`
\ 00000180 FFFF0300 DC32 0x3ffff
\ 00000184 ........ DC32 `?<Constant "Error EMAC init: 0x%x">`
\ 00000188 ........ DC32 TxtdList
269 #endif
270 }
271 }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -