📄 am29f800.txt
字号:
0005ac e51f008c LDR r0,|L1.1320|
0005b0 e5901000 LDR r1,[r0,#0] ; targetAddress
0005b4 e28f0f54 ADR r0,|L1.1804|
0005b8 ebfffffe BL Uart_Printf
;;;137 Uart_Printf("target block size=0x%x\n",targetSize);
0005bc e51f0098 LDR r0,|L1.1324|
0005c0 e5901000 LDR r1,[r0,#0] ; targetSize
0005c4 e28f0f56 ADR r0,|L1.1828|
0005c8 ebfffffe BL Uart_Printf
;;;138
;;;139 if(srcOffset<0x4000)nextSrcOffset=0x4000;
0005cc e51f00e8 LDR r0,|L1.1260|
0005d0 e5900000 LDR r0,[r0,#0] ; srcOffset
0005d4 e3500c40 CMP r0,#0x4000
0005d8 2a000003 BCS |L1.1516|
0005dc e3a00c40 MOV r0,#0x4000
0005e0 e51f111c LDR r1,|L1.1228|
0005e4 e5810000 STR r0,[r1,#0] ; nextSrcOffset@InputTargetAddr_1
0005e8 ea00001c B |L1.1632|
;;;140 else if(srcOffset<0x6000)nextSrcOffset=0x6000;
|L1.1516|
0005ec e51f0108 LDR r0,|L1.1260|
0005f0 e5900000 LDR r0,[r0,#0] ; srcOffset
0005f4 e3500c60 CMP r0,#0x6000
0005f8 2a000003 BCS |L1.1548|
0005fc e3a00c60 MOV r0,#0x6000
000600 e51f113c LDR r1,|L1.1228|
000604 e5810000 STR r0,[r1,#0] ; nextSrcOffset@InputTargetAddr_1
000608 ea000014 B |L1.1632|
;;;141 else if(srcOffset<0x8000)nextSrcOffset=0x8000;
|L1.1548|
00060c e51f0128 LDR r0,|L1.1260|
000610 e5900000 LDR r0,[r0,#0] ; srcOffset
000614 e3500c80 CMP r0,#0x8000
000618 2a000003 BCS |L1.1580|
00061c e3a00c80 MOV r0,#0x8000
000620 e51f115c LDR r1,|L1.1228|
000624 e5810000 STR r0,[r1,#0] ; nextSrcOffset@InputTargetAddr_1
000628 ea00000c B |L1.1632|
;;;142 else if(srcOffset<0x10000)nextSrcOffset=0x10000;
|L1.1580|
00062c e51f0148 LDR r0,|L1.1260|
000630 e5900000 LDR r0,[r0,#0] ; srcOffset
000634 e3500b40 CMP r0,#0x10000
000638 2a000003 BCS |L1.1612|
00063c e3a00b40 MOV r0,#0x10000
000640 e51f117c LDR r1,|L1.1228|
000644 e5810000 STR r0,[r1,#0] ; nextSrcOffset@InputTargetAddr_1
000648 ea000004 B |L1.1632|
;;;143 else nextSrcOffset=srcOffset+0x10000;
|L1.1612|
00064c e51f0168 LDR r0,|L1.1260|
000650 e5900000 LDR r0,[r0,#0] ; srcOffset
000654 e2800b40 ADD r0,r0,#0x10000
000658 e51f1194 LDR r1,|L1.1228|
00065c e5810000 STR r0,[r1,#0] ; nextSrcOffset@InputTargetAddr_1
;;;144
;;;145 if(targetAddress<0x4000)nextTargetAddr=0x4000;
|L1.1632|
000660 e51f0140 LDR r0,|L1.1320|
000664 e5900000 LDR r0,[r0,#0] ; targetAddress
000668 e3500c40 CMP r0,#0x4000
00066c 2a000003 BCS |L1.1664|
000670 e3a00c40 MOV r0,#0x4000
000674 e51f118c LDR r1,|L1.1264|
000678 e5810000 STR r0,[r1,#0] ; nextTargetAddr@InputTargetAddr_0
00067c ea00001c B |L1.1780|
;;;146 else if(targetAddress<0x6000)nextTargetAddr=0x6000;
|L1.1664|
000680 e51f0160 LDR r0,|L1.1320|
000684 e5900000 LDR r0,[r0,#0] ; targetAddress
000688 e3500c60 CMP r0,#0x6000
00068c 2a000003 BCS |L1.1696|
000690 e3a00c60 MOV r0,#0x6000
000694 e51f11ac LDR r1,|L1.1264|
000698 e5810000 STR r0,[r1,#0] ; nextTargetAddr@InputTargetAddr_0
00069c ea000014 B |L1.1780|
;;;147 else if(targetAddress<0x8000)nextTargetAddr=0x8000;
|L1.1696|
0006a0 e51f0180 LDR r0,|L1.1320|
0006a4 e5900000 LDR r0,[r0,#0] ; targetAddress
0006a8 e3500c80 CMP r0,#0x8000
0006ac 2a000003 BCS |L1.1728|
0006b0 e3a00c80 MOV r0,#0x8000
0006b4 e51f11cc LDR r1,|L1.1264|
0006b8 e5810000 STR r0,[r1,#0] ; nextTargetAddr@InputTargetAddr_0
0006bc ea00000c B |L1.1780|
;;;148 else if(targetAddress<0x10000)nextTargetAddr=0x10000;
|L1.1728|
0006c0 e51f01a0 LDR r0,|L1.1320|
0006c4 e5900000 LDR r0,[r0,#0] ; targetAddress
0006c8 e3500b40 CMP r0,#0x10000
0006cc 2a000003 BCS |L1.1760|
0006d0 e3a00b40 MOV r0,#0x10000
0006d4 e51f11ec LDR r1,|L1.1264|
0006d8 e5810000 STR r0,[r1,#0] ; nextTargetAddr@InputTargetAddr_0
0006dc ea000004 B |L1.1780|
;;;149 else nextTargetAddr=targetAddress+0x10000;
|L1.1760|
0006e0 e51f01c0 LDR r0,|L1.1320|
0006e4 e5900000 LDR r0,[r0,#0] ; targetAddress
0006e8 e2800b40 ADD r0,r0,#0x10000
0006ec e51f1204 LDR r1,|L1.1264|
0006f0 e5810000 STR r0,[r1,#0] ; nextTargetAddr@InputTargetAddr_0
;;;150
;;;151
;;;152 }
|L1.1780|
0006f4 e8bd8008 LDMFD sp!,{r3,pc}
|L1.1784|
0006f8 72756f73 DCB "sour"
0006fc 6f206563 DCB "ce o"
000700 65736666 DCB "ffse"
000704 78303d74 DCB "t=0x"
000708 000a7825 DCB "%x\n\0"
|L1.1804|
00070c 67726174 DCB "targ"
000710 61207465 DCB "et a"
000714 65726464 DCB "ddre"
000718 303d7373 DCB "ss=0"
00071c 0a782578 DCB "x%x\n"
000720 00000000 DCB "\0\0\0\0"
|L1.1828|
000724 67726174 DCB "targ"
000728 62207465 DCB "et b"
00072c 6b636f6c DCB "lock"
000730 7a697320 DCB " siz"
000734 78303d65 DCB "e=0x"
000738 000a7825 DCB "%x\n\0"
ENDP
ProgramAM29F800 PROC
;;;35 void ProgramAM29F800(void)
;;;36 {
00073c e92d4010 STMFD sp!,{r4,lr}
;;;37 int i;
;;;38
;;;39 InputTargetAddr();
000740 ebfffffe BL InputTargetAddr
;;;40
;;;41 if(downloadProgramSize==0)
000744 e51f02e4 LDR r0,|L1.1128|
000748 e5900000 LDR r0,[r0,#0] ; downloadProgramSize
00074c e3500000 CMP r0,#0
000750 1a000008 BNE |L1.1912|
;;;42 {
;;;43 Uart_Printf("The data must be downloaded using ICE from %x\n",downloadAddress);
000754 e59f00e0 LDR r0,|L1.2108|
000758 e5901000 LDR r1,[r0,#0] ; downloadAddress
00075c e28f00dc ADR r0,|L1.2112|
000760 ebfffffe BL Uart_Printf
;;;44 srcAddress=downloadAddress;
000764 e59f00d0 LDR r0,|L1.2108|
000768 e5900000 LDR r0,[r0,#0] ; downloadAddress
00076c e59f10fc LDR r1,|L1.2160|
000770 e5810000 STR r0,[r1,#0] ; srcAddress
000774 ea000004 B |L1.1932|
;;;45 }
;;;46 else
;;;47 srcAddress=downloadAddress+4; //to discard the data head for the size
|L1.1912|
000778 e59f00bc LDR r0,|L1.2108|
00077c e5900000 LDR r0,[r0,#0] ; downloadAddress
000780 e2800004 ADD r0,r0,#4
000784 e59f10e4 LDR r1,|L1.2160|
000788 e5810000 STR r0,[r1,#0] ; srcAddress
;;;48
;;;49
;;;50 Uart_Printf("[Check AM29LVxxx]\n");
|L1.1932|
00078c e28f00e0 ADR r0,|L1.2164|
000790 ebfffffe BL Uart_Printf
;;;51 switch(AM29F800_CheckId()) //04.01.12 junon
000794 ebfffffe BL AM29F800_CheckId
000798 e3500001 CMP r0,#1
00079c 0a000006 BEQ |L1.1980|
0007a0 e3500002 CMP r0,#2
0007a4 0a000007 BEQ |L1.1992|
0007a8 e3500003 CMP r0,#3
0007ac 0a000008 BEQ |L1.2004|
0007b0 e3500004 CMP r0,#4
0007b4 1a00000c BNE |L1.2028|
0007b8 ea000008 B |L1.2016|
;;;52 {
;;;53 case 1 :
;;;54 Uart_Printf("This device is AM29LV200B!\n");
|L1.1980|
0007bc e28f00c4 ADR r0,|L1.2184|
0007c0 ebfffffe BL Uart_Printf
;;;55 break;
0007c4 ea00000b B |L1.2040|
;;;56 case 2 :
;;;57 Uart_Printf("This device is AM29LV400B!\n");
|L1.1992|
0007c8 e28f00d4 ADR r0,|L1.2212|
0007cc ebfffffe BL Uart_Printf
;;;58 break;
0007d0 ea000008 B |L1.2040|
;;;59 case 3 :
;;;60 Uart_Printf("This device is AM29LV800B!\n");
|L1.2004|
0007d4 e28f00e4 ADR r0,|L1.2240|
0007d8 ebfffffe BL Uart_Printf
;;;61 break;
0007dc ea000005 B |L1.2040|
;;;62 case 4 :
;;;63 Uart_Printf("This device is AM29LV160B!\n");
|L1.2016|
0007e0 e28f00f4 ADR r0,|L1.2268|
0007e4 ebfffffe BL Uart_Printf
;;;64 break;
0007e8 ea000002 B |L1.2040|
;;;65 default:
;;;66 Uart_Printf("ID Check Error!!!\n");
|L1.2028|
0007ec e28f0f41 ADR r0,|L1.2296|
0007f0 ebfffffe BL Uart_Printf
;;;67 return;
;;;68 }
;;;69
;;;70 Uart_Printf("\nErase the sector:0x%x.\n",targetAddress);
;;;71
;;;72 AM29F800_EraseSector(targetAddress);
;;;73 if(!BlankCheck(targetAddress,targetSize))
;;;74 {
;;;75 Uart_Printf("Blank Check Error!!!\n");
;;;76 return;
;;;77 }
;;;78
;;;79 Uart_Printf("\nStart of the data writing.\n");
;;;80
;;;81 for(i=0x0;i<targetSize;i+=2)
;;;82 {
;;;83 AM29F800_ProgFlash( i+targetAddress,*( (U16 *)(srcAddress+srcOffset+i) ) );
;;;84 if((i%0x1000)==0)Uart_Printf("%x ",i);
;;;85 }
;;;86 Uart_Printf("\nEnd of the data writing!!!\n");
;;;87
;;;88 _RESET();
;;;89
;;;90 Uart_Printf("\nVerifying Start.\n");
;;;91 for(i=0x0;i<targetSize;i+=2)
;;;92 {
;;;93 if(*( (U16 *)(i+targetAddress) )!=*( (U16 *)(srcAddress+srcOffset+i) ) )
;;;94 {
;;;95 Uart_Printf("%x=verify error\n",i+targetAddress);
;;;96 return;
;;;97 }
;;;98 if((i%0x1000)==0)Uart_Printf("%x ",i);
;;;99 }
;;;100 Uart_Printf("\nVerifying End!!!\n");
;;;101
;;;102 Uart_Printf("Do you want another programming without additional download? [y/n]\n");
;;;103 if(Uart_Getch()=='y')ProgramAM29F800();
;;;104 }
|L1.2036|
0007f4 e8bd8010 LDMFD sp!,{r4,pc}
|L1.2040|
0007f8 e51f02d8 LDR r0,|L1.1320| ;70
0007fc e5901000 LDR r1,[r0,#0] ;70 ; targetAddress
000800 e28f0f41 ADR r0,|L1.2316| ;70
000804 ebfffffe BL Uart_Printf ;70
000808 e51f02e8 LDR r0,|L1.1320| ;72
00080c e5900000 LDR r0,[r0,#0] ;72 ; targetAddress
000810 ebfffffe BL AM29F800_EraseSector ;72
000814 e51f02f0 LDR r0,|L1.1324| ;73
000818 e5901000 LDR r1,[r0,#0] ;73 ; targetSize
00081c e51f02fc LDR r0,|L1.1320| ;73
000820 e5900000 LDR r0,[r0,#0] ;73 ; targetAddress
000824 ebfffffe BL BlankCheck ;73
000828 e3500000 CMP r0,#0 ;73
00082c 1a000043 BNE |L1.2368| ;73
000830 e28f00f0 ADR r0,|L1.2344| ;75
000834 ebfffffe BL Uart_Printf ;75
000838 eaffffed B |L1.2036| ;76
|L1.2108|
00083c 00000000 DCD downloadAddress ;76
|L1.2112|
000840 20656854 DCB "The " ;76
000844 61746164 DCB "data" ;76
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -