📄 main.lst
字号:
\ 000000D0 .... LDR R0,??DataTable21 ;; MsgBuffer
\ 000000D2 ........ _BLF sprintf,sprintf??rT
\ 000000D6 0AE0 B ??AT91F_DisplayIpPacket_4
88 break;
89
90 case PROT_ICMP:
91 sprintf(MsgBuffer, "\n\r Protocol = %s","ICMP");
\ ??AT91F_DisplayIpPacket_1:
\ 000000D8 284A LDR R2,??AT91F_DisplayIpPacket_0+0x24 ;; `?<Constant "ICMP">`
\ 000000DA 2749 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
92 break;
93 default:
94 sprintf(MsgBuffer, "\n\r Protocol = 0x%X",pIpHeader->ip_p);
\ ??AT91F_DisplayIpPacket_2:
\ 000000E4 627A LDRB R2,[R4, #+0x9]
\ 000000E6 2649 LDR R1,??AT91F_DisplayIpPacket_0+0x28 ;; `?<Constant "\\n\\r Protocol ...">_1`
\ 000000E8 .... LDR R0,??DataTable21 ;; MsgBuffer
\ 000000EA ........ _BLF sprintf,sprintf??rT
95 break;
96 }
97
98 AT91F_DBGU_Printk(MsgBuffer);
\ ??AT91F_DisplayIpPacket_4:
\ 000000EE .... LDR R0,??DataTable21 ;; MsgBuffer
\ 000000F0 ........ _BLF AT91F_DBGU_Printk,AT91F_DBGU_Printk??rT
99
100 strncpy((char *)address, (const char *)(pIpHeader->ip_src), 4);
\ 000000F4 0422 MOV R2,#+0x4
\ 000000F6 211C MOV R1,R4
\ 000000F8 0C31 ADD R1,#+0xC
\ 000000FA 6846 MOV R0,SP
\ 000000FC ........ _BLF strncpy,strncpy??rT
101 address[4] = 0;
\ 00000100 6846 MOV R0,SP
\ 00000102 0021 MOV R1,#+0
\ 00000104 0171 STRB R1,[R0, #+0x4]
102
103 sprintf(MsgBuffer, "\n\r IP Src Address = %d:%d:%d:%d",
104 pIpHeader->ip_src[0],
105 pIpHeader->ip_src[1],
106 pIpHeader->ip_src[2],
107 pIpHeader->ip_src[3]
108 );
\ 00000106 E07B LDRB R0,[R4, #+0xF]
\ 00000108 01B4 PUSH {R0}
\ 0000010A A07B LDRB R0,[R4, #+0xE]
\ 0000010C 01B4 PUSH {R0}
\ 0000010E 637B LDRB R3,[R4, #+0xD]
\ 00000110 227B LDRB R2,[R4, #+0xC]
\ 00000112 1C49 LDR R1,??AT91F_DisplayIpPacket_0+0x2C ;; `?<Constant "\\n\\r IP Src Address ...">`
\ 00000114 .... LDR R0,??DataTable21 ;; MsgBuffer
\ 00000116 ........ _BLF sprintf,sprintf??rT
\ 0000011A 02B0 ADD SP,#+0x8
109
110 AT91F_DBGU_Printk(MsgBuffer);
\ 0000011C .... LDR R0,??DataTable21 ;; MsgBuffer
\ 0000011E ........ _BLF AT91F_DBGU_Printk,AT91F_DBGU_Printk??rT
111
112 strncpy((char *)address, (const char *)pIpHeader->ip_dst, 4);
\ 00000122 0422 MOV R2,#+0x4
\ 00000124 211C MOV R1,R4
\ 00000126 1031 ADD R1,#+0x10
\ 00000128 6846 MOV R0,SP
\ 0000012A ........ _BLF strncpy,strncpy??rT
113 address[4] = 0;
\ 0000012E 6846 MOV R0,SP
\ 00000130 0021 MOV R1,#+0
\ 00000132 0171 STRB R1,[R0, #+0x4]
114
115 sprintf(MsgBuffer, "\n\r IP Dest Address = %d:%d:%d:%d",
116 pIpHeader->ip_dst[0],
117 pIpHeader->ip_dst[1],
118 pIpHeader->ip_dst[2],
119 pIpHeader->ip_dst[3]
120 );
\ 00000134 E07C LDRB R0,[R4, #+0x13]
\ 00000136 01B4 PUSH {R0}
\ 00000138 A07C LDRB R0,[R4, #+0x12]
\ 0000013A 01B4 PUSH {R0}
\ 0000013C 637C LDRB R3,[R4, #+0x11]
\ 0000013E 227C LDRB R2,[R4, #+0x10]
\ 00000140 1149 LDR R1,??AT91F_DisplayIpPacket_0+0x30 ;; `?<Constant "\\n\\r IP Dest Address ...">`
\ 00000142 .... LDR R0,??DataTable21 ;; MsgBuffer
\ 00000144 ........ _BLF sprintf,sprintf??rT
\ 00000148 02B0 ADD SP,#+0x8
121 AT91F_DBGU_Printk(MsgBuffer);
\ 0000014A .... LDR R0,??DataTable21 ;; MsgBuffer
\ 0000014C ........ _BLF AT91F_DBGU_Printk,AT91F_DBGU_Printk??rT
122 #endif
123 }
\ 00000150 02B0 ADD SP,#+0x8
\ 00000152 10BC POP {R4}
\ 00000154 01BC POP {R0}
\ 00000156 0047 BX R0 ;; return
\ ??AT91F_DisplayIpPacket_0:
\ 00000158 ........ DC32 `?<Constant "\\n\\n\\r-I- ==============...">`
\ 0000015C ........ DC32 `?<Constant "\\n\\r IP Version ...">`
\ 00000160 ........ DC32 `?<Constant "\\n\\r Header Length ...">`
\ 00000164 ........ DC32 `?<Constant "\\n\\r Type of service ...">`
\ 00000168 ........ DC32 `?<Constant "\\n\\r Total IP Length ...">`
\ 0000016C ........ DC32 `?<Constant "\\n\\r ID ...">`
\ 00000170 ........ DC32 `?<Constant "\\n\\r Header Checksum ...">`
\ 00000174 ........ DC32 `?<Constant "IP">`
\ 00000178 ........ DC32 `?<Constant "\\n\\r Protocol ...">`
\ 0000017C ........ DC32 `?<Constant "ICMP">`
\ 00000180 ........ DC32 `?<Constant "\\n\\r Protocol ...">_1`
\ 00000184 ........ DC32 `?<Constant "\\n\\r IP Src Address ...">`
\ 00000188 ........ DC32 `?<Constant "\\n\\r IP Dest Address ...">`
124
125 //*----------------------------------------------------------------------------
126 //* \fn main
127 //* \brief
128 //*
129 //*----------------------------------------------------------------------------
\ In segment CODE, align 4, keep-with-next
130 int main()
131 {
\ main:
\ 00000000 70B5 PUSH {R4-R6,LR}
\ 00000002 88B0 SUB SP,#+0x20
132 int status=0,i;
\ 00000004 0020 MOV R0,#+0
\ 00000006 0090 STR R0,[SP, #+0]
133 #ifndef RMII
134 int control=0;
135 #endif
136 AT91S_IPheader IpHeader;
137 AT91PS_PIO pPIOB = AT91C_BASE_PIOB;
\ 00000008 5D4E LDR R6,??main_0 ;; 0xfffff600
138 AT91PS_EMAC pEMAC = AT91C_BASE_EMAC;
\ 0000000A 5E4C LDR R4,??main_0+0x4 ;; 0xfffdc000
139 AT91PS_RSTC pRSTC = AT91C_BASE_RSTC;
\ 0000000C 5E4D LDR R5,??main_0+0x8 ;; 0xfffffd00
140
141 AT91F_PMC_EnablePeriphClock ( AT91C_BASE_PMC, 1 << AT91C_ID_PIOA ) ;
\ 0000000E 0421 MOV R1,#+0x4
\ 00000010 5E48 LDR R0,??main_0+0xC ;; 0xfffffc00
\ 00000012 ........ _BLF AT91F_PMC_EnablePeriphClock,AT91F_PMC_EnablePeriphClock??rT
142 AT91F_PMC_EnablePeriphClock ( AT91C_BASE_PMC, 1 << AT91C_ID_PIOB ) ;
\ 00000016 0821 MOV R1,#+0x8
\ 00000018 5C48 LDR R0,??main_0+0xC ;; 0xfffffc00
\ 0000001A ........ _BLF AT91F_PMC_EnablePeriphClock,AT91F_PMC_EnablePeriphClock??rT
143 AT91F_PMC_EnablePeriphClock ( AT91C_BASE_PMC, 1 << AT91C_ID_EMAC ) ;
\ 0000001E 8021 MOV R1,#+0x80
\ 00000020 4902 LSL R1,R1,#+0x9 ;; #+0x10000
\ 00000022 5A48 LDR R0,??main_0+0xC ;; 0xfffffc00
\ 00000024 ........ _BLF AT91F_PMC_EnablePeriphClock,AT91F_PMC_EnablePeriphClock??rT
144
145 Init_LED_FOR_APPLI ();
\ 00000028 ........ _BLF Init_LED_FOR_APPLI,Init_LED_FOR_APPLI??rT
146 APPLI();
\ 0000002C ........ _BLF APPLI,APPLI??rT
147
148 //DBGU init for ethernet spy
149 Init_DBGU();
\ 00000030 ........ _BLF Init_DBGU,Init_DBGU??rT
150
151 //disable pull up on RXDV => PHY normal mode (not in test mode),
152 //PHY has internal pull down
153 pPIOB->PIO_PPUDR=1<<15;
\ 00000034 8020 MOV R0,#+0x80
\ 00000036 0002 LSL R0,R0,#+0x8 ;; #+0x8000
\ 00000038 3066 STR R0,[R6, #+0x60]
154
155 #ifndef RMII
156 AT91F_DBGU_Printk("-I- AT91SAM7X256 test\n\r");
157 //PHY has internal pull down : set MII mode
158 pPIOB->PIO_PPUDR=1<<16;
159 #endif
160
161 //clear PB18 <=> PHY powerdown
162 AT91F_PIO_CfgOutput( AT91C_BASE_PIOB, 1<<18 ) ;
\ 0000003A 8021 MOV R1,#+0x80
\ 0000003C C902 LSL R1,R1,#+0xB ;; #+0x40000
\ 0000003E 5048 LDR R0,??main_0 ;; 0xfffff600
\ 00000040 ........ _BLF AT91F_PIO_CfgOutput,AT91F_PIO_CfgOutput??rT
163 AT91F_PIO_ClearOutput( AT91C_BASE_PIOB, 1<<18) ;
\ 00000044 8021 MOV R1,#+0x80
\ 00000046 C902 LSL R1,R1,#+0xB ;; #+0x40000
\ 00000048 4D48 LDR R0,??main_0 ;; 0xfffff600
\ 0000004A ........ _BLF AT91F_PIO_ClearOutput,AT91F_PIO_ClearOutput??rT
164
165 //After PHY power up, hardware reset
166 pRSTC->RSTC_RMR = 0xA5000000 | AT91C_RSTC_ERSTL&(0x01<<8);
\ 0000004E 5048 LDR R0,??main_0+0x10 ;; 0xa5000100
\ 00000050 A860 STR R0,[R5, #+0x8]
167 pRSTC->RSTC_RCR = 0xA5000000 | AT91C_RSTC_EXTRST;
\ 00000052 5048 LDR R0,??main_0+0x14 ;; 0xa5000008
\ 00000054 2860 STR R0,[R5, #+0]
168
169 //Display general purpose infos
170 AT91F_DBGU_Printk("\n\n\r-I- ======================================\n\r");
\ 00000056 5048 LDR R0,??main_0+0x18 ;; `?<Constant "\\n\\n\\r-I- ==============...">_1`
\ 00000058 ........ _BLF AT91F_DBGU_Printk,AT91F_DBGU_Printk??rT
171 AT91F_DBGU_Printk("-I- AT91SAM7X256 EMAC Test\n\r");
\ 0000005C 4F48 LDR R0,??main_0+0x1C ;; `?<Constant "-I- AT91SAM7X256 EMAC...">`
\ 0000005E ........ _BLF AT91F_DBGU_Printk,AT91F_DBGU_Printk??rT
172 AT91F_DBGU_Printk("-I- --------------------------------------\n\r");
\ 00000062 4F48 LDR R0,??main_0+0x20 ;; `?<Constant "-I- -----------------...">`
\ 00000064 ........ _BLF AT91F_DBGU_Printk,AT91F_DBGU_Printk??rT
173
174 //Wait for hardware reset end
175 while( !(pRSTC->RSTC_RSR & AT91C_RSTC_NRSTL) ) {;}
\ ??main_1:
\ 00000068 6868 LDR R0,[R5, #+0x4]
\ 0000006A C003 LSL R0,R0,#+0xF
\ 0000006C FCD5 BPL ??main_1
176 AT91F_DBGU_Printk("-I- AT91SAM7X256 111\n\r");
\ 0000006E 4D48 LDR R0,??main_0+0x24 ;; `?<Constant "-I- AT91SAM7X256 111\\n\\r">`
\ 00000070 ........ _BLF AT91F_DBGU_Printk,AT91F_DBGU_Printk??rT
177 //EMAC IO init for EMAC-PHY com
178 // Remove EF100 config
179 AT91F_PIO_CfgPeriph(
180 AT91C_BASE_PIOB, // PIO controller base address
181 ((unsigned int) AT91C_PB2_ETX0 ) |
182 ((unsigned int) AT91C_PB12_ETXER ) |
183 ((unsigned int) AT91C_PB16_ECOL ) |
184 ((unsigned int) AT91C_PB11_ETX3 ) |
185 ((unsigned int) AT91C_PB6_ERX1 ) |
186 ((unsigned int) AT91C_PB15_ERXDV_ECRSDV ) |
187 ((unsigned int) AT91C_PB13_ERX2 ) |
188 ((unsigned int) AT91C_PB3_ETX1 ) |
189 ((unsigned int) AT91C_PB8_EMDC ) |
190 ((unsigned int) AT91C_PB5_ERX0 ) |
191 ((unsigned int) AT91C_PB14_ERX3 ) |
192 ((unsigned int) AT91C_PB4_ECRS) |
193 ((unsigned int) AT91C_PB1_ETXEN ) |
194 ((unsigned int) AT91C_PB10_ETX2 ) |
195 ((unsigned int) AT91C_PB0_ETXCK_EREFCK) |
196 ((unsigned int) AT91C_PB9_EMDIO ) |
197 ((unsigned int) AT91C_PB7_ERXER ) |
198 ((unsigned int) AT91C_PB17_ERXCK ),
199 0);
\ 00000074 0022 MOV R2,#+0
\ 00000076 4C49 LDR R1,??main_0+0x28 ;; 0x3ffff
\ 00000078 4148 LDR R0,??main_0 ;; 0xfffff600
\ 0000007A ........ _BLF AT91F_PIO_CfgPeriph,AT91F_PIO_CfgPeriph??rT
200
201
202 //Enable com between EMAC PHY
203 AT91F_Enable_Mdi(pEMAC);
\ 0000007E 201C MOV R0,R4
\ 00000080 ........ _BLF AT91F_Enable_Mdi,AT91F_Enable_Mdi??rT
204 AT91F_DBGU_Printk("-I- AT91SAM7X256 222\n\r");
\ 00000084 4948 LDR R0,??main_0+0x2C ;; `?<Constant "-I- AT91SAM7X256 222\\n\\r">`
\ 00000086 ........ _BLF AT91F_DBGU_Printk,AT91F_DBGU_Printk??rT
205 //PHY configuration
206 #ifndef RMII
207 //PHY has internal pull down : disable MII isolate
208 read_phy(pEMAC, AT91C_PHY_ADDR, MII_BMCR, (unsigned int *)&control);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -