📄 nand.txt
字号:
;;;145 id=NF_CheckId();
000508 ebfffffe BL NF_CheckId
00050c e1a05000 MOV r5,r0
;;;146 if(id ==0x76)
000510 e3550076 CMP r5,#0x76
000514 1a000003 BNE |L1.1320|
;;;147 Uart_Printf("ID=%x(0x76)\n",id);
000518 e1a01005 MOV r1,r5
00051c e28f00c4 ADR r0,|L1.1512|
000520 ebfffffe BL _printf
000524 ea000003 B |L1.1336|
;;;148 else {
;;;149 Uart_Printf("Selection fail : ID=%x\n",id);
|L1.1320|
000528 e1a01005 MOV r1,r5
00052c e24f0fb7 ADR r0,|L1.600|
000530 ebfffffe BL _printf
;;;150 return;
;;;151 }
;;;152
;;;153 while(1)
;;;154 { //display menu
;;;155 Uart_Printf("%2d:%s",i,func_k9s1208_test[i][1]);
;;;156 i++;
;;;157 if((int)(func_k9s1208_test[i][0])==0)
;;;158 {
;;;159 Uart_Printf("\n");
;;;160 break;
;;;161 }
;;;162 if((i%4)==0)
;;;163 Uart_Printf("\n");
;;;164 }
;;;165
;;;166 Uart_Printf("\nPress Enter key to exit : ");
;;;167 i = Uart_GetIntNum();
;;;168 if(i==-1) break; // return.
;;;169 if(i>=0 && (i<((sizeof(func_k9s1208_test)-1)/8)) ) // select and execute...
;;;170 ( (void (*)(void)) (func_k9s1208_test[i][0]) )();
;;;171 }
;;;172 }
|L1.1332|
000534 e8bd8038 LDMFD sp!,{r3-r5,pc}
|L1.1336|
000538 e1a00000 NOP ;153
|L1.1340|
00053c e1a00000 NOP ;153
000540 e59f00b0 LDR r0,|L1.1528| ;155
000544 e0800184 ADD r0,r0,r4,LSL #3 ;155
000548 e1a01004 MOV r1,r4 ;155
00054c e5902004 LDR r2,[r0,#4] ;155
000550 e24f0fb9 ADR r0,|L1.628| ;155
000554 ebfffffe BL _printf ;155
000558 e2844001 ADD r4,r4,#1 ;156
00055c e59f0094 LDR r0,|L1.1528| ;157
000560 e7900184 LDR r0,[r0,r4,LSL #3] ;157
000564 e3500000 CMP r0,#0 ;157
000568 1a000002 BNE |L1.1400| ;157
00056c e24f0fbe ADR r0,|L1.636| ;159
000570 ebfffffe BL _printf ;159
000574 ea000004 B |L1.1420| ;160
|L1.1400|
000578 e3140003 TST r4,#3 ;162
00057c 1a000001 BNE |L1.1416| ;162
000580 e24f0fc3 ADR r0,|L1.636| ;163
000584 ebfffffe BL _printf ;163
|L1.1416|
000588 eaffffeb B |L1.1340| ;164
|L1.1420|
00058c e24f0fc5 ADR r0,|L1.640| ;166
000590 ebfffffe BL _printf ;166
000594 ebfffffe BL Uart_GetIntNum ;167
000598 e1a04000 MOV r4,r0 ;167
00059c e3740001 CMN r4,#1 ;168
0005a0 1a000000 BNE |L1.1448| ;168
0005a4 ea000007 B |L1.1480| ;168
|L1.1448|
0005a8 e3540000 CMP r4,#0 ;169
0005ac ba000004 BLT |L1.1476| ;169
0005b0 e3540006 CMP r4,#6 ;169
0005b4 2a000002 BCS |L1.1476| ;169
0005b8 e59f1038 LDR r1,|L1.1528| ;170
0005bc e7910184 LDR r0,[r1,r4,LSL #3] ;170
0005c0 e12fff30 BLX r0 ;170
|L1.1476|
0005c4 eaffffcc B |L1.1276| ;171
|L1.1480|
0005c8 eaffffd9 B |L1.1332|
|L1.1484|
0005cc 3d3d3d3d DCB "===="
0005d0 4b203d3d DCB "== K"
0005d4 32315339 DCB "9S12"
0005d8 54203830 DCB "08 T"
0005dc 20747365 DCB "est "
0005e0 3d3d3d3d DCB "===="
0005e4 000a3d3d DCB "==\n\0"
|L1.1512|
0005e8 253d4449 DCB "ID=%"
0005ec 78302878 DCB "x(0x"
0005f0 0a293637 DCB "76)\n"
0005f4 00000000 DCB "\0\0\0\0"
|L1.1528|
0005f8 00000000 DCD func_k9s1208_test
ENDP
Ch4_NAND_FLASH_CONTROLLER PROC
;;;108 void Ch4_NAND_FLASH_CONTROLLER(void)
;;;109 {
0005fc e92d4010 STMFD sp!,{r4,lr}
;;;110 U8 ch;
;;;111
;;;112 Uart_Printf("[NAND Flash Controller Test start]\n\n");
000600 e28f0060 ADR r0,|L1.1640|
000604 ebfffffe BL _printf
;;;113 Uart_Printf("Select Nand flash device, K9S1208(1)/K9D1G08(2)/K9K2G16(3) : ");
000608 e28f0080 ADR r0,|L1.1680|
00060c ebfffffe BL _printf
;;;114 ch=Uart_Getch();
000610 ebfffffe BL Uart_Getch
000614 e1a04000 MOV r4,r0
;;;115
;;;116 Uart_Printf("%c\n\n", ch);
000618 e1a01004 MOV r1,r4
00061c e28f00ac ADR r0,|L1.1744|
000620 ebfffffe BL _printf
;;;117
;;;118 switch(ch) {
000624 e3540031 CMP r4,#0x31
000628 0a000004 BEQ |L1.1600|
00062c e3540032 CMP r4,#0x32
000630 0a000004 BEQ |L1.1608|
000634 e3540033 CMP r4,#0x33
000638 1a000006 BNE |L1.1624|
00063c ea000003 B |L1.1616|
;;;119 case '1':
;;;120 Test_K9S1208(); // in K9S1208.c
|L1.1600|
000640 ebfffffe BL Test_K9S1208
;;;121 break;
000644 ea000004 B |L1.1628|
;;;122 case '2':
;;;123 Test_K9D1G08(); // in K9D1G08.c
|L1.1608|
000648 ebfffffe BL Test_K9D1G08
;;;124 break;
00064c ea000002 B |L1.1628|
;;;125 case '3':
;;;126 Test_K9K2G16(); // in K9K2h16.c
|L1.1616|
000650 ebfffffe BL Test_K9K2G16
;;;127 break;
000654 ea000000 B |L1.1628|
;;;128 default:
;;;129 break;
|L1.1624|
000658 e1a00000 NOP
;;;130 }
;;;131 Uart_Printf("[NAND Flash Controller Test end]\n");
|L1.1628|
00065c e28f0074 ADR r0,|L1.1752|
000660 ebfffffe BL _printf
;;;132 }
000664 e8bd8010 LDMFD sp!,{r4,pc}
|L1.1640|
000668 4e414e5b DCB "[NAN"
00066c 6c462044 DCB "D Fl"
000670 20687361 DCB "ash "
000674 746e6f43 DCB "Cont"
000678 6c6c6f72 DCB "roll"
00067c 54207265 DCB "er T"
000680 20747365 DCB "est "
000684 72617473 DCB "star"
000688 0a0a5d74 DCB "t]\n\n"
00068c 00000000 DCB "\0\0\0\0"
|L1.1680|
000690 656c6553 DCB "Sele"
000694 4e207463 DCB "ct N"
000698 20646e61 DCB "and "
00069c 73616c66 DCB "flas"
0006a0 65642068 DCB "h de"
0006a4 65636976 DCB "vice"
0006a8 394b202c DCB ", K9"
0006ac 30323153 DCB "S120"
0006b0 29312838 DCB "8(1)"
0006b4 44394b2f DCB "/K9D"
0006b8 38304731 DCB "1G08"
0006bc 2f293228 DCB "(2)/"
0006c0 324b394b DCB "K9K2"
0006c4 28363147 DCB "G16("
0006c8 3a202933 DCB "3) :"
0006cc 00000020 DCB " \0\0\0"
|L1.1744|
0006d0 0a0a6325 DCB "%c\n\n"
0006d4 00000000 DCB "\0\0\0\0"
|L1.1752|
0006d8 4e414e5b DCB "[NAN"
0006dc 6c462044 DCB "D Fl"
0006e0 20687361 DCB "ash "
0006e4 746e6f43 DCB "Cont"
0006e8 6c6c6f72 DCB "roll"
0006ec 54207265 DCB "er T"
0006f0 20747365 DCB "est "
0006f4 5d646e65 DCB "end]"
0006f8 0000000a DCB "\n\0\0\0"
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 + -