📄 main.lst
字号:
230 }
231 break;
232 }
233
234 FAILURE:
235 if( BFSA_SUCCESS != status )
\ ??menu_11:
\ 00000224 002C CMP R4,#+0
\ 00000226 04D0 BEQ ??menu_13
236 TRACE_INFO( "failed (0x%X)\n\r", (int)status);
\ 00000228 221C MOV R2,R4
\ 0000022A 1749 LDR R1,??menu_1+0x50 ;; `?<Constant "wodemima">` + 244
\ 0000022C 281C MOV R0,R5
\ 0000022E ........ _BLF fprintf,??fprintf??rT
237 }
238 }
\ ??menu_13:
\ 00000232 49B0 ADD SP,#+292
\ 00000234 .... B ?Subroutine2
\ 00000236 C046 NOP
\ ??menu_1:
\ 00000238 ........ DC32 `?<Constant "wodemima">` + 32
\ 0000023C ........ DC32 `?<Constant "wodemima">` + 44
\ 00000240 ........ DC32 `?<Constant "wodemima">` + 56
\ 00000244 ........ DC32 `?<Constant "wodemima">` + 68
\ 00000248 ........ DC32 `?<Constant "wodemima">` + 76
\ 0000024C ........ DC32 `?<Constant "wodemima">` + 84
\ 00000250 ........ DC32 `?<Constant "wodemima">` + 96
\ 00000254 ........ DC32 `?<Constant "wodemima">` + 108
\ 00000258 0A0D0000 DC8 "\n\r",+0
\ 0000025C ........ DC32 `?<Constant "wodemima">` + 136
\ 00000260 ........ DC32 `?<Constant "wodemima">` + 152
\ 00000264 ........ DC32 `?<Constant "wodemima">`
\ 00000268 ........ DC32 `?<Constant "wodemima">` + 120
\ 0000026C ........ DC32 `?<Constant "wodemima">` + 12
\ 00000270 ........ DC32 `?<Constant "wodemima">` + 160
\ 00000274 ........ DC32 `?<Constant "wodemima">` + 180
\ 00000278 0A0D2E00 DC8 "\n\r."
\ 0000027C ........ DC32 `?<Constant "wodemima">` + 192
\ 00000280 ........ DC32 `?<Constant "wodemima">` + 208
\ 00000284 ........ DC32 `?<Constant "wodemima">` + 228
\ 00000288 ........ DC32 `?<Constant "wodemima">` + 244
\ In segment CODE, align 4, keep-with-next
\ ?Subroutine2:
\ 00000000 F0BC POP {R4-R7}
\ 00000002 01BC POP {R0}
\ 00000004 0047 BX R0 ;; return
\ 00000006 C046 NOP
\ ??Subroutine2_0:
\ 00000008 08FDFFFF DC32 0xfffffd08
\ 0000000C 010400A5 DC32 0xa5000401
\ 00000010 10FCFFFF DC32 0xfffffc10
\ 00000014 30F4FFFF DC32 0xfffff430
\ 00000018 00F4FFFF DC32 0xfffff400
\ 0000001C 10F4FFFF DC32 0xfffff410
\ 00000020 60F4FFFF DC32 0xfffff460
\ 00000024 64F4FFFF DC32 0xfffff464
\ 00000028 70F4FFFF DC32 0xfffff470
\ 0000002C 74F4FFFF DC32 0xfffff474
\ 00000030 04F4FFFF DC32 0xfffff404
\ 00000034 0CF2FFFF DC32 0xfffff20c
\ 00000038 00F2FFFF DC32 0xfffff200
\ 0000003C 20F2FFFF DC32 0xfffff220
\ 00000040 28F2FFFF DC32 0xfffff228
\ 00000044 00F3FFFF DC32 0xfffff300
\ 00000048 04F2FFFF DC32 0xfffff204
\ 0000004C ........ DC32 `?<Constant "Error END\\n\\r">`
\ 00000050 0040DB02 DC32 0x2db4000
\ 00000054 00C0FCFF DC32 0xfffcc000
\ 00000058 ........ DC32 countLed
\ 0000005C 60FDFFFF DC32 0xfffffd60
\ 00000060 10C2FCFF DC32 0xfffcc210
\ 00000064 30C2FCFF DC32 0xfffcc230
239
240
241
242 /*****************************************************************
243 *
244 * ROUTINE : main function
245 *
246 *-----------------------------------------------------------------
247 *
248 * Purpose :
249 *
250 * Input parameters : NONE
251 *
252 * Output parameters :
253 *
254 * Global data :
255 *
256 *****************************************************************/
\ In segment CODE, align 4, keep-with-next
257 void main( void )
258 {
\ main:
\ 00000000 F0B5 PUSH {R4-R7,LR}
259 int status = INTERNAL_ERROR;
260 #ifdef USE_LED
261 unsigned char counter = 0;
\ 00000002 0024 MOV R4,#+0
262 #endif
263
264 // Enable User Reset and set its minimal assertion to 960 us
265 AT91F_RSTSetMode( AT91C_BASE_RSTC,AT91C_RSTC_URSTEN | (0x4<<8) );
\ 00000004 .... LDR R0,??Subroutine2_0 ;; 0xfffffd08
\ 00000006 .... LDR R1,??Subroutine2_0+0x4 ;; 0xa5000401
\ 00000008 0160 STR R1,[R0, #+0]
266
267 // Enable Peripheral clock in PMC for PIOA
268 AT91F_PIOA_CfgPMC();
\ 0000000A .... LDR R0,??Subroutine2_0+0x8 ;; 0xfffffc10
\ 0000000C 0421 MOV R1,#+4
\ 0000000E 0160 STR R1,[R0, #+0]
269
270 // Set to 1 output PIO
271 AT91F_PIO_SetOutput( AT91C_BASE_PIOA, 0xFFFFFFFF );
\ 00000010 .... LDR R1,??Subroutine2_0+0xC ;; 0xfffff430
\ 00000012 0020 MOV R0,#+0
\ 00000014 C043 MVN R0,R0 ;; #-1
\ 00000016 0860 STR R0,[R1, #+0]
272
273 // Enable PIO in output mode
274 AT91F_PIO_CfgOutput( AT91C_BASE_PIOA, 0xFFFFFFFF );
\ 00000018 .... LDR R2,??Subroutine2_0+0x10 ;; 0xfffff400
\ 0000001A 1060 STR R0,[R2, #+0]
\ 0000001C .... LDR R2,??Subroutine2_0+0x14 ;; 0xfffff410
\ 0000001E 1060 STR R0,[R2, #+0]
275
276 // Disable pullup on PIO
277 AT91F_PIO_CfgPullup( AT91C_BASE_PIOA, 0x00000000 );
\ 00000020 .... LDR R2,??Subroutine2_0+0x18 ;; 0xfffff460
\ 00000022 1060 STR R0,[R2, #+0]
\ 00000024 0025 MOV R5,#+0
\ 00000026 .... LDR R2,??Subroutine2_0+0x1C ;; 0xfffff464
\ 00000028 1460 STR R4,[R2, #+0]
278
279 #ifdef PULL_UP_USB
280 // Disable UDP Pull Up (USB_DP_PUP)
281 #ifdef AT91SAM7A3
282 #ifdef REV_A // old board
283 AT91F_PIO_CfgOutput(AT91C_BASE_PIOB,AT91C_PIO_PB1);
284 AT91F_PIO_SetOutput( AT91C_BASE_PIOB, AT91C_PIO_PB1 );
285 #else // new board
286 AT91F_PIO_CfgOutput(AT91C_BASE_PIOB,AT91C_PIO_PB1);
287 AT91F_PIO_ClearOutput( AT91C_BASE_PIOB, AT91C_PIO_PB1 );
288 #endif
289 #else
290 AT91F_PIO_SetOutput( AT91C_BASE_PIOA, AT91C_PIO_PA16 );
\ 0000002A 8022 MOV R2,#+128
\ 0000002C 5202 LSL R2,R2,#+9 ;; #+65536
\ 0000002E 0A60 STR R2,[R1, #+0]
291 #endif
292 #endif
293
294 #if defined (TR_INFO) || defined (TR_WARNING) || defined (TR_ERROR) || defined (TR_FATAL) || defined (TR_DEBUG_H) || defined (TR_DEBUG_M)
295 // Open PIO for DBGU
296 AT91F_DBGU_CfgPIO();
\ 00000030 C021 MOV R1,#+192
\ 00000032 4905 LSL R1,R1,#+21 ;; #+402653184
\ 00000034 .... LDR R2,??Subroutine2_0+0x20 ;; 0xfffff470
\ 00000036 1160 STR R1,[R2, #+0]
\ 00000038 .... LDR R2,??Subroutine2_0+0x24 ;; 0xfffff474
\ 0000003A 1460 STR R4,[R2, #+0]
\ 0000003C .... LDR R2,??Subroutine2_0+0x28 ;; 0xfffff404
\ 0000003E 1160 STR R1,[R2, #+0]
297
298 // Configure DBGU
299 AT91F_US_Configure
300 (
301 (AT91PS_USART) AT91C_BASE_DBGU,
302 AT91C_MASTER_CLOCK,
303 AT91C_US_ASYNC_MODE, // mode Register to be programmed
304 AT91C_DBGU_BAUD, // baudrate to be programmed
305 0); // timeguard to be programmed
\ 00000040 .... LDR R1,??Subroutine2_0+0x2C ;; 0xfffff20c
\ 00000042 0860 STR R0,[R1, #+0]
\ 00000044 .... LDR R6,??Subroutine2_0+0x30 ;; 0xfffff200
\ 00000046 AC20 MOV R0,#+172
\ 00000048 3060 STR R0,[R6, #+0]
\ 0000004A .... LDR R0,??Subroutine2_0+0x34 ;; 0xfffff220
\ 0000004C 1A21 MOV R1,#+26
\ 0000004E 0160 STR R1,[R0, #+0]
\ 00000050 .... LDR R0,??Subroutine2_0+0x38 ;; 0xfffff228
\ 00000052 0460 STR R4,[R0, #+0]
\ 00000054 .... LDR R0,??Subroutine2_0+0x3C ;; 0xfffff300
\ 00000056 ........ _BLF AT91F_PDC_Open,??AT91F_PDC_Open??rT
\ 0000005A .... LDR R0,??Subroutine2_0+0x40 ;; 0xfffff204
\ 0000005C 8C21 MOV R1,#+140
\ 0000005E 0901 LSL R1,R1,#+4 ;; #+2240
\ 00000060 0160 STR R1,[R0, #+0]
306
307 // Enable Transmitter
308 AT91F_US_EnableTx((AT91PS_USART) AT91C_BASE_DBGU);
\ 00000062 4020 MOV R0,#+64
\ 00000064 3060 STR R0,[R6, #+0]
309 AT91F_US_EnableRx((AT91PS_USART) AT91C_BASE_DBGU);
\ 00000066 1020 MOV R0,#+16
\ 00000068 3060 STR R0,[R6, #+0]
310
311 // Disable peripheral clock in PMC for PIOA
312 //AT91F_PMC_DisablePeriphClock( AT91C_BASE_PMC, (1 << AT91C_ID_PIOA) );
313 #endif
314
315 TRACE_INFO( "\n\r\n\rUSB-BFSA\n\r");
\ 0000006A .... LDR R6,??DataTable2 ;; _Stdout
\ 0000006C .... LDR R7,??Subroutine2_0+0x44 ;; `?<Constant "Error END\\n\\r">`
\ 0000006E 391C MOV R1,R7
\ 00000070 0C31 ADD R1,#+12
\ 00000072 301C MOV R0,R6
\ 00000074 ........ _BLF fprintf,??fprintf??rT
316
317 #ifdef USE_LED
318 AT91F_LED_init( AT91C_BASE_PWMC, AT91C_MASTER_CLOCK );
\ 00000078 .... LDR R1,??Subroutine2_0+0x48 ;; 0x2db4000
\ 0000007A .... LDR R0,??Subroutine2_0+0x4C ;; 0xfffcc000
\ 0000007C ........ _BLF AT91F_LED_init,??AT91F_LED_init??rT
319 #endif
320
321
322 if(disk_initialize()==0x0)
\ 00000080 ........ _BLF disk_initialize,??disk_initialize??rT
\ 00000084 0028 CMP R0,#+0
\ 00000086 02D1 BNE ??main_0
323 {
324 TRACE_INFO("MMC disk initialized .\r\n") ;
\ 00000088 391C MOV R1,R7
\ 0000008A 1C31 ADD R1,#+28
\ 0000008C 01E0 B ??main_1
325 }
326 else
327 {
328 TRACE_INFO("No mmc disk !! \r\n") ;
\ ??main_0:
\ 0000008E 391C MOV R1,R7
\ 00000090 3831 ADD R1,#+56
\ ??main_1:
\ 00000092 301C MOV R0,R6
\ 00000094 ........ _BLF fprintf,??fprintf??rT
329 }
330 bGet = TRUE;
\ 00000098 .... LDR R0,??DataTable3 ;; bGet
\ 0000009A 0121 MOV R1,#+1
\ 0000009C 0160 STR R1,[R0, #+0]
331 // Initialize BFS
332 if( BFSA_SUCCESS != BFSA_init())
\ 0000009E ........ _BLF BFSA_init,??BFSA_init??rT
\ 000000A2 0028 CMP R0,#+0
\ 000000A4 2BD0 BEQ ??main_2
333 {
334 TRACE_INFO( "\n\r\n\rNot init filesys \n\r");
\ 000000A6 391C MOV R1,R7
\ 000000A8 4C31 ADD R1,#+76
\ 000000AA 301C MOV R0,R6
\ 000000AC ........ _BLF fprintf,??fprintf??rT
335
336 /* status = BFSA_format();
337 if( BFSA_SUCCESS != status )
338 {
339 TRACE_INFO( "FORMAT fault !\n\r");
340 }
341 else
342 {
343 TRACE_INFO( "FORMAT OK\n\r");
344 status = 1; // We need a BFSA_init()
345 }
346 */
347
348 }
349 else
350 {
351 status = BFSA_SUCCESS;
352 TRACE_INFO( "\n\r\n\r inited filesys \n\r");
353 }
354
355 if( BFSA_SUCCESS != status )
356 {
357 if( BFSA_SUCCESS == BFSA_init() )
\ 000000B0 ........ _BLF BFSA_init,??BFSA_init??rT
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -