main.lst
来自「本程序是以前程序的升级」· LST 代码 · 共 1,161 行 · 第 1/5 页
LST
1,161 行
\ 00000010 004090E5 LDR R4,[R0, #+0]
469 unsigned long crc,ConfigureCRC;
470
471 TRACE_INFO("In LeadApp\n\r");
\ 00000014 E4009FE5 LDR R0,??LeadAPP_0 ;; `?<Constant "-I- In LeadApp\\n\\r">`
\ 00000018 ........ BL printf
472 TRACE_INFO("LEADTIME:%d\n\r",time);
^
Remark[Pe181]: argument is incompatible with corresponding format string
conversion
\ 0000001C 0410A0E1 MOV R1,R4
\ 00000020 DC009FE5 LDR R0,??LeadAPP_0+0x4 ;; `?<Constant "-I- LEADTIME:%d\\n\\r">`
\ 00000024 ........ BL printf
473 for(page=1;page< AT45_PageNumber(&at45);page++)
\ 00000028 0160A0E3 MOV R6,#+1
\ 0000002C 080000EA B ??LeadAPP_1
474 {
475 // Verify that page has been erased correctly
476 AT45_Read(&at45, pBuffer, AT45_PageSize(&at45), page * AT45_PageSize(&at45));
477 for (i=0; i < AT45_PageSize(&at45); i++)
478 {
479 *tmp = pBuffer[i];
\ ??LeadAPP_2:
\ 00000030 ........ LDR R0,??DataTable61 ;; pBuffer
\ 00000034 0000D7E7 LDRB R0,[R7, +R0]
\ 00000038 0100C5E4 STRB R0,[R5], #+1
480 tmp++;
481 }
\ 0000003C 017087E2 ADD R7,R7,#+1
\ ??LeadAPP_3:
\ 00000040 ........ LDR R0,??DataTable73 ;; at45
\ 00000044 ........ BL AT45_PageSize
\ 00000048 000057E1 CMP R7,R0
\ 0000004C F7FFFF3A BCC ??LeadAPP_2
\ 00000050 016086E2 ADD R6,R6,#+1
\ ??LeadAPP_1:
\ 00000054 ........ LDR R0,??DataTable72 ;; at45 + 28
\ 00000058 000090E5 LDR R0,[R0, #+0]
\ 0000005C 000090E5 LDR R0,[R0, #+0]
\ 00000060 000056E1 CMP R6,R0
\ 00000064 0B00002A BCS ??LeadAPP_4
\ 00000068 ........ LDR R0,??DataTable73 ;; at45
\ 0000006C ........ BL AT45_PageSize
\ 00000070 0070A0E1 MOV R7,R0
\ 00000074 ........ LDR R0,??DataTable73 ;; at45
\ 00000078 ........ BL AT45_PageSize
\ 0000007C 970603E0 MUL R3,R7,R6
\ 00000080 0020A0E1 MOV R2,R0
\ 00000084 ........ LDR R1,??DataTable61 ;; pBuffer
\ 00000088 ........ LDR R0,??DataTable73 ;; at45
\ 0000008C ........ BL AT45_Read
\ 00000090 0070A0E3 MOV R7,#+0
\ 00000094 E9FFFFEA B ??LeadAPP_3
482 }
483 if(WhetherEmpty() == 1)
\ ??LeadAPP_4:
\ 00000098 ........ BL WhetherEmpty
\ 0000009C 010050E3 CMP R0,#+1
\ 000000A0 1400000A BEQ ??LeadAPP_5
484 {
485 return 1;
486 }
487 else
488 {
489 crc = FullCRC(SdCodeAddr,4095*AT45_PageSize(&at45));
\ 000000A4 ........ LDR R0,??DataTable73 ;; at45
\ 000000A8 ........ BL AT45_PageSize
\ 000000AC 001660E0 RSB R1,R0,R0, LSL #+12
\ 000000B0 ........ LDR R0,??DataTable65 ;; SdCodeAddr
\ 000000B4 000090E5 LDR R0,[R0, #+0]
\ 000000B8 ........ BL FullCRC
\ 000000BC 0050A0E1 MOV R5,R0
490 time = timestamp-time;
\ 000000C0 ........ LDR R0,??DataTable64 ;; timestamp
\ 000000C4 000090E5 LDR R0,[R0, #+0]
\ 000000C8 041040E0 SUB R1,R0,R4
491
492 TRACE_INFO("CRC end time:%x\n\r",time);
\ 000000CC 34009FE5 LDR R0,??LeadAPP_0+0x8 ;; `?<Constant "-I- CRC end time:%x\\n\\r">`
\ 000000D0 ........ BL printf
493 AT45_Read(&at45,(unsigned char *)&ConfigureCRC,4,524);
\ 000000D4 833FA0E3 MOV R3,#+524
\ 000000D8 0420A0E3 MOV R2,#+4
\ 000000DC 0D10A0E1 MOV R1,SP
\ 000000E0 ........ LDR R0,??DataTable73 ;; at45
\ 000000E4 ........ BL AT45_Read
494 if(crc == ConfigureCRC)
\ 000000E8 00009DE5 LDR R0,[SP, #+0]
\ 000000EC 000055E1 CMP R5,R0
495 {
496 return 0;
\ 000000F0 0000A003 MOVEQ R0,#+0
497 }
498 else
499 {
500 return 1;
\ 000000F4 0100A013 MOVNE R0,#+1
\ ??LeadAPP_5:
\ 000000F8 F840BDE8 POP {R3-R7,LR}
\ 000000FC 1EFF2FE1 BX LR ;; return
\ ??LeadAPP_0:
\ 00000100 ........ DC32 `?<Constant "-I- In LeadApp\\n\\r">`
\ 00000104 ........ DC32 `?<Constant "-I- LEADTIME:%d\\n\\r">`
\ 00000108 ........ DC32 `?<Constant "-I- CRC end time:%x\\n\\r">`
501 }
502 }
503 }
504
505 //------------------------------------------------------------------------------
506 ///LoadApp() function was used to promote the application. So when the apllication
507 // load the application code to the sdram we should save code in dataflash
508 //\param information was used to store the code information
509 //------------------------------------------------------------------------------
\ In section .text, align 4, keep-with-next
510 static unsigned char LoadApp()
511 {
\ LoadApp:
\ 00000000 F1402DE9 PUSH {R0,R4-R7,LR}
512 unsigned int j,PageNum;
513 unsigned char *tmp;
514 unsigned char * codeaddr;
515 unsigned long crc;
516 unsigned char *temp;
517 int time;
518 tmp = (unsigned char *)interface->address;
519
520 crc = FullCRC(tmp, interface->CSize);
\ 00000004 ........ LDR R0,??DataTable76 ;; interface
\ 00000008 000090E5 LDR R0,[R0, #+0]
\ 0000000C 081090E5 LDR R1,[R0, #+8]
\ 00000010 ........ LDR R0,??DataTable76 ;; interface
\ 00000014 000090E5 LDR R0,[R0, #+0]
\ 00000018 000090E5 LDR R0,[R0, #+0]
\ 0000001C ........ BL FullCRC
\ 00000020 00008DE5 STR R0,[SP, #+0]
521
522 codeaddr = SdCodeAddr;
\ 00000024 ........ LDR R0,??DataTable65 ;; SdCodeAddr
\ 00000028 005090E5 LDR R5,[R0, #+0]
523 time = timestamp;
\ 0000002C ........ LDR R0,??DataTable64 ;; timestamp
\ 00000030 004090E5 LDR R4,[R0, #+0]
524 TRACE_INFO("STARTTIME:%d\n\r",time);
\ 00000034 0410A0E1 MOV R1,R4
\ 00000038 58029FE5 LDR R0,??LoadApp_0 ;; `?<Constant "-I- STARTTIME:%d\\n\\r">`
\ 0000003C ........ BL printf
525 TRACE_INFO("IN LOADAPP\n\r");
\ 00000040 54029FE5 LDR R0,??LoadApp_0+0x4 ;; `?<Constant "-I- IN LOADAPP\\n\\r">`
\ 00000044 ........ BL printf
526 if(crc ==interface->CRC )
\ 00000048 00009DE5 LDR R0,[SP, #+0]
\ 0000004C ........ LDR R1,??DataTable76 ;; interface
\ 00000050 001091E5 LDR R1,[R1, #+0]
\ 00000054 0C1091E5 LDR R1,[R1, #+12]
\ 00000058 010050E1 CMP R0,R1
\ 0000005C 8A00001A BNE ??LoadApp_1
527 {
528
529 for(PageNum=1; PageNum<AT45_PageNumber(&at45); PageNum++)
\ 00000060 0160A0E3 MOV R6,#+1
\ 00000064 080000EA B ??LoadApp_2
530 {
531 //将dataflash的数据写入sdram以便于数据的包装
532 memset(pBuffer, 0, AT45_PageSize(&at45));
533 AT45_Read(&at45, pBuffer, AT45_PageSize(&at45), PageNum * AT45_PageSize(&at45));
534 for (j=0; j < AT45_PageSize(&at45); j++)
535 {
536 *codeaddr = pBuffer[j];
\ ??LoadApp_3:
\ 00000068 ........ LDR R0,??DataTable61 ;; pBuffer
\ 0000006C 0000D7E7 LDRB R0,[R7, +R0]
\ 00000070 0100C5E4 STRB R0,[R5], #+1
537 codeaddr++;
538 }
\ 00000074 017087E2 ADD R7,R7,#+1
\ ??LoadApp_4:
\ 00000078 ........ LDR R0,??DataTable73 ;; at45
\ 0000007C ........ BL AT45_PageSize
\ 00000080 000057E1 CMP R7,R0
\ 00000084 F7FFFF3A BCC ??LoadApp_3
\ 00000088 016086E2 ADD R6,R6,#+1
\ ??LoadApp_2:
\ 0000008C ........ LDR R0,??DataTable72 ;; at45 + 28
\ 00000090 000090E5 LDR R0,[R0, #+0]
\ 00000094 000090E5 LDR R0,[R0, #+0]
\ 00000098 000056E1 CMP R6,R0
\ 0000009C 1100002A BCS ??LoadApp_5
\ 000000A0 ........ LDR R0,??DataTable73 ;; at45
\ 000000A4 ........ BL AT45_PageSize
\ 000000A8 0020A0E1 MOV R2,R0
\ 000000AC 0010A0E3 MOV R1,#+0
\ 000000B0 ........ LDR R0,??DataTable61 ;; pBuffer
\ 000000B4 ........ BL memset
\ 000000B8 ........ LDR R0,??DataTable73 ;; at45
\ 000000BC ........ BL AT45_PageSize
\ 000000C0 0070A0E1 MOV R7,R0
\ 000000C4 ........ LDR R0,??DataTable73 ;; at45
\ 000000C8 ........ BL AT45_PageSize
\ 000000CC 970603E0 MUL R3,R7,R6
\ 000000D0 0020A0E1 MOV R2,R0
\ 000000D4 ........ LDR R1,??DataTable61 ;; pBuffer
\ 000000D8 ........ LDR R0,??DataTable73 ;; at45
\ 000000DC ........ BL AT45_Read
\ 000000E0 0070A0E3 MOV R7,#+0
\ 000000E4 E3FFFFEA B ??LoadApp_4
539 }
540
541 //将数据进行包装,为下一步写入做准备
542 tmp = (unsigned char *)(SdCodeAddr + interface->DFAddr - 528);
\ ??LoadApp_5:
\ 000000E8 0F00E0E3 MVN R0,#+15
\ 000000EC 800FC0E3 BIC R0,R0,#0x200
\ 000000F0 ........ LDR R1,??DataTable76 ;; interface
\ 000000F4 001091E5 LDR R1,[R1, #+0]
\ 000000F8 041091E5 LDR R1,[R1, #+4]
\ 000000FC ........ LDR R2,??DataTable65 ;; SdCodeAddr
\ 00000100 002092E5 LDR R2,[R2, #+0]
\ 00000104 021081E0 ADD R1,R1,R2
\ 00000108 015080E0 ADD R5,R0,R1
543 TRACE_INFO("tmp address:%x\n\r",tmp);
\ 0000010C 0510A0E1 MOV R1,R5
\ 00000110 88019FE5 LDR R0,??LoadApp_0+0x8 ;; `?<Constant "-I- tmp address:%x\\n\\r">`
\ 00000114 ........ BL printf
544 TRACE_INFO("CSIZE:%x\n\r",interface->CSize);
\ 00000118 ........ LDR R0,??DataTable76 ;; interface
\ 0000011C 000090E5 LDR R0,[R0, #+0]
\ 00000120 081090E5 LDR R1,[R0, #+8]
\ 00000124 78019FE5 LDR R0,??LoadApp_0+0xC ;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?