📄 main.lst
字号:
82
83
84 switch(pIpHeader->ip_p) {
\ 000000BE 607A LDRB R0,[R4, #+9]
\ 000000C0 0128 CMP R0,#+1
\ 000000C2 09D0 BEQ ??AT91F_DisplayIpPacket_1
\ 000000C4 8021 MOVS R1,#+128
\ 000000C6 0901 LSLS R1,R1,#+4 ;; #+2048
\ 000000C8 8842 CMP R0,R1
\ 000000CA 0BD1 BNE ??AT91F_DisplayIpPacket_2
85 case PROT_IP:
86 sprintf(MsgBuffer, "\n\r Protocol = %s","IP");
\ ??AT91F_DisplayIpPacket_3:
\ 000000CC 28A2 ADR R2,??AT91F_DisplayIpPacket_0+0x1C ;; "IP"
\ 000000CE 2949 LDR R1,??AT91F_DisplayIpPacket_0+0x20 ;; `?<Constant "\\n\\r Protocol ...">`
\ 000000D0 .... LDR R0,??DataTable21 ;; MsgBuffer
\ 000000D2 ........ _BLF sprintf,??sprintf??rT
\ 000000D6 0AE0 B ??AT91F_DisplayIpPacket_4
87 break;
88
89 case PROT_ICMP:
90 sprintf(MsgBuffer, "\n\r Protocol = %s","ICMP");
\ ??AT91F_DisplayIpPacket_1:
\ 000000D8 274A LDR R2,??AT91F_DisplayIpPacket_0+0x24 ;; `?<Constant "ICMP">`
\ 000000DA 2649 LDR R1,??AT91F_DisplayIpPacket_0+0x20 ;; `?<Constant "\\n\\r Protocol ...">`
\ 000000DC .... LDR R0,??DataTable21 ;; MsgBuffer
\ 000000DE ........ _BLF sprintf,??sprintf??rT
\ 000000E2 04E0 B ??AT91F_DisplayIpPacket_4
91 break;
92 default:
93 sprintf(MsgBuffer, "\n\r Protocol = 0x%X",pIpHeader->ip_p);
\ ??AT91F_DisplayIpPacket_2:
\ 000000E4 627A LDRB R2,[R4, #+9]
\ 000000E6 2549 LDR R1,??AT91F_DisplayIpPacket_0+0x28 ;; `?<Constant "\\n\\r Protocol ...">_1`
\ 000000E8 .... LDR R0,??DataTable21 ;; MsgBuffer
\ 000000EA ........ _BLF sprintf,??sprintf??rT
94 break;
95 }
96
97 AT91F_DBGU_Printk(MsgBuffer);
\ ??AT91F_DisplayIpPacket_4:
\ 000000EE .... LDR R0,??DataTable21 ;; MsgBuffer
\ 000000F0 ........ _BLF AT91F_DBGU_Printk,??AT91F_DBGU_Printk??rT
98
99 strncpy((char *)address, (const char *)(pIpHeader->ip_src), 4);
\ 000000F4 0422 MOVS R2,#+4
\ 000000F6 2100 MOVS R1,R4
\ 000000F8 0C31 ADDS R1,R1,#+12
\ 000000FA 6846 MOV R0,SP
\ 000000FC ........ _BLF strncpy,??strncpy??rT
100 address[4] = 0;
\ 00000100 6846 MOV R0,SP
\ 00000102 0021 MOVS R1,#+0
\ 00000104 0171 STRB R1,[R0, #+4]
101
102 sprintf(MsgBuffer, "\n\r IP Src Address = %d:%d:%d:%d",
103 pIpHeader->ip_src[0],
104 pIpHeader->ip_src[1],
105 pIpHeader->ip_src[2],
106 pIpHeader->ip_src[3]
107 );
\ 00000106 E17B LDRB R1,[R4, #+15]
\ 00000108 A07B LDRB R0,[R4, #+14]
\ 0000010A 03B4 PUSH {R0,R1}
\ 0000010C 637B LDRB R3,[R4, #+13]
\ 0000010E 227B LDRB R2,[R4, #+12]
\ 00000110 1B49 LDR R1,??AT91F_DisplayIpPacket_0+0x2C ;; `?<Constant "\\n\\r IP Src Address ...">`
\ 00000112 .... LDR R0,??DataTable21 ;; MsgBuffer
\ 00000114 ........ _BLF sprintf,??sprintf??rT
\ 00000118 02B0 ADD SP,SP,#+8
108
109 AT91F_DBGU_Printk(MsgBuffer);
\ 0000011A .... LDR R0,??DataTable21 ;; MsgBuffer
\ 0000011C ........ _BLF AT91F_DBGU_Printk,??AT91F_DBGU_Printk??rT
110
111 strncpy((char *)address, (const char *)pIpHeader->ip_dst, 4);
\ 00000120 0422 MOVS R2,#+4
\ 00000122 2100 MOVS R1,R4
\ 00000124 1031 ADDS R1,R1,#+16
\ 00000126 6846 MOV R0,SP
\ 00000128 ........ _BLF strncpy,??strncpy??rT
112 address[4] = 0;
\ 0000012C 6846 MOV R0,SP
\ 0000012E 0021 MOVS R1,#+0
\ 00000130 0171 STRB R1,[R0, #+4]
113
114 sprintf(MsgBuffer, "\n\r IP Dest Address = %d:%d:%d:%d",
115 pIpHeader->ip_dst[0],
116 pIpHeader->ip_dst[1],
117 pIpHeader->ip_dst[2],
118 pIpHeader->ip_dst[3]
119 );
\ 00000132 E17C LDRB R1,[R4, #+19]
\ 00000134 A07C LDRB R0,[R4, #+18]
\ 00000136 03B4 PUSH {R0,R1}
\ 00000138 637C LDRB R3,[R4, #+17]
\ 0000013A 227C LDRB R2,[R4, #+16]
\ 0000013C 1149 LDR R1,??AT91F_DisplayIpPacket_0+0x30 ;; `?<Constant "\\n\\r IP Dest Address ...">`
\ 0000013E .... LDR R0,??DataTable21 ;; MsgBuffer
\ 00000140 ........ _BLF sprintf,??sprintf??rT
\ 00000144 02B0 ADD SP,SP,#+8
120 AT91F_DBGU_Printk(MsgBuffer);
\ 00000146 .... LDR R0,??DataTable21 ;; MsgBuffer
\ 00000148 ........ _BLF AT91F_DBGU_Printk,??AT91F_DBGU_Printk??rT
121 #endif
122 }
\ 0000014C 02B0 ADD SP,SP,#+8
\ 0000014E 10BC POP {R4}
\ 00000150 01BC POP {R0}
\ 00000152 0047 BX R0 ;; return
\ ??AT91F_DisplayIpPacket_0:
\ 00000154 ........ DC32 `?<Constant "\\n\\n\\r-I- ==============...">`
\ 00000158 ........ DC32 `?<Constant "\\n\\r IP Version ...">`
\ 0000015C ........ DC32 `?<Constant "\\n\\r Header Length ...">`
\ 00000160 ........ DC32 `?<Constant "\\n\\r Type of service ...">`
\ 00000164 ........ DC32 `?<Constant "\\n\\r Total IP Length ...">`
\ 00000168 ........ DC32 `?<Constant "\\n\\r ID ...">`
\ 0000016C ........ DC32 `?<Constant "\\n\\r Header Checksum ...">`
\ 00000170 49500000 DC8 "IP",+0
\ 00000174 ........ DC32 `?<Constant "\\n\\r Protocol ...">`
\ 00000178 ........ DC32 `?<Constant "ICMP">`
\ 0000017C ........ DC32 `?<Constant "\\n\\r Protocol ...">_1`
\ 00000180 ........ DC32 `?<Constant "\\n\\r IP Src Address ...">`
\ 00000184 ........ DC32 `?<Constant "\\n\\r IP Dest Address ...">`
123
124 //*----------------------------------------------------------------------------
125 //* \fn main
126 //* \brief
127 //*
128 //*----------------------------------------------------------------------------
\ In segment CODE, align 4, keep-with-next
129 int main()
130 {
\ main:
\ 00000000 F0B5 PUSH {R4-R7,LR}
\ 00000002 89B0 SUB SP,SP,#+36
131 int status=0,i;
\ 00000004 0020 MOVS R0,#+0
\ 00000006 0190 STR R0,[SP, #+4]
132 #ifndef RMII
133 int control=0;
\ 00000008 0020 MOVS R0,#+0
\ 0000000A 0090 STR R0,[SP, #+0]
134 #endif
135 AT91S_IPheader IpHeader;
136 AT91PS_PIO pPIOB = AT91C_BASE_PIOB;
\ 0000000C 6148 LDR R0,??main_0 ;; 0xfffff600
\ 0000000E 0500 MOVS R5,R0
137 AT91PS_EMAC pEMAC = AT91C_BASE_EMAC;
\ 00000010 6148 LDR R0,??main_0+0x4 ;; 0xfffdc000
\ 00000012 0600 MOVS R6,R0
138 AT91PS_RSTC pRSTC = AT91C_BASE_RSTC;
\ 00000014 6148 LDR R0,??main_0+0x8 ;; 0xfffffd00
\ 00000016 0700 MOVS R7,R0
139
140 AT91F_PMC_EnablePeriphClock ( AT91C_BASE_PMC, 1 << AT91C_ID_PIOA ) ;
\ 00000018 0421 MOVS R1,#+4
\ 0000001A 6148 LDR R0,??main_0+0xC ;; 0xfffffc00
\ 0000001C ........ _BLF AT91F_PMC_EnablePeriphClock,??AT91F_PMC_EnablePeriphClock??rT
141 AT91F_PMC_EnablePeriphClock ( AT91C_BASE_PMC, 1 << AT91C_ID_PIOB ) ;
\ 00000020 0821 MOVS R1,#+8
\ 00000022 5F48 LDR R0,??main_0+0xC ;; 0xfffffc00
\ 00000024 ........ _BLF AT91F_PMC_EnablePeriphClock,??AT91F_PMC_EnablePeriphClock??rT
142 AT91F_PMC_EnablePeriphClock ( AT91C_BASE_PMC, 1 << AT91C_ID_EMAC ) ;
\ 00000028 8021 MOVS R1,#+128
\ 0000002A 4902 LSLS R1,R1,#+9 ;; #+65536
\ 0000002C 5C48 LDR R0,??main_0+0xC ;; 0xfffffc00
\ 0000002E ........ _BLF AT91F_PMC_EnablePeriphClock,??AT91F_PMC_EnablePeriphClock??rT
143
144 Init_LED_FOR_APPLI ();
\ 00000032 ........ _BLF Init_LED_FOR_APPLI,??Init_LED_FOR_APPLI??rT
145 APPLI();
\ 00000036 ........ _BLF APPLI,??APPLI??rT
146
147 //DBGU init for ethernet spy
148 Init_DBGU();
\ 0000003A ........ _BLF Init_DBGU,??Init_DBGU??rT
149
150 //disable pull up on RXDV => PHY normal mode (not in test mode),
151 //PHY has internal pull down
152 pPIOB->PIO_PPUDR=1<<15;
\ 0000003E 8020 MOVS R0,#+128
\ 00000040 0002 LSLS R0,R0,#+8 ;; #+32768
\ 00000042 2866 STR R0,[R5, #+96]
153
154 #ifndef RMII
155 //PHY has internal pull down : set MII mode
156 pPIOB->PIO_PPUDR=1<<16;
\ 00000044 8020 MOVS R0,#+128
\ 00000046 4002 LSLS R0,R0,#+9 ;; #+65536
\ 00000048 2866 STR R0,[R5, #+96]
157 #endif
158
159 //clear PB18 <=> PHY powerdown
160 AT91F_PIO_CfgOutput( AT91C_BASE_PIOB, 1<<18 ) ;
\ 0000004A 8021 MOVS R1,#+128
\ 0000004C C902 LSLS R1,R1,#+11 ;; #+262144
\ 0000004E 5148 LDR R0,??main_0 ;; 0xfffff600
\ 00000050 ........ _BLF AT91F_PIO_CfgOutput,??AT91F_PIO_CfgOutput??rT
161 AT91F_PIO_ClearOutput( AT91C_BASE_PIOB, 1<<18) ;
\ 00000054 8021 MOVS R1,#+128
\ 00000056 C902 LSLS R1,R1,#+11 ;; #+262144
\ 00000058 4E48 LDR R0,??main_0 ;; 0xfffff600
\ 0000005A ........ _BLF AT91F_PIO_ClearOutput,??AT91F_PIO_ClearOutput??rT
162
163 //After PHY power up, hardware reset
164 pRSTC->RSTC_RMR = 0xA5000000 | AT91C_RSTC_ERSTL&(0x01<<8);
\ 0000005E 5148 LDR R0,??main_0+0x10 ;; 0xa5000100
\ 00000060 B860 STR R0,[R7, #+8]
165 pRSTC->RSTC_RCR = 0xA5000000 | AT91C_RSTC_EXTRST;
\ 00000062 5148 LDR R0,??main_0+0x14 ;; 0xa5000008
\ 00000064 3860 STR R0,[R7, #+0]
166
167 //Display general purpose infos
168 AT91F_DBGU_Printk("\n\n\r-I- ======================================\n\r");
\ 00000066 5148 LDR R0,??main_0+0x18 ;; `?<Constant "\\n\\n\\r-I- ==============...">_1`
\ 00000068 ........ _BLF AT91F_DBGU_Printk,??AT91F_DBGU_Printk??rT
169 AT91F_DBGU_Printk("-I- AT91SAM7X256 EMAC Test\n\r");
\ 0000006C 5048 LDR R0,??main_0+0x1C ;; `?<Constant "-I- AT91SAM7X256 EMAC...">`
\ 0000006E ........ _BLF AT91F_DBGU_Printk,??AT91F_DBGU_Printk??rT
170 AT91F_DBGU_Printk("-I- --------------------------------------\n\r");
\ 00000072 5048 LDR R0,??main_0+0x20 ;; `?<Constant "-I- -----------------...">`
\ 00000074 ........ _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:
\ 00000078 7868 LDR R0,[R7, #+4]
\ 0000007A C003 LSLS R0,R0,#+15
\ 0000007C FCD5 BPL ??main_1
174
175 //EMAC IO init for EMAC-PHY com
176 // Remove EF100 config
177 AT91F_PIO_CfgPeriph(
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -