?? main.lst
字號:
\ 00000000 F1402DE9 PUSH {R0,R4-R7,LR}
455 unsigned int page,i;
456 unsigned char *tmp;
457 unsigned int time;
458 tmp = SdCodeAddr;
\ 00000004 ........ LDR R0,??DataTable39 ;; SdCodeAddr
\ 00000008 004090E5 LDR R4,[R0, #+0]
459 time = timestamp;
\ 0000000C 08019FE5 LDR R0,??LeadAPP_0 ;; timestamp
\ 00000010 005090E5 LDR R5,[R0, #+0]
460 unsigned long CRC;
461 for(page=0;page< AT45_PageNumber(&at45);)
\ 00000014 0060A0E3 MOV R6,#+0
\ 00000018 0F0000EA B ??LeadAPP_1
462 {
463 // Verify that page has been erased correctly
464 memset(pBuffer, 0, AT45_PageSize(&at45));
465 AT45_Read(&at45, pBuffer, AT45_PageSize(&at45), page * AT45_PageSize(&at45));
466 for (i=0; i < AT45_PageSize(&at45); i++) {
467 *tmp = pBuffer[i];
\ ??LeadAPP_2:
\ 0000001C ........ LDR R0,??DataTable37 ;; pBuffer
\ 00000020 0000D7E7 LDRB R0,[R7, +R0]
\ 00000024 0100C4E4 STRB R0,[R4], #+1
468 tmp++;
469 }
\ 00000028 017087E2 ADD R7,R7,#+1
\ ??LeadAPP_3:
\ 0000002C ........ LDR R0,??DataTable47 ;; at45
\ 00000030 ........ BL AT45_PageSize
\ 00000034 000057E1 CMP R7,R0
\ 00000038 F7FFFF3A BCC ??LeadAPP_2
470 tmp--;
471 TRACE_INFO("tmp:%x,buffer[0]:%x,buffer[527]:%x\n\r",*tmp,pBuffer[0],pBuffer[527]);
\ 0000003C DC009FE5 LDR R0,??LeadAPP_0+0x4 ;; pBuffer + 527
\ 00000040 0030D0E5 LDRB R3,[R0, #+0]
\ 00000044 ........ LDR R0,??DataTable37 ;; pBuffer
\ 00000048 0020D0E5 LDRB R2,[R0, #+0]
\ 0000004C 011074E5 LDRB R1,[R4, #-1]!
\ 00000050 CC009FE5 LDR R0,??LeadAPP_0+0x8 ;; `?<Constant "-I- tmp:%x,buffer[0]:...">`
\ 00000054 ........ BL printf
472 page++;
\ 00000058 016086E2 ADD R6,R6,#+1
\ ??LeadAPP_1:
\ 0000005C ........ LDR R0,??DataTable46 ;; at45 + 28
\ 00000060 000090E5 LDR R0,[R0, #+0]
\ 00000064 000090E5 LDR R0,[R0, #+0]
\ 00000068 000056E1 CMP R6,R0
\ 0000006C 1100002A BCS ??LeadAPP_4
\ 00000070 ........ LDR R0,??DataTable47 ;; at45
\ 00000074 ........ BL AT45_PageSize
\ 00000078 0020A0E1 MOV R2,R0
\ 0000007C 0010A0E3 MOV R1,#+0
\ 00000080 ........ LDR R0,??DataTable37 ;; pBuffer
\ 00000084 ........ BL memset
\ 00000088 ........ LDR R0,??DataTable47 ;; at45
\ 0000008C ........ BL AT45_PageSize
\ 00000090 0070A0E1 MOV R7,R0
\ 00000094 ........ LDR R0,??DataTable47 ;; at45
\ 00000098 ........ BL AT45_PageSize
\ 0000009C 0020A0E1 MOV R2,R0
\ 000000A0 970603E0 MUL R3,R7,R6
\ 000000A4 ........ LDR R1,??DataTable37 ;; pBuffer
\ 000000A8 ........ LDR R0,??DataTable47 ;; at45
\ 000000AC ........ BL AT45_Read
\ 000000B0 0070A0E3 MOV R7,#+0
\ 000000B4 DCFFFFEA B ??LeadAPP_3
473 }
474
475 if(WhetherEmpty() == 1)
\ ??LeadAPP_4:
\ 000000B8 ........ BL WhetherEmpty
\ 000000BC 010050E3 CMP R0,#+1
\ 000000C0 1300000A BEQ ??LeadAPP_5
476 {
477 return 1;
478 }
479 else
480 {
481 TRACE_INFO("The code has transmit to sdram\n\r");
\ 000000C4 5C009FE5 LDR R0,??LeadAPP_0+0xC ;; `?<Constant "-I- The code has tran...">`
\ 000000C8 ........ BL printf
482 CRC = FullCRC(tmp,sizeof(tmp));
\ 000000CC 0410A0E3 MOV R1,#+4
\ 000000D0 0400A0E1 MOV R0,R4
\ 000000D4 ........ BL FullCRC
\ 000000D8 0040A0E1 MOV R4,R0
483 time = timestamp-time;
\ 000000DC 38009FE5 LDR R0,??LeadAPP_0 ;; timestamp
\ 000000E0 000090E5 LDR R0,[R0, #+0]
\ 000000E4 051040E0 SUB R1,R0,R5
484 TRACE_INFO("CRC end time:%d\n\r",time);
^
Remark[Pe181]: argument is incompatible with corresponding format string
conversion
\ 000000E8 3C009FE5 LDR R0,??LeadAPP_0+0x10 ;; `?<Constant "-I- CRC end time:%d\\n\\r">`
\ 000000EC ........ BL printf
485 TRACE_INFO("CRC over:%d\n\r",CRC);
^
Remark[Pe181]: argument is incompatible with corresponding format string
conversion
static void AT45_Erase(At45 *pAt45, unsigned int address)
^
"D:\basic-dataflash-project-at91sam7se-ek\at91sam7se-ek\basic-dataflash-project\main.c",332 Warning[Pe177]:
function "AT45_Erase" was declared but never referenced
\ 000000F0 0410A0E1 MOV R1,R4
\ 000000F4 34009FE5 LDR R0,??LeadAPP_0+0x14 ;; `?<Constant "-I- CRC over:%d\\n\\r">`
\ 000000F8 ........ BL printf
486 if(CRC == interface->CRC)
\ 000000FC ........ LDR R0,??DataTable51 ;; interface
\ 00000100 000090E5 LDR R0,[R0, #+0]
\ 00000104 0C0090E5 LDR R0,[R0, #+12]
\ 00000108 000054E1 CMP R4,R0
487 {
488 return 0;
\ 0000010C 0000A003 MOVEQ R0,#+0
489 }
490 else
491 {
492 return 1;
\ 00000110 0100A013 MOVNE R0,#+1
\ ??LeadAPP_5:
\ 00000114 F840BDE8 POP {R3-R7,LR}
\ 00000118 1EFF2FE1 BX LR ;; return
\ ??LeadAPP_0:
\ 0000011C ........ DC32 timestamp
\ 00000120 ........ DC32 pBuffer + 527
\ 00000124 ........ DC32 `?<Constant "-I- tmp:%x,buffer[0]:...">`
\ 00000128 ........ DC32 `?<Constant "-I- The code has tran...">`
\ 0000012C ........ DC32 `?<Constant "-I- CRC end time:%d\\n\\r">`
\ 00000130 ........ DC32 `?<Constant "-I- CRC over:%d\\n\\r">`
493 }
494 }
495 }
496
497 //------------------------------------------------------------------------------
498 ///LoadApp() function was used to promote the application. So when the apllication
499 // load the application code to the sdram we should save code in dataflash
500 //\param information was used to store the code information
501 //------------------------------------------------------------------------------
\ In section .text, align 4, keep-with-next
502 static void LoadApp(INTERFACE * addr)
503 {
\ LoadApp:
\ 00000000 F1402DE9 PUSH {R0,R4-R7,LR}
504 unsigned int j,PageNum;
505 unsigned long PageUse;
506 unsigned char *tmp;
507 unsigned long CRC;
508 interface = (struct Inter *)addr;
\ 00000004 ........ LDR R1,??DataTable51 ;; interface
\ 00000008 000081E5 STR R0,[R1, #+0]
509 tmp = (unsigned char *)interface->address;
\ 0000000C ........ LDR R0,??DataTable51 ;; interface
\ 00000010 000090E5 LDR R0,[R0, #+0]
\ 00000014 004090E5 LDR R4,[R0, #+0]
510
511 CRC = FullCRC(tmp, sizeof(tmp));
512 if(CRC ==0 )
\ 00000018 0410A0E3 MOV R1,#+4
\ 0000001C 0400A0E1 MOV R0,R4
\ 00000020 ........ BL FullCRC
\ 00000024 000050E3 CMP R0,#+0
\ 00000028 2300001A BNE ??LoadApp_0
513 {
514 PageUse = interface->CSize/AT45_PageSize(&at45)+1;
\ 0000002C ........ LDR R0,??DataTable47 ;; at45
\ 00000030 ........ BL AT45_PageSize
\ 00000034 0010A0E1 MOV R1,R0
\ 00000038 ........ LDR R0,??DataTable51 ;; interface
\ 0000003C 000090E5 LDR R0,[R0, #+0]
\ 00000040 080090E5 LDR R0,[R0, #+8]
\ 00000044 ........ BL __aeabi_uidivmod
\ 00000048 015090E2 ADDS R5,R0,#+1
515
516 for(PageNum=0; PageNum<PageUse; PageNum++)
\ 0000004C 0060A0E3 MOV R6,#+0
\ 00000050 1900000A BEQ ??LoadApp_0
517 {
518 for(j=0; j<AT45_PageSize(&at45); j++)
\ ??LoadApp_1:
\ 00000054 0070A0E3 MOV R7,#+0
\ 00000058 030000EA B ??LoadApp_2
519 {
520 pBuffer[j] = *tmp;
\ ??LoadApp_3:
\ 0000005C ........ LDR R0,??DataTable37 ;; pBuffer
\ 00000060 0110D4E4 LDRB R1,[R4], #+1
\ 00000064 0010C7E7 STRB R1,[R7, +R0]
521 tmp++;
522 }
\ 00000068 017087E2 ADD R7,R7,#+1
\ ??LoadApp_2:
\ 0000006C ........ LDR R0,??DataTable47 ;; at45
\ 00000070 ........ BL AT45_PageSize
\ 00000074 000057E1 CMP R7,R0
\ 00000078 F7FFFF3A BCC ??LoadApp_3
523 AT45_Write(&at45,pBuffer,AT45_PageSize(&at45), (interface->DFAddr +PageNum * AT45_PageSize(&at45)));
\ 0000007C ........ LDR R0,??DataTable47 ;; at45
\ 00000080 ........ BL AT45_PageSize
\ 00000084 0070A0E1 MOV R7,R0
\ 00000088 ........ LDR R0,??DataTable47 ;; at45
\ 0000008C ........ BL AT45_PageSize
\ 00000090 ........ LDR R1,??DataTable51 ;; interface
\ 00000094 001091E5 LDR R1,[R1, #+0]
\ 00000098 041091E5 LDR R1,[R1, #+4]
\ 0000009C 971623E0 MLA R3,R7,R6,R1
\ 000000A0 0020A0E1 MOV R2,R0
\ 000000A4 ........ LDR R1,??DataTable37 ;; pBuffer
\ 000000A8 ........ LDR R0,??DataTable47 ;; at45
\ 000000AC ........ BL AT45_Write
524 }
\ 000000B0 016086E2 ADD R6,R6,#+1
\ 000000B4 050056E1 CMP R6,R5
\ 000000B8 E5FFFF3A BCC ??LoadApp_1
525 }
526 }
\ ??LoadApp_0:
\ 000000BC F840BDE8 POP {R3-R7,LR}
\ 000000C0 1EFF2FE1 BX LR ;; return
527 //My function ending************************************************************
528 //------------------------------------------------------------------------------
529 /// Tests the At45 connected to the board by performing several command
530 /// on each of its pages.
531 //----------------------
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -