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