📄 flash.txt
字号:
000288 3a204e44 DCB "DN :"
00028c 0a782520 DCB " %x\n"
000290 00000000 DCB "\0\0\0\0"
|L1.660|
000294 e28f0008 ADR r0,|L1.676| ;149
000298 ebfffffe BL Uart_Printf ;149
00029c e3a00001 MOV r0,#1 ;150
0002a0 eaffffb7 B |L1.388| ;150
|L1.676|
0002a4 776f440a DCB "\nDow" ;150
0002a8 616f6c6e DCB "nloa" ;150
0002ac 2e4f2064 DCB "d O." ;150
0002b0 000a2e4b DCB "K.\n\0" ;150
ENDP
ProgramFlash PROC
;;;46 void ProgramFlash(void)
;;;47 {
0002b4 e92d4070 STMFD sp!,{r4-r6,lr}
;;;48 int i=0,whichFlash;
0002b8 e3a04000 MOV r4,#0
;;;49 char key;
;;;50
;;;51 Uart_Printf("\n[ NOR Flash Memory Writer Ver 0.1 ]\n\n");
0002bc e28f00fc ADR r0,|L1.960|
0002c0 ebfffffe BL Uart_Printf
;;;52 Uart_Printf("The program buffer : 0x31000000 ~ 0x31ff0000\n");
0002c4 e28f0f47 ADR r0,|L1.1000|
0002c8 ebfffffe BL Uart_Printf
;;;53
;;;54 downloadAddress=0x31000000;
0002cc e3a005c4 MOV r0,#0x31000000
0002d0 e51f1150 LDR r1,|L1.392|
0002d4 e5810000 STR r0,[r1,#0] ; downloadAddress
;;;55 downloadProgramSize=0x0;
0002d8 e3a00000 MOV r0,#0
0002dc e51f107c LDR r1,|L1.616|
0002e0 e5810000 STR r0,[r1,#0] ; downloadProgramSize
;;;56
;;;57 //MMU_Init();
;;;58 ChangeRomCacheStatus(RW_NCNB);
0002e4 e59f012c LDR r0,|L1.1048|
0002e8 ebfffffe BL ChangeRomCacheStatus
;;;59
;;;60 while(1)
0002ec e1a00000 NOP
|L1.752|
0002f0 e1a00000 NOP
;;;61 { //display menu
;;;62 Uart_Printf("%c : %s",'a'+i,flashType[i][1]);
0002f4 e59f0120 LDR r0,|L1.1052|
0002f8 e0800184 ADD r0,r0,r4,LSL #3
0002fc e2841061 ADD r1,r4,#0x61
000300 e5902004 LDR r2,[r0,#4]
000304 e28f0f45 ADR r0,|L1.1056|
000308 ebfffffe BL Uart_Printf
;;;63 i++;
00030c e2844001 ADD r4,r4,#1
;;;64 if((int)(flashType[i][0])==0)
000310 e59f0104 LDR r0,|L1.1052|
000314 e7900184 LDR r0,[r0,r4,LSL #3]
000318 e3500000 CMP r0,#0
00031c 1a000002 BNE |L1.812|
;;;65 {
;;;66 Uart_Printf("\n");
000320 e28f00ec ADR r0,|L1.1044|
000324 ebfffffe BL Uart_Printf
;;;67 break;
000328 ea000004 B |L1.832|
;;;68 }
;;;69 if((i%4)==0)
|L1.812|
00032c e3140003 TST r4,#3
000330 1a000001 BNE |L1.828|
;;;70 Uart_Printf("\n");
000334 e28f00d8 ADR r0,|L1.1044|
000338 ebfffffe BL Uart_Printf
;;;71 }
|L1.828|
00033c eaffffeb B |L1.752|
;;;72
;;;73 Uart_Printf("Select the type of a flash memory ? ");
|L1.832|
000340 e28f00e0 ADR r0,|L1.1064|
000344 ebfffffe BL Uart_Printf
;;;74 whichFlash=Uart_Getch()-'a';
000348 ebfffffe BL Uart_Getch
00034c e2405061 SUB r5,r0,#0x61
;;;75 Uart_Printf("%c\n",(whichFlash+'a'));
000350 e2851061 ADD r1,r5,#0x61
000354 e28f00f4 ADR r0,|L1.1104|
000358 ebfffffe BL Uart_Printf
;;;76 //Uart_Printf("\n");
;;;77
;;;78 if( i<0 || (i>=(sizeof(flashType)/8)) )
00035c e3540000 CMP r4,#0
000360 ba000001 BLT |L1.876|
000364 e3540004 CMP r4,#4
000368 3a000000 BCC |L1.880|
;;;79 return;
;;;80
;;;81 Uart_Printf("Do you want to download through UART0 from 0x%x? [y/n] : ",downloadAddress);
;;;82 key=Uart_Getch();
;;;83 Uart_Printf("%c\n",key);
;;;84 if(key=='y')
;;;85 {
;;;86 if(!DownloadData())
;;;87 return;
;;;88 }
;;;89
;;;90 ( (void (*)(void))(flashType[whichFlash][0]) )();
;;;91 }
|L1.876|
00036c e8bd8070 LDMFD sp!,{r4-r6,pc}
|L1.880|
000370 e51f01f0 LDR r0,|L1.392| ;81
000374 e5901000 LDR r1,[r0,#0] ;81 ; downloadAddress
000378 e28f00d4 ADR r0,|L1.1108| ;81
00037c ebfffffe BL Uart_Printf ;81
000380 ebfffffe BL Uart_Getch ;82
000384 e1a06000 MOV r6,r0 ;82
000388 e1a01006 MOV r1,r6 ;83
00038c e28f00bc ADR r0,|L1.1104| ;83
000390 ebfffffe BL Uart_Printf ;83
000394 e3560079 CMP r6,#0x79 ;84
000398 1a000003 BNE |L1.940| ;84
00039c ebfffffe BL DownloadData ;86
0003a0 e3500000 CMP r0,#0 ;86
0003a4 1a000000 BNE |L1.940| ;86
0003a8 eaffffef B |L1.876| ;87
|L1.940|
0003ac e59f1068 LDR r1,|L1.1052| ;90
0003b0 e7910185 LDR r0,[r1,r5,LSL #3] ;90
0003b4 e1a0e00f MOV lr,pc ;90
0003b8 e1a0f000 MOV pc,r0 ;90
0003bc eaffffea B |L1.876|
|L1.960|
0003c0 4e205b0a DCB "\n[ N"
0003c4 4620524f DCB "OR F"
0003c8 6873616c DCB "lash"
0003cc 6d654d20 DCB " Mem"
0003d0 2079726f DCB "ory "
0003d4 74697257 DCB "Writ"
0003d8 56207265 DCB "er V"
0003dc 30207265 DCB "er 0"
0003e0 5d20312e DCB ".1 ]"
0003e4 00000a0a DCB "\n\n\0\0"
|L1.1000|
0003e8 20656854 DCB "The "
0003ec 676f7270 DCB "prog"
0003f0 206d6172 DCB "ram "
0003f4 66667562 DCB "buff"
0003f8 3a207265 DCB "er :"
0003fc 33783020 DCB " 0x3"
000400 30303031 DCB "1000"
000404 20303030 DCB "000 "
000408 7830207e DCB "~ 0x"
00040c 66663133 DCB "31ff"
000410 30303030 DCB "0000"
|L1.1044|
000414 0000000a DCB "\n\0\0\0"
|L1.1048|
000418 00000c12 DCD 0x00000c12
|L1.1052|
00041c 00000000 DCD flashType
|L1.1056|
000420 3a206325 DCB "%c :"
000424 00732520 DCB " %s\0"
|L1.1064|
000428 656c6553 DCB "Sele"
00042c 74207463 DCB "ct t"
000430 74206568 DCB "he t"
000434 20657079 DCB "ype "
000438 6120666f DCB "of a"
00043c 616c6620 DCB " fla"
000440 6d206873 DCB "sh m"
000444 726f6d65 DCB "emor"
000448 203f2079 DCB "y ? "
00044c 00000000 DCB "\0\0\0\0"
|L1.1104|
000450 000a6325 DCB "%c\n\0"
|L1.1108|
000454 79206f44 DCB "Do y"
000458 7720756f DCB "ou w"
00045c 20746e61 DCB "ant "
000460 64206f74 DCB "to d"
000464 6c6e776f DCB "ownl"
000468 2064616f DCB "oad "
00046c 6f726874 DCB "thro"
000470 20686775 DCB "ugh "
000474 54524155 DCB "UART"
000478 72662030 DCB "0 fr"
00047c 30206d6f DCB "om 0"
000480 3f782578 DCB "x%x?"
000484 2f795b20 DCB " [y/"
000488 3a205d6e DCB "n] :"
00048c 00000020 DCB " \0\0\0"
ENDP
AREA ||.data||, DATA, ALIGN=2
||.data$0||
flashType
DCD ProgramAM29F800
DCD ||.constdata$1||
DCD Program28F128J3A
DCD ||.constdata$1||+0x15
DCD Erase28F128J3A
DCD ||.constdata$1||+0x2a
DCD 0x00000000
DCD 0x00000000
AREA ||.constdata||, DATA, READONLY, ALIGN=0
||.constdata$1||
DCB 0x41,0x4d,0x32,0x39
DCB 0x4c,0x56,0x38,0x30
DCB 0x30,0x42,0x42,0x20
DCB 0x78,0x31,0x20,0x20
DCB 0x20,0x20,0x20,0x20
DCB 0x00
DCB 0x32,0x38,0x46,0x31
DCB 0x32,0x38,0x4a,0x33
DCB 0x41,0x28,0x31,0x36
DCB 0x4d,0x42,0x29,0x20
DCB 0x78,0x32,0x20,0x20
DCB 0x00
DCB 0x45,0x72,0x61,0x73
DCB 0x65,0x20,0x32,0x38
DCB 0x46,0x31,0x32,0x38
DCB 0x4a,0x33,0x41,0x09
DCB 0x00
AREA ||.bss||, NOINIT, ALIGN=2
downloadAddress
||.bss$2||
% 4
downloadProgramSize
% 4
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -