📄 am29f800.txt
字号:
;;;150 }
|L1.1668|
000684 e8bd8008 LDMFD sp!,{r3,pc}
|L1.1672|
000688 72756f73 DCB "sour"
00068c 6f206563 DCB "ce o"
000690 65736666 DCB "ffse"
000694 78303d74 DCB "t=0x"
000698 000a7825 DCB "%x\n\0"
|L1.1692|
00069c 67726174 DCB "targ"
0006a0 61207465 DCB "et a"
0006a4 65726464 DCB "ddre"
0006a8 303d7373 DCB "ss=0"
0006ac 0a782578 DCB "x%x\n"
0006b0 00000000 DCB "\0\0\0\0"
|L1.1716|
0006b4 67726174 DCB "targ"
0006b8 62207465 DCB "et b"
0006bc 6b636f6c DCB "lock"
0006c0 7a697320 DCB " siz"
0006c4 78303d65 DCB "e=0x"
0006c8 000a7825 DCB "%x\n\0"
ENDP
ProgramAM29F800 PROC
;;;44 int ProgramAM29F800(void)
;;;45 {
0006cc e92d4010 STMFD sp!,{r4,lr}
;;;46 int i;
;;;47
;;;48 InputTargetAddr();
0006d0 ebfffffe BL InputTargetAddr
;;;49
;;;50 if(downloadProgramSize==0)
0006d4 e51f02e4 LDR r0,|L1.1016|
0006d8 e5900000 LDR r0,[r0,#0] ; downloadProgramSize
0006dc e3500000 CMP r0,#0
0006e0 1a000008 BNE |L1.1800|
;;;51 {
;;;52 Uart_Printf("The data must be downloaded using ICE from %x\n",downloadAddress);
0006e4 e59f0194 LDR r0,|L1.2176|
0006e8 e5901000 LDR r1,[r0,#0] ; downloadAddress
0006ec e28f0f64 ADR r0,|L1.2180|
0006f0 ebfffffe BL _printf
;;;53 srcAddress=downloadAddress;
0006f4 e59f0184 LDR r0,|L1.2176|
0006f8 e5900000 LDR r0,[r0,#0] ; downloadAddress
0006fc e59f11b0 LDR r1,|L1.2228|
000700 e5810000 STR r0,[r1,#0] ; srcAddress
000704 ea000004 B |L1.1820|
;;;54 }
;;;55 else
;;;56 srcAddress=downloadAddress+4; //to discard the data head for the size
|L1.1800|
000708 e59f0170 LDR r0,|L1.2176|
00070c e5900000 LDR r0,[r0,#0] ; downloadAddress
000710 e2800004 ADD r0,r0,#4
000714 e59f1198 LDR r1,|L1.2228|
000718 e5810000 STR r0,[r1,#0] ; srcAddress
;;;57
;;;58 Uart_Printf("[Check AM29LV800]\n");
|L1.1820|
00071c e28f0f65 ADR r0,|L1.2232|
000720 ebfffffe BL _printf
;;;59 if(!AM29F800_CheckId())
000724 ebfffffe BL AM29F800_CheckId
000728 e3500000 CMP r0,#0
00072c 1a000003 BNE |L1.1856|
;;;60 {
;;;61 Uart_Printf("ID Check Error!!!\n");
000730 e28f0f65 ADR r0,|L1.2252|
000734 ebfffffe BL _printf
;;;62 return 0;
000738 e3a00000 MOV r0,#0
;;;63 }
;;;64
;;;65
;;;66 Uart_Printf("\nErase the sector:0x%x.\n",targetAddress);
;;;67
;;;68 AM29F800_EraseSector(targetAddress);
;;;69 if(!BlankCheck(targetAddress,targetSize))
;;;70 {
;;;71 Uart_Printf("Blank Check Error!!!\n");
;;;72 return 0;
;;;73 }
;;;74
;;;75 Uart_Printf("\nStart of the data writing.\n");
;;;76
;;;77 for(i=0x0;i<targetSize;i+=2)
;;;78 {
;;;79 AM29F800_ProgFlash( i+targetAddress,*( (U16 *)(srcAddress+srcOffset+i) ) );
;;;80 if((i%0x1000)==0)Uart_Printf("%x ",targetAddress+i);
;;;81 }
;;;82 Uart_Printf("\nEnd of the data writing!!!\n");
;;;83
;;;84 _RESET();
;;;85
;;;86 Uart_Printf("\nVerifying Start.\n");
;;;87 for(i=0x0;i<targetSize;i+=2)
;;;88 {
;;;89 if(*( (U16 *)(i+targetAddress) )!=*( (U16 *)(srcAddress+srcOffset+i) ) )
;;;90 {
;;;91 Uart_Printf("%x=verify error\n",i+targetAddress);
;;;92 return 0;
;;;93 }
;;;94 if((i%0x1000)==0)Uart_Printf("%x ",i+targetAddress);
;;;95 }
;;;96 Uart_Printf("\nVerifying End!!!\n");
;;;97
;;;98 Uart_Printf("Do you want another programming without additional download? [y/n]\n");
;;;99 if(Uart_Getch()=='y')ProgramAM29F800();
;;;100
;;;101 return 1;
;;;102 }
|L1.1852|
00073c e8bd8010 LDMFD sp!,{r4,pc}
|L1.1856|
000740 e51f0290 LDR r0,|L1.1208| ;66
000744 e5901000 LDR r1,[r0,#0] ;66 ; targetAddress
000748 e28f0f64 ADR r0,|L1.2272| ;66
00074c ebfffffe BL _printf ;66
000750 e51f02a0 LDR r0,|L1.1208| ;68
000754 e5900000 LDR r0,[r0,#0] ;68 ; targetAddress
000758 ebfffffe BL AM29F800_EraseSector ;68
00075c e51f02a8 LDR r0,|L1.1212| ;69
000760 e5901000 LDR r1,[r0,#0] ;69 ; targetSize
000764 e51f02b4 LDR r0,|L1.1208| ;69
000768 e5900000 LDR r0,[r0,#0] ;69 ; targetAddress
00076c ebfffffe BL BlankCheck ;69
000770 e3500000 CMP r0,#0 ;69
000774 1a000003 BNE |L1.1928| ;69
000778 e28f0f5f ADR r0,|L1.2300| ;71
00077c ebfffffe BL _printf ;71
000780 e3a00000 MOV r0,#0 ;72
000784 eaffffec B |L1.1852| ;72
|L1.1928|
000788 e28f0f61 ADR r0,|L1.2324| ;75
00078c ebfffffe BL _printf ;75
000790 e3a04000 MOV r4,#0 ;77
|L1.1940|
000794 e51f02e0 LDR r0,|L1.1212| ;77
000798 e5900000 LDR r0,[r0,#0] ;77 ; targetSize
00079c e1540000 CMP r4,r0 ;77
0007a0 2a000015 BCS |L1.2044| ;77
0007a4 ea000001 B |L1.1968| ;77
|L1.1960|
0007a8 e2844002 ADD r4,r4,#2 ;77
0007ac eafffff8 B |L1.1940| ;77
|L1.1968|
0007b0 e59f20fc LDR r2,|L1.2228| ;79
0007b4 e5922000 LDR r2,[r2,#0] ;79 ; srcAddress
0007b8 e51f3344 LDR r3,|L1.1148| ;79
0007bc e5933000 LDR r3,[r3,#0] ;79 ; srcOffset
0007c0 e0822003 ADD r2,r2,r3 ;79
0007c4 e19210b4 LDRH r1,[r2,r4] ;79
0007c8 e51f2318 LDR r2,|L1.1208| ;79
0007cc e5922000 LDR r2,[r2,#0] ;79 ; targetAddress
0007d0 e0840002 ADD r0,r4,r2 ;79
0007d4 ebfffffe BL AM29F800_ProgFlash ;79
0007d8 e1a00a04 MOV r0,r4,LSL #20 ;80
0007dc e1b00a20 MOVS r0,r0,LSR #20 ;80
0007e0 1a000004 BNE |L1.2040| ;80
0007e4 e51f0334 LDR r0,|L1.1208| ;80
0007e8 e5900000 LDR r0,[r0,#0] ;80 ; targetAddress
0007ec e0801004 ADD r1,r0,r4 ;80
0007f0 e28f0f4f ADR r0,|L1.2356| ;80
0007f4 ebfffffe BL _printf ;80
|L1.2040|
0007f8 eaffffea B |L1.1960| ;81
|L1.2044|
0007fc e28f0f4d ADR r0,|L1.2360| ;82
000800 ebfffffe BL _printf ;82
000804 e51f0644 LDR r0,|L1.456| ;84
000808 e3a01000 MOV r1,#0 ;84
00080c e1c100b0 STRH r0,[r1,#0] ;84
000810 e28f0f50 ADR r0,|L1.2392| ;86
000814 ebfffffe BL _printf ;86
000818 e3a04000 MOV r4,#0 ;87
|L1.2076|
00081c e51f0368 LDR r0,|L1.1212| ;87
000820 e5900000 LDR r0,[r0,#0] ;87 ; targetSize
000824 e1540000 CMP r4,r0 ;87
000828 2a00005d BCS |L1.2468| ;87
00082c ea000001 B |L1.2104| ;87
|L1.2096|
000830 e2844002 ADD r4,r4,#2 ;87
000834 eafffff8 B |L1.2076| ;87
|L1.2104|
000838 e51f0388 LDR r0,|L1.1208| ;89
00083c e5900000 LDR r0,[r0,#0] ;89 ; targetAddress
000840 e19400b0 LDRH r0,[r4,r0] ;89
000844 e59f1068 LDR r1,|L1.2228| ;89
000848 e5911000 LDR r1,[r1,#0] ;89 ; srcAddress
00084c e51f23d8 LDR r2,|L1.1148| ;89
000850 e5922000 LDR r2,[r2,#0] ;89 ; srcOffset
000854 e0811002 ADD r1,r1,r2 ;89
000858 e19110b4 LDRH r1,[r1,r4] ;89
00085c e1500001 CMP r0,r1 ;89
000860 0a000046 BEQ |L1.2432| ;89
000864 e51f03b4 LDR r0,|L1.1208| ;91
000868 e5900000 LDR r0,[r0,#0] ;91 ; targetAddress
00086c e0841000 ADD r1,r4,r0 ;91
000870 e28f00f4 ADR r0,|L1.2412| ;91
000874 ebfffffe BL _printf ;91
000878 e3a00000 MOV r0,#0 ;92
00087c eaffffae B |L1.1852| ;92
|L1.2176|
000880 00000000 DCD downloadAddress ;92
|L1.2180|
000884 20656854 DCB "The " ;92
000888 61746164 DCB "data" ;92
00088c 73756d20 DCB " mus" ;92
000890 65622074 DCB "t be" ;92
000894 776f6420 DCB " dow" ;92
000898 616f6c6e DCB "nloa" ;92
00089c 20646564 DCB "ded " ;92
0008a0 6e697375 DCB "usin" ;92
0008a4 43492067 DCB "g IC" ;92
0008a8 72662045 DCB "E fr" ;92
0008ac 25206d6f DCB "om %" ;92
0008b0 00000a78 DCB "x\n\0\0" ;92
|L1.2228|
0008b4 00000008 DCD ||.bss$2|| + 8 ;92
|L1.2232|
0008b8 6568435b DCB "[Che" ;92
0008bc 41206b63 DCB "ck A" ;92
0008c0 4c39324d DCB "M29L" ;92
0008c4 30303856 DCB "V800" ;92
0008c8 00000a5d DCB "]\n\0\0" ;92
|L1.2252|
0008cc 43204449 DCB "ID C" ;92
0008d0 6b636568 DCB "heck" ;92
0008d4 72724520 DCB " Err" ;92
0008d8 2121726f DCB "or!!" ;92
0008dc 00000a21 DCB "!\n\0\0" ;92
|L1.2272|
0008e0 6172450a DCB "\nEra" ;92
0008e4 74206573 DCB "se t" ;92
0008e8 73206568 DCB "he s" ;92
0008ec 6f746365 DCB "ecto" ;92
0008f0 78303a72 DCB "r:0x" ;92
0008f4 0a2e7825 DCB "%x.\n" ;92
0008f8 00000000 DCB "\0\0\0\0" ;92
|L1.2300|
0008fc 6e616c42 DCB "Blan" ;92
000900 6843206b DCB "k Ch" ;92
000904 206b6365 DCB "eck " ;92
000908 6f727245 DCB "Erro" ;92
00090c 21212172 DCB "r!!!" ;92
000910 0000000a DCB "\n\0\0\0" ;92
|L1.2324|
000914 6174530a DCB "\nSta" ;92
000918 6f207472 DCB "rt o" ;92
00091c 68742066 DCB "f th" ;92
000920 61642065 DCB "e da" ;92
000924 77206174 DCB "ta w" ;92
000928 69746972 DCB "riti" ;92
00092c 0a2e676e DCB "ng.\n" ;92
000930 00000000 DCB "\0\0\0\0" ;92
|L1.2356|
000934 00207825 DCB "%x \0" ;92
|L1.2360|
000938 646e450a DCB "\nEnd" ;92
00093c 20666f20 DCB " of " ;92
000940 20656874 DCB "the " ;92
000944 61746164 DCB "data" ;92
000948 69727720 DCB " wri" ;92
00094c 676e6974 DCB "ting" ;92
000950 0a212121 DCB "!!!\n" ;92
000954 00000000 DCB "\0\0\0\0" ;92
|L1.2392|
000958 7265560a DCB "\nVer" ;92
00095c 69796669 DCB "ifyi" ;92
000960 5320676e DCB "ng S" ;92
000964 74726174 DCB "tart" ;92
000968 00000a2e DCB ".\n\0\0" ;92
|L1.2412|
00096c 763d7825 DCB "%x=v" ;92
000970 66697265 DCB "erif" ;92
000974 72652079 DCB "y er" ;92
000978 0a726f72 DCB "ror\n" ;92
00097c 00000000 DCB "\0\0\0\0" ;92
|L1.2432|
000980 e1a00a04 MOV r0,r4,LSL #20 ;94
000984 e1b00a20 MOVS r0,r0,LSR #20 ;94
000988 1a000004 BNE |L1.2464| ;94
00098c e51f04dc LDR r0,|L1.1208| ;94
000990 e5900000 LDR r0,[r0,#0] ;94 ; targetAddress
000994 e0841000 ADD r1,r4,r0 ;94
000998 e24f006c ADR r0,|L1.2356| ;94
00099c ebfffffe BL _printf ;94
|L1.2464|
0009a0 eaffffa2 B |L1.2096| ;95
|L1.2468|
0009a4 e28f0020 ADR r0,|L1.2508| ;96
0009a8 ebfffffe BL _printf ;96
0009ac e59f002c LDR r0,|L1.2528| ;98
0009b0 ebfffffe BL _printf ;98
0009b4 ebfffffe BL Uart_Getch ;99
0009b8 e3500079 CMP r0,#0x79 ;99
0009bc 1a000000 BNE |L1.2500| ;99
0009c0 ebfffffe BL ProgramAM29F800 ;99
|L1.2500|
0009c4 e3a00001 MOV r0,#1 ;101
0009c8 eaffff5b B |L1.1852| ;101
|L1.2508|
0009cc 7265560a DCB "\nVer" ;101
0009d0 69796669 DCB "ifyi" ;101
0009d4 4520676e DCB "ng E" ;101
0009d8 2121646e DCB "nd!!" ;101
0009dc 00000a21 DCB "!\n\0\0" ;101
|L1.2528|
0009e0 00000088 DCD ||.constdata$1|| + 136 ;101
ENDP
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -