📄 nand.txt
字号:
0004c8 e24f0f97 ADR r0,|L1.628| ;155
0004cc ebfffffe BL _printf ;155
0004d0 e2844001 ADD r4,r4,#1 ;156
0004d4 e59f0094 LDR r0,|L1.1392| ;157
0004d8 e7900184 LDR r0,[r0,r4,LSL #3] ;157
0004dc e3500000 CMP r0,#0 ;157
0004e0 1a000002 BNE |L1.1264| ;157
0004e4 e24f0f9c ADR r0,|L1.636| ;159
0004e8 ebfffffe BL _printf ;159
0004ec ea000004 B |L1.1284| ;160
|L1.1264|
0004f0 e3140003 TST r4,#3 ;162
0004f4 1a000001 BNE |L1.1280| ;162
0004f8 e24f0fa1 ADR r0,|L1.636| ;163
0004fc ebfffffe BL _printf ;163
|L1.1280|
000500 eaffffeb B |L1.1204| ;164
|L1.1284|
000504 e24f0fa3 ADR r0,|L1.640| ;166
000508 ebfffffe BL _printf ;166
00050c ebfffffe BL Uart_GetIntNum ;167
000510 e1a04000 MOV r4,r0 ;167
000514 e3740001 CMN r4,#1 ;168
000518 1a000000 BNE |L1.1312| ;168
00051c ea000007 B |L1.1344| ;168
|L1.1312|
000520 e3540000 CMP r4,#0 ;169
000524 ba000004 BLT |L1.1340| ;169
000528 e3540006 CMP r4,#6 ;169
00052c 2a000002 BCS |L1.1340| ;169
000530 e59f1038 LDR r1,|L1.1392| ;170
000534 e7910184 LDR r0,[r1,r4,LSL #3] ;170
000538 e12fff30 BLX r0 ;170
|L1.1340|
00053c eaffffcc B |L1.1140| ;171
|L1.1344|
000540 eaffffd9 B |L1.1196|
|L1.1348|
000544 3d3d3d3d DCB "===="
000548 4b203d3d DCB "== K"
00054c 32315339 DCB "9S12"
000550 54203830 DCB "08 T"
000554 20747365 DCB "est "
000558 3d3d3d3d DCB "===="
00055c 000a3d3d DCB "==\n\0"
|L1.1376|
000560 253d4449 DCB "ID=%"
000564 78302878 DCB "x(0x"
000568 0a293637 DCB "76)\n"
00056c 00000000 DCB "\0\0\0\0"
|L1.1392|
000570 00000000 DCD func_k9s1208_test
ENDP
Ch4_NAND_FLASH_CONTROLLER PROC
;;;108 void Ch4_NAND_FLASH_CONTROLLER(void)
;;;109 {
000574 e92d4010 STMFD sp!,{r4,lr}
;;;110 U8 ch;
;;;111
;;;112 Uart_Printf("[NAND Flash Controller Test start]\n\n");
000578 e28f0060 ADR r0,|L1.1504|
00057c ebfffffe BL _printf
;;;113 Uart_Printf("Select Nand flash device, K9S1208(1)/K9D1G08(2)/K9K2G16(3) : ");
000580 e28f0080 ADR r0,|L1.1544|
000584 ebfffffe BL _printf
;;;114 ch=Uart_Getch();
000588 ebfffffe BL Uart_Getch
00058c e1a04000 MOV r4,r0
;;;115
;;;116 Uart_Printf("%c\n\n", ch);
000590 e1a01004 MOV r1,r4
000594 e28f00ac ADR r0,|L1.1608|
000598 ebfffffe BL _printf
;;;117
;;;118 switch(ch) {
00059c e3540031 CMP r4,#0x31
0005a0 0a000004 BEQ |L1.1464|
0005a4 e3540032 CMP r4,#0x32
0005a8 0a000004 BEQ |L1.1472|
0005ac e3540033 CMP r4,#0x33
0005b0 1a000006 BNE |L1.1488|
0005b4 ea000003 B |L1.1480|
;;;119 case '1':
;;;120 Test_K9S1208(); // in K9S1208.c
|L1.1464|
0005b8 ebfffffe BL Test_K9S1208
;;;121 break;
0005bc ea000004 B |L1.1492|
;;;122 case '2':
;;;123 Test_K9D1G08(); // in K9D1G08.c
|L1.1472|
0005c0 ebfffffe BL Test_K9D1G08
;;;124 break;
0005c4 ea000002 B |L1.1492|
;;;125 case '3':
;;;126 Test_K9K2G16(); // in K9K2h16.c
|L1.1480|
0005c8 ebfffffe BL Test_K9K2G16
;;;127 break;
0005cc ea000000 B |L1.1492|
;;;128 default:
;;;129 break;
|L1.1488|
0005d0 e1a00000 NOP
;;;130 }
;;;131 Uart_Printf("[NAND Flash Controller Test end]\n");
|L1.1492|
0005d4 e28f0074 ADR r0,|L1.1616|
0005d8 ebfffffe BL _printf
;;;132 }
0005dc e8bd8010 LDMFD sp!,{r4,pc}
|L1.1504|
0005e0 4e414e5b DCB "[NAN"
0005e4 6c462044 DCB "D Fl"
0005e8 20687361 DCB "ash "
0005ec 746e6f43 DCB "Cont"
0005f0 6c6c6f72 DCB "roll"
0005f4 54207265 DCB "er T"
0005f8 20747365 DCB "est "
0005fc 72617473 DCB "star"
000600 0a0a5d74 DCB "t]\n\n"
000604 00000000 DCB "\0\0\0\0"
|L1.1544|
000608 656c6553 DCB "Sele"
00060c 4e207463 DCB "ct N"
000610 20646e61 DCB "and "
000614 73616c66 DCB "flas"
000618 65642068 DCB "h de"
00061c 65636976 DCB "vice"
000620 394b202c DCB ", K9"
000624 30323153 DCB "S120"
000628 29312838 DCB "8(1)"
00062c 44394b2f DCB "/K9D"
000630 38304731 DCB "1G08"
000634 2f293228 DCB "(2)/"
000638 324b394b DCB "K9K2"
00063c 28363147 DCB "G16("
000640 3a202933 DCB "3) :"
000644 00000020 DCB " \0\0\0"
|L1.1608|
000648 0a0a6325 DCB "%c\n\n"
00064c 00000000 DCB "\0\0\0\0"
|L1.1616|
000650 4e414e5b DCB "[NAN"
000654 6c462044 DCB "D Fl"
000658 20687361 DCB "ash "
00065c 746e6f43 DCB "Cont"
000660 6c6c6f72 DCB "roll"
000664 54207265 DCB "er T"
000668 20747365 DCB "est "
00066c 5d646e65 DCB "end]"
000670 0000000a DCB "\n\0\0\0"
ENDP
NF_Reset PROC
;;;296 void NF_Reset(void)
;;;297 {
000674 e51f1460 LDR r1,|L1.540|
;;;298 int i;
;;;299 rNFCONT|=(3<<0); //software mode
000678 e5911004 LDR r1,[r1,#4]
00067c e3811003 ORR r1,r1,#3
000680 e51f246c LDR r2,|L1.540|
000684 e5821004 STR r1,[r2,#4]
;;;300 NF_nFCE_L();
000688 e1a01002 MOV r1,r2
00068c e5911004 LDR r1,[r1,#4]
000690 e3c11080 BIC r1,r1,#0x80
000694 e5821004 STR r1,[r2,#4]
;;;301 NF_CLRRnB();
000698 e1a01002 MOV r1,r2
00069c e591102c LDR r1,[r1,#0x2c]
0006a0 e3811d80 ORR r1,r1,#0x2000
0006a4 e582102c STR r1,[r2,#0x2c]
;;;302 NF_CMD(0xFF); //reset command
0006a8 e3a010ff MOV r1,#0xff
0006ac e1c22001 BIC r2,r2,r1
0006b0 e5821008 STR r1,[r2,#8]
;;;303
;;;304 for(i=0;i<10;i++); //tWB = 100ns. //??????
0006b4 e3a00000 MOV r0,#0
|L1.1720|
0006b8 e350000a CMP r0,#0xa
0006bc aa000001 BGE |L1.1736|
0006c0 e2800001 ADD r0,r0,#1
0006c4 eafffffb B |L1.1720|
;;;305 NF_TRANSRnB(); //wait 200~500us;
|L1.1736|
0006c8 e1a00000 NOP
|L1.1740|
0006cc e51f14b8 LDR r1,|L1.540|
0006d0 e591102c LDR r1,[r1,#0x2c]
0006d4 e3110d80 TST r1,#0x2000
0006d8 0afffffb BEQ |L1.1740|
;;;306 NF_nFCE_H();
0006dc e51f14c8 LDR r1,|L1.540|
0006e0 e5911004 LDR r1,[r1,#4]
0006e4 e3811080 ORR r1,r1,#0x80
0006e8 e51f24d4 LDR r2,|L1.540|
0006ec e5821004 STR r1,[r2,#4]
;;;307 }
0006f0 e12fff1e BX lr
ENDP
AREA ||.data||, DATA, ALIGN=2
||.data$0||
func_k9s1208_test
DCD K9S1208_PrintBadBlockNum
DCD ||.constdata$1||
DCD K9S1208_PrintBlock
DCD ||.constdata$1||+0x12
DCD K9S1208_Erase
DCD ||.constdata$1||+0x24
DCD K9S1208_Program
DCD ||.constdata$1||+0x36
DCD K9S1208_AutoLoad
DCD ||.constdata$1||+0x48
DCD K9S1208_AutoStore
DCD ||.constdata$1||+0x5a
DCD 0x00000000
DCD 0x00000000
func_k9d1g08_test
DCD K9D1G08_PrintBadBlockNum
DCD ||.constdata$1||
DCD K9D1G08_PrintBlock
DCD ||.constdata$1||+0x12
DCD K9D1G08_Erase
DCD ||.constdata$1||+0x24
DCD K9D1G08_Program
DCD ||.constdata$1||+0x36
DCD K9D1G08_AutoLoad
DCD ||.constdata$1||+0x48
DCD K9D1G08_AutoStore
DCD ||.constdata$1||+0x5a
DCD 0x00000000
DCD 0x00000000
func_k9k2g16_test
DCD K9k2g16_PrintBadBlockNum
DCD ||.constdata$1||
DCD K9k2g16_PrintBlock
DCD ||.constdata$1||+0x12
DCD K9k2g16_Erase
DCD ||.constdata$1||+0x24
DCD K9k2g16_Program
DCD ||.constdata$1||+0x36
DCD K9k2g16_AutoLoad
DCD ||.constdata$1||+0x48
DCD K9k2g16_AutoStore
DCD ||.constdata$1||+0x5a
DCD 0x00000000
DCD 0x00000000
AREA ||.constdata||, DATA, READONLY, ALIGN=0
||.constdata$1||
DCB 0x56,0x69,0x65,0x77
DCB 0x20,0x42,0x61,0x64
DCB 0x20,0x42,0x6c,0x6f
DCB 0x63,0x6b,0x20,0x20
DCB 0x20,0x00
DCB 0x50,0x61,0x67,0x65
DCB 0x20,0x52,0x65,0x61
DCB 0x64,0x20,0x20,0x20
DCB 0x20,0x20,0x20,0x20
DCB 0x20,0x00
DCB 0x42,0x6c,0x6f,0x63
DCB 0x6b,0x20,0x45,0x72
DCB 0x61,0x73,0x65,0x20
DCB 0x20,0x20,0x20,0x20
DCB 0x20,0x00
DCB 0x57,0x72,0x69,0x74
DCB 0x65,0x20,0x20,0x20
DCB 0x20,0x20,0x20,0x20
DCB 0x20,0x20,0x20,0x20
DCB 0x20,0x00
DCB 0x41,0x75,0x74,0x6f
DCB 0x4c,0x6f,0x61,0x64
DCB 0x20,0x20,0x20,0x20
DCB 0x20,0x20,0x20,0x20
DCB 0x20,0x00
DCB 0x41,0x75,0x74,0x6f
DCB 0x53,0x74,0x6f,0x72
DCB 0x65,0x20,0x20,0x20
DCB 0x20,0x20,0x20,0x20
DCB 0x20,0x00
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -