📄 strata32.txt
字号:
000450 e3a0144a MOV r1,#0x4a000000
000454 e5810008 STR r0,[r1,#8]
;;;236 targetAddress=TARGET_ADDR_28F128;
000458 e3a00680 MOV r0,#0x8000000
00045c e51f12dc LDR r1,|L1.392|
000460 e5810000 STR r0,[r1,#0] ; targetAddress
;;;237 targetSize=downloadProgramSize;
000464 e51f0104 LDR r0,|L1.872|
000468 e5900000 LDR r0,[r0,#0] ; downloadProgramSize
00046c e51f106c LDR r1,|L1.1032|
000470 e5810000 STR r0,[r1,#0] ; targetSize
;;;238 //downloadAddress=0x31000000;
;;;239
;;;240 if(targetSize==0)
000474 e51f0074 LDR r0,|L1.1032|
000478 e5900000 LDR r0,[r0,#0] ; targetSize
00047c e3500000 CMP r0,#0
000480 1a000006 BNE |L1.1184|
;;;241 {
;;;242 Uart_Printf("\nThe data must be downloaded using ICE or USB from 0x31000000\n");
000484 e28f0f41 ADR r0,|L1.1424|
000488 ebfffffe BL Uart_Printf
;;;243 srcAddress=downloadAddress;
00048c e59f013c LDR r0,|L1.1488|
000490 e5900000 LDR r0,[r0,#0] ; downloadAddress
000494 e59f1138 LDR r1,|L1.1492|
000498 e5810000 STR r0,[r1,#0] ; srcAddress
00049c ea000004 B |L1.1204|
;;;244 }
;;;245 else
;;;246 {
;;;247 srcAddress=downloadAddress+4; //to discard the data head for the size
|L1.1184|
0004a0 e59f0128 LDR r0,|L1.1488|
0004a4 e5900000 LDR r0,[r0,#0] ; downloadAddress
0004a8 e2800004 ADD r0,r0,#4
0004ac e59f1120 LDR r1,|L1.1492|
0004b0 e5810000 STR r0,[r1,#0] ; srcAddress
;;;248 }
;;;249
;;;250 InputAddresses(); //srcAddress,targetSize,targetOffset will be determined.
|L1.1204|
0004b4 ebfffffe BL InputAddresses
;;;251 Uart_Printf("Source base address(0x31000000) = 0x%x\n",srcAddress);
0004b8 e59f0114 LDR r0,|L1.1492|
0004bc e5901000 LDR r1,[r0,#0] ; srcAddress
0004c0 e28f0f44 ADR r0,|L1.1496|
0004c4 ebfffffe BL Uart_Printf
;;;252 Uart_Printf("Target base address(0x08000000) = 0x%x\n",targetAddress);
0004c8 e51f0348 LDR r0,|L1.392|
0004cc e5901000 LDR r1,[r0,#0] ; targetAddress
0004d0 e28f0f4a ADR r0,|L1.1536|
0004d4 ebfffffe BL Uart_Printf
;;;253 Uart_Printf("Target offset (0x0) = 0x%x\n",targetOffset);
0004d8 e51f00dc LDR r0,|L1.1028|
0004dc e5901000 LDR r1,[r0,#0] ; targetOffset
0004e0 e28f0f50 ADR r0,|L1.1576|
0004e4 ebfffffe BL Uart_Printf
;;;254 Uart_Printf("Target size (0x20000*n) = 0x%x\n",targetSize);
0004e8 e51f00e8 LDR r0,|L1.1032|
0004ec e5901000 LDR r1,[r0,#0] ; targetSize
0004f0 e28f0f56 ADR r0,|L1.1616|
0004f4 ebfffffe BL Uart_Printf
;;;255
;;;256 if ( (Strata_CheckID(targetAddress) & 0xffff) != 0x0089 ) // ID number = 0x0089
0004f8 e51f0378 LDR r0,|L1.392|
0004fc e5900000 LDR r0,[r0,#0] ; targetAddress
000500 ebfffffe BL Strata_CheckID
000504 e1a00800 MOV r0,r0,LSL #16
000508 e1a00820 MOV r0,r0,LSR #16
00050c e3500089 CMP r0,#0x89
000510 0a000064 BEQ |L1.1704|
;;;257 {
;;;258 Uart_Printf("Read ID : 0x%x\n", Strata_CheckID(targetAddress));
000514 e51f0394 LDR r0,|L1.392|
000518 e5900000 LDR r0,[r0,#0] ; targetAddress
00051c ebfffffe BL Strata_CheckID
000520 e1a05000 MOV r5,r0
000524 e1a01000 MOV r1,r0
000528 e28f0f52 ADR r0,|L1.1656|
00052c ebfffffe BL Uart_Printf
;;;259 Uart_Printf("Identification check error !!\n");
000530 e28f0f54 ADR r0,|L1.1672|
000534 ebfffffe BL Uart_Printf
;;;260 return ;
;;;261 }
;;;262
;;;263 if ( (Strata_CheckDevice(targetAddress) & 0xffff) != 0x0018 ) // Device number=0x0018
;;;264 {
;;;265 Uart_Printf("Device check error !!\n");
;;;266 return ;
;;;267 }
;;;268
;;;269 Uart_Printf("\nErase the sector : 0x%x.\n", targetAddress);
;;;270
;;;271 for(i=0;i<targetSize;i+=0x20000)
;;;272 {
;;;273 Strata_EraseSector(targetAddress+targetOffset+i);
;;;274 }
;;;275
;;;276 if(!Strata_BlankCheck(targetAddress+targetOffset,targetSize))
;;;277 {
;;;278 Uart_Printf("Blank Check Error!!!\n");
;;;279 return;
;;;280 }
;;;281
;;;282 Uart_Printf("\nStart of the data writing...\n");
;;;283
;;;284 for (i=0; i<targetSize; i+=4)
;;;285 {
;;;286 Strata_ProgFlash(i+targetAddress+targetOffset, *((U32 *)(srcAddress+i)));
;;;287 if(i%0x10000==0xfffc)
;;;288 Uart_Printf("[%x]",(i+4)/0x10000);
;;;289 }
;;;290 Uart_Printf("\nEnd of the data writing \n");
;;;291
;;;292 _RESET();
;;;293
;;;294 Uart_Printf("Verifying Start...\n");
;;;295 for (i=0; i<targetSize; i+=4)
;;;296 {
;;;297 if (*((U32 *)(i+targetAddress+targetOffset)) !=*((U32 *)(srcAddress+i)))
;;;298 {
;;;299 Uart_Printf("verify error src %08x = %08x\n", srcAddress+i, *((U32 *)(srcAddress+i)));
;;;300 Uart_Printf("verify error des %08x = %08x\n", i+targetAddress+targetOffset, *((U32 *)(i+targetAddress)));
;;;301 return;
;;;302 }
;;;303 }
;;;304 Uart_Printf("Verifying End!!!");
;;;305 }
|L1.1336|
000538 e8bd8038 LDMFD sp!,{r3-r5,pc}
|L1.1340|
00053c 32205b0a DCB "\n[ 2"
000540 32314638 DCB "8F12"
000544 41334a38 DCB "8J3A"
000548 616c4620 DCB " Fla"
00054c 57206873 DCB "sh W"
000550 69746972 DCB "riti"
000554 5020676e DCB "ng P"
000558 72676f72 DCB "rogr"
00055c 5d206d61 DCB "am ]"
000560 00000a0a DCB "\n\n\0\0"
|L1.1380|
000564 20202020 DCB " "
000568 2a2a2a20 DCB " ***"
00056c 72655620 DCB " Ver"
000570 6d492079 DCB "y Im"
000574 74726f70 DCB "port"
000578 20746e61 DCB "ant "
00057c 65746f4e DCB "Note"
000580 2a2a2073 DCB "s **"
000584 00000a2a DCB "*\n\0\0"
|L1.1416|
000588 00000000 DCD ||.constdata$1||
|L1.1420|
00058c 00000050 DCD ||.constdata$1|| + 80
|L1.1424|
000590 6568540a DCB "\nThe"
000594 74616420 DCB " dat"
000598 756d2061 DCB "a mu"
00059c 62207473 DCB "st b"
0005a0 6f642065 DCB "e do"
0005a4 6f6c6e77 DCB "wnlo"
0005a8 64656461 DCB "aded"
0005ac 69737520 DCB " usi"
0005b0 4920676e DCB "ng I"
0005b4 6f204543 DCB "CE o"
0005b8 53552072 DCB "r US"
0005bc 72662042 DCB "B fr"
0005c0 30206d6f DCB "om 0"
0005c4 30313378 DCB "x310"
0005c8 30303030 DCB "0000"
0005cc 00000a30 DCB "0\n\0\0"
|L1.1488|
0005d0 00000000 DCD downloadAddress
|L1.1492|
0005d4 00000008 DCD ||.bss$2|| + 8
|L1.1496|
0005d8 72756f53 DCB "Sour"
0005dc 62206563 DCB "ce b"
0005e0 20657361 DCB "ase "
0005e4 72646461 DCB "addr"
0005e8 28737365 DCB "ess("
0005ec 31337830 DCB "0x31"
0005f0 30303030 DCB "0000"
0005f4 20293030 DCB "00) "
0005f8 7830203d DCB "= 0x"
0005fc 000a7825 DCB "%x\n\0"
|L1.1536|
000600 67726154 DCB "Targ"
000604 62207465 DCB "et b"
000608 20657361 DCB "ase "
00060c 72646461 DCB "addr"
000610 28737365 DCB "ess("
000614 38307830 DCB "0x08"
000618 30303030 DCB "0000"
00061c 20293030 DCB "00) "
000620 7830203d DCB "= 0x"
000624 000a7825 DCB "%x\n\0"
|L1.1576|
000628 67726154 DCB "Targ"
00062c 6f207465 DCB "et o"
000630 65736666 DCB "ffse"
000634 20202074 DCB "t "
000638 28202020 DCB " ("
00063c 29307830 DCB "0x0)"
000640 20202020 DCB " "
000644 20202020 DCB " "
000648 7830203d DCB "= 0x"
00064c 000a7825 DCB "%x\n\0"
|L1.1616|
000650 67726154 DCB "Targ"
000654 73207465 DCB "et s"
000658 20657a69 DCB "ize "
00065c 20202020 DCB " "
000660 28202020 DCB " ("
000664 30327830 DCB "0x20"
000668 2a303030 DCB "000*"
00066c 2020296e DCB "n) "
000670 7830203d DCB "= 0x"
000674 000a7825 DCB "%x\n\0"
|L1.1656|
000678 64616552 DCB "Read"
00067c 20444920 DCB " ID "
000680 7830203a DCB ": 0x"
000684 000a7825 DCB "%x\n\0"
|L1.1672|
000688 6e656449 DCB "Iden"
00068c 69666974 DCB "tifi"
000690 69746163 DCB "cati"
000694 63206e6f DCB "on c"
000698 6b636568 DCB "heck"
00069c 72726520 DCB " err"
0006a0 2120726f DCB "or !"
0006a4 00000a21 DCB "!\n\0\0"
|L1.1704|
0006a8 e51f0528 LDR r0,|L1.392| ;263
0006ac e5900000 LDR r0,[r0,#0] ;263 ; targetAddress
0006b0 ebfffffe BL Strata_CheckDevice ;263
0006b4 e1a00800 MOV r0,r0,LSL #16 ;263
0006b8 e1a00820 MOV r0,r0,LSR #16 ;263
0006bc e3500018 CMP r0,#0x18 ;263
0006c0 0a000002 BEQ |L1.1744| ;263
0006c4 e28f0f76 ADR r0,|L1.2212| ;265
0006c8 ebfffffe BL Uart_Printf ;265
0006cc eaffff99 B |L1.1336| ;266
|L1.1744|
0006d0 e51f0550 LDR r0,|L1.392| ;269
0006d4 e5901000 LDR r1,[r0,#0] ;269 ; targetAddress
0006d8 e28f0f77 ADR r0,|L1.2236| ;269
0006dc ebfffffe BL Uart_Printf ;269
0006e0 e3a04000 MOV r4,#0 ;271
|L1.1764|
0006e4 e51f02e4 LDR r0,|L1.1032| ;271
0006e8 e5900000 LDR r0,[r0,#0] ;271 ; targetSize
0006ec e1540000 CMP r4,r0 ;271
0006f0 2a00000a BCS |L1.1824| ;271
0006f4 ea000001 B |L1.1792| ;271
|L1.1784|
0006f8 e2844b80 ADD r4,r4,#0x20000 ;271
0006fc eafffff8 B |L1.1764| ;271
|L1.1792|
000700 e51f1580 LDR r1,|L1.392| ;273
000704 e5911000 LDR r1,[r1,#0] ;273 ; targetAddress
000708 e51f230c LDR r2,|L1.1028| ;273
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -