📄 main.lst
字号:
226 if( BFSA_SUCCESS != status )
\ 00000236 04D1 BNE ??menu_11
227 {
228 goto FAILURE;
229 }
230 TRACE_INFO( "OK\n\r");
\ 00000238 0099 LDR R1,[SP, #+0]
\ 0000023A 201C MOV R0,R4
\ 0000023C ........ _BLF fprintf,??fprintf??rT
\ 00000240 06E0 B ??menu_14
231 }
232 break;
233 }
234
235 FAILURE:
236 if( BFSA_SUCCESS != status )
\ ??menu_11:
\ 00000242 002E CMP R6,#+0
\ 00000244 04D0 BEQ ??menu_14
237 TRACE_INFO( "failed (0x%X)\n\r", (int)status);
\ 00000246 321C MOV R2,R6
\ 00000248 1649 LDR R1,??menu_1+0x50 ;; `?<Constant "">` + 244
\ 0000024A 201C MOV R0,R4
\ 0000024C ........ _BLF fprintf,??fprintf??rT
238 }
239 }
\ ??menu_14:
\ 00000250 49B0 ADD SP,#+292
\ 00000252 .... B ?Subroutine2
\ ??menu_1:
\ 00000254 ........ DC32 `?<Constant "">` + 12
\ 00000258 ........ DC32 `?<Constant "">` + 24
\ 0000025C ........ DC32 `?<Constant "">` + 36
\ 00000260 ........ DC32 `?<Constant "">` + 48
\ 00000264 ........ DC32 `?<Constant "">` + 56
\ 00000268 ........ DC32 `?<Constant "">` + 64
\ 0000026C ........ DC32 `?<Constant "">` + 76
\ 00000270 ........ DC32 `?<Constant "">` + 88
\ 00000274 0A0D0000 DC8 "\n\r",+0
\ 00000278 ........ DC32 `?<Constant "">` + 132
\ 0000027C ........ DC32 `?<Constant "">` + 100
\ 00000280 ........ DC32 `?<Constant "">` + 116
\ 00000284 ........ DC32 `?<Constant "12345">`
\ 00000288 ........ DC32 `?<Constant "512">`
\ 0000028C ........ DC32 `?<Constant "">` + 140
\ 00000290 ........ DC32 `?<Constant "">` + 160
\ 00000294 ........ DC32 `?<Constant "">` + 180
\ 00000298 ........ DC32 `?<Constant "">` + 192
\ 0000029C ........ DC32 `?<Constant "">` + 208
\ 000002A0 ........ DC32 `?<Constant "">` + 228
\ 000002A4 ........ DC32 `?<Constant "">` + 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 "\\n\\r\\n\\rUSB-BFSA\\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
240
241
242
243 /*****************************************************************
244 *
245 * ROUTINE : main function
246 *
247 *-----------------------------------------------------------------
248 *
249 * Purpose :
250 *
251 * Input parameters : NONE
252 *
253 * Output parameters :
254 *
255 * Global data :
256 *
257 *****************************************************************/
\ In segment CODE, align 4, keep-with-next
258 void main( void )
259 {
\ main:
\ 00000000 F0B5 PUSH {R4-R7,LR}
260 int status = INTERNAL_ERROR;
261 #ifdef USE_LED
262 unsigned char counter = 0;
\ 00000002 0024 MOV R4,#+0
263 #endif
264
265 // Enable User Reset and set its minimal assertion to 960 us
266 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]
267
268 // Enable Peripheral clock in PMC for PIOA
269 AT91F_PIOA_CfgPMC();
\ 0000000A .... LDR R0,??Subroutine2_0+0x8 ;; 0xfffffc10
\ 0000000C 0421 MOV R1,#+4
\ 0000000E 0160 STR R1,[R0, #+0]
270
271 // Set to 1 output PIO
272 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]
273
274 // Enable PIO in output mode
275 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]
276
277 // Disable pullup on PIO
278 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]
279
280 #ifdef PULL_UP_USB
281 // Disable UDP Pull Up (USB_DP_PUP)
282 #ifdef AT91SAM7A3
283 #ifdef REV_A // old board
284 AT91F_PIO_CfgOutput(AT91C_BASE_PIOB,AT91C_PIO_PB1);
285 AT91F_PIO_SetOutput( AT91C_BASE_PIOB, AT91C_PIO_PB1 );
286 #else // new board
287 AT91F_PIO_CfgOutput(AT91C_BASE_PIOB,AT91C_PIO_PB1);
288 AT91F_PIO_ClearOutput( AT91C_BASE_PIOB, AT91C_PIO_PB1 );
289 #endif
290 #else
291 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]
292 #endif
293 #endif
294
295 #if defined (TR_INFO) || defined (TR_WARNING) || defined (TR_ERROR) || defined (TR_FATAL) || defined (TR_DEBUG_H) || defined (TR_DEBUG_M)
296 // Open PIO for DBGU
297 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]
298
299 // Configure DBGU
300 AT91F_US_Configure
301 (
302 (AT91PS_USART) AT91C_BASE_DBGU,
303 AT91C_MASTER_CLOCK,
304 AT91C_US_ASYNC_MODE, // mode Register to be programmed
305 AT91C_DBGU_BAUD, // baudrate to be programmed
306 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]
307
308 // Enable Transmitter
309 AT91F_US_EnableTx((AT91PS_USART) AT91C_BASE_DBGU);
\ 00000062 4020 MOV R0,#+64
\ 00000064 3060 STR R0,[R6, #+0]
310 AT91F_US_EnableRx((AT91PS_USART) AT91C_BASE_DBGU);
\ 00000066 1020 MOV R0,#+16
\ 00000068 3060 STR R0,[R6, #+0]
311
312 // Disable peripheral clock in PMC for PIOA
313 //AT91F_PMC_DisablePeriphClock( AT91C_BASE_PMC, (1 << AT91C_ID_PIOA) );
314 #endif
315
316 TRACE_INFO( "\n\r\n\rUSB-BFSA\n\r");
\ 0000006A .... LDR R6,??DataTable2 ;; _Stdout
\ 0000006C .... LDR R7,??Subroutine2_0+0x44 ;; `?<Constant "\\n\\r\\n\\rUSB-BFSA\\n\\r">`
\ 0000006E 391C MOV R1,R7
\ 00000070 301C MOV R0,R6
\ 00000072 ........ _BLF fprintf,??fprintf??rT
317
318 #ifdef USE_LED
319 AT91F_LED_init( AT91C_BASE_PWMC, AT91C_MASTER_CLOCK );
\ 00000076 .... LDR R1,??Subroutine2_0+0x48 ;; 0x2db4000
\ 00000078 .... LDR R0,??Subroutine2_0+0x4C ;; 0xfffcc000
\ 0000007A ........ _BLF AT91F_LED_init,??AT91F_LED_init??rT
320 #endif
321
322
323 if(disk_initialize()==0x0)
\ 0000007E ........ _BLF disk_initialize,??disk_initialize??rT
\ 00000082 0028 CMP R0,#+0
\ 00000084 02D1 BNE ??main_0
324 {
325 TRACE_INFO("MMC disk initialized .\r\n") ;
\ 00000086 391C MOV R1,R7
\ 00000088 1031 ADD R1,#+16
\ 0000008A 01E0 B ??main_1
326 }
327 else
328 {
329 TRACE_INFO("No mmc disk !! \r\n") ;
\ ??main_0:
\ 0000008C 391C MOV R1,R7
\ 0000008E 2C31 ADD R1,#+44
\ ??main_1:
\ 00000090 301C MOV R0,R6
\ 00000092 ........ _BLF fprintf,??fprintf??rT
330 }
331 bGet = TRUE;
\ 00000096 .... LDR R0,??DataTable3 ;; bGet
\ 00000098 0121 MOV R1,#+1
\ 0000009A 0160 STR R1,[R0, #+0]
332 // Initialize BFS
333 if( BFSA_SUCCESS != BFSA_init())
\ 0000009C ........ _BLF BFSA_init,??BFSA_init??rT
\ 000000A0 0028 CMP R0,#+0
\ 000000A2 2BD0 BEQ ??main_2
334 {
335 TRACE_INFO( "\n\r\n\rNot init filesys \n\r");
\ 000000A4 391C MOV R1,R7
\ 000000A6 4031 ADD R1,#+64
\ 000000A8 301C MOV R0,R6
\ 000000AA ........ _BLF fprintf,??fprintf??rT
336
337 /* status = BFSA_format();
338 if( BFSA_SUCCESS != status )
339 {
340 TRACE_INFO( "FORMAT fault !\n\r");
341 }
342 else
343 {
344 TRACE_INFO( "FORMAT OK\n\r");
345 status = 1; // We need a BFSA_init()
346 }
347 */
348
349 }
350 else
351 {
352 status = BFSA_SUCCESS;
353 TRACE_INFO( "\n\r\n\r inited filesys \n\r");
354 }
355
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -