📄 k9d1g08.txt
字号:
000ba4 0000000a DCB "\n\0\0\0"
|L1.2984|
000ba8 20434345 DCB "ECC "
000bac 6f727245 DCB "Erro"
000bb0 6c622872 DCB "r(bl"
000bb4 3d6b636f DCB "ock="
000bb8 702c6425 DCB "%d,p"
000bbc 3d656761 DCB "age="
000bc0 21216425 DCB "%d!!"
000bc4 00000a21 DCB "!\n\0\0"
|L1.3016|
000bc8 0000002e DCB ".\0\0\0"
ENDP
K9D1G08_PrintBadBlockNum PROC
;;;153 void K9D1G08_PrintBadBlockNum(void)
;;;154 {
000bcc e92d4010 STMFD sp!,{r4,lr}
;;;155 int i;
;;;156
;;;157 Uart_Printf("\n[SMC(K9D1G08V0M) NAND Flash bad block check]\n");
000bd0 e28f0028 ADR r0,|L1.3072|
000bd4 ebfffffe BL _printf
;;;158
;;;159 for(i=0;i<8192;i++)
000bd8 e3a04000 MOV r4,#0
|L1.3036|
000bdc e3540d80 CMP r4,#0x2000
000be0 aa000005 BGE |L1.3068|
000be4 ea000001 B |L1.3056|
|L1.3048|
000be8 e2844001 ADD r4,r4,#1
000bec eafffffa B |L1.3036|
;;;160 {
;;;161 NF_IsBadBlock(i); // Print bad block
|L1.3056|
000bf0 e1a00004 MOV r0,r4
000bf4 ebfffffe BL NF_IsBadBlock
;;;162 }
000bf8 eafffffa B |L1.3048|
;;;163 }
|L1.3068|
000bfc e8bd8010 LDMFD sp!,{r4,pc}
|L1.3072|
000c00 4d535b0a DCB "\n[SM"
000c04 394b2843 DCB "C(K9"
000c08 30473144 DCB "D1G0"
000c0c 4d305638 DCB "8V0M"
000c10 414e2029 DCB ") NA"
000c14 4620444e DCB "ND F"
000c18 6873616c DCB "lash"
000c1c 64616220 DCB " bad"
000c20 6f6c6220 DCB " blo"
000c24 63206b63 DCB "ck c"
000c28 6b636568 DCB "heck"
000c2c 00000a5d DCB "]\n\0\0"
ENDP
K9D1G08_PrintBlock PROC
;;;165 void K9D1G08_PrintBlock(void)// Printf one page
;;;166 {
000c30 e92d40f8 STMFD sp!,{r3-r7,lr}
;;;167 int i,j;
;;;168 U32 block,page;
;;;169 U8 * downPt;
;;;170
;;;171 downPt=(unsigned char *)0x11000000;
000c34 e3a05544 MOV r5,#0x11000000
;;;172
;;;173 Uart_Printf("\n[SMC(K9D1G08V0M) NAND Flash block read]\n");
000c38 e28f0088 ADR r0,|L1.3272|
000c3c ebfffffe BL _printf
;;;174
;;;175 Uart_Printf("Input target block number:");
000c40 e28f00ac ADR r0,|L1.3316|
000c44 ebfffffe BL _printf
;;;176 block=Uart_GetIntNum();
000c48 ebfffffe BL Uart_GetIntNum
000c4c e1a06000 MOV r6,r0
;;;177 Uart_Printf("Input target page number:");
000c50 e28f00b8 ADR r0,|L1.3344|
000c54 ebfffffe BL _printf
;;;178 page=Uart_GetIntNum();
000c58 ebfffffe BL Uart_GetIntNum
000c5c e1a07000 MOV r7,r0
;;;179
;;;180 NF_ReadPage(block,page,downPt);
000c60 e1a02005 MOV r2,r5
000c64 e1a01007 MOV r1,r7
000c68 e1a00006 MOV r0,r6
000c6c ebfffffe BL NF_ReadPage
;;;181 Uart_Printf("block=%d,page=%d:",block,page);
000c70 e1a02007 MOV r2,r7
000c74 e1a01006 MOV r1,r6
000c78 e28f00ac ADR r0,|L1.3372|
000c7c ebfffffe BL _printf
;;;182 for(j=0;j<512;j++)
000c80 e3a04000 MOV r4,#0
|L1.3204|
000c84 e3540f80 CMP r4,#0x200
000c88 aa00000b BGE |L1.3260|
000c8c ea000001 B |L1.3224|
|L1.3216|
000c90 e2844001 ADD r4,r4,#1
000c94 eafffffa B |L1.3204|
;;;183 {
;;;184 if(j%16==0)
|L1.3224|
000c98 e314000f TST r4,#0xf
000c9c 1a000002 BNE |L1.3244|
;;;185 Uart_Printf("\n%3xh:",j);
000ca0 e1a01004 MOV r1,r4
000ca4 e28f0094 ADR r0,|L1.3392|
000ca8 ebfffffe BL _printf
;;;186 Uart_Printf("%02x ",*downPt++);
|L1.3244|
000cac e4d51001 LDRB r1,[r5],#1
000cb0 e28f0090 ADR r0,|L1.3400|
000cb4 ebfffffe BL _printf
;;;187 }
000cb8 eafffff4 B |L1.3216|
;;;188 Uart_Printf("\n");
|L1.3260|
000cbc e28f002c ADR r0,|L1.3312|
000cc0 ebfffffe BL _printf
;;;189 }
000cc4 e8bd80f8 LDMFD sp!,{r3-r7,pc}
|L1.3272|
000cc8 4d535b0a DCB "\n[SM"
000ccc 394b2843 DCB "C(K9"
000cd0 30473144 DCB "D1G0"
000cd4 4d305638 DCB "8V0M"
000cd8 414e2029 DCB ") NA"
000cdc 4620444e DCB "ND F"
000ce0 6873616c DCB "lash"
000ce4 6f6c6220 DCB " blo"
000ce8 72206b63 DCB "ck r"
000cec 5d646165 DCB "ead]"
|L1.3312|
000cf0 0000000a DCB "\n\0\0\0"
|L1.3316|
000cf4 75706e49 DCB "Inpu"
000cf8 61742074 DCB "t ta"
000cfc 74656772 DCB "rget"
000d00 6f6c6220 DCB " blo"
000d04 6e206b63 DCB "ck n"
000d08 65626d75 DCB "umbe"
000d0c 00003a72 DCB "r:\0\0"
|L1.3344|
000d10 75706e49 DCB "Inpu"
000d14 61742074 DCB "t ta"
000d18 74656772 DCB "rget"
000d1c 67617020 DCB " pag"
000d20 756e2065 DCB "e nu"
000d24 7265626d DCB "mber"
000d28 0000003a DCB ":\0\0\0"
|L1.3372|
000d2c 636f6c62 DCB "bloc"
000d30 64253d6b DCB "k=%d"
000d34 6761702c DCB ",pag"
000d38 64253d65 DCB "e=%d"
000d3c 0000003a DCB ":\0\0\0"
|L1.3392|
000d40 7833250a DCB "\n%3x"
000d44 00003a68 DCB "h:\0\0"
|L1.3400|
000d48 78323025 DCB "%02x"
000d4c 00000020 DCB " \0\0\0"
ENDP
K9D1G08_Erase PROC
;;;191 void K9D1G08_Erase(void)
;;;192 {
000d50 e92d4010 STMFD sp!,{r4,lr}
;;;193 U32 block=0;
000d54 e3a04000 MOV r4,#0
;;;194
;;;195 Uart_Printf("SMC(K9D1G08V0M) NAND Block erase\n");
000d58 e28f0050 ADR r0,|L1.3504|
000d5c ebfffffe BL _printf
;;;196
;;;197 Uart_Printf("Block # to erase: ");
000d60 e28f006c ADR r0,|L1.3540|
000d64 ebfffffe BL _printf
;;;198 block = Uart_GetIntNum();
000d68 ebfffffe BL Uart_GetIntNum
000d6c e1a04000 MOV r4,r0
;;;199
;;;200 #if BAD_CHECK
;;;201 if(NF_IsBadBlock(block)); // 1:bad 0:good
000d70 e1a00004 MOV r0,r4
000d74 ebfffffe BL NF_IsBadBlock
;;;202 // return;
;;;203 #endif
;;;204
;;;205 rNFCONT&=~(1<<2); // Lock disable
000d78 e51f0bf0 LDR r0,|L1.400|
000d7c e5900004 LDR r0,[r0,#4]
000d80 e3c00004 BIC r0,r0,#4
000d84 e51f1bfc LDR r1,|L1.400|
000d88 e5810004 STR r0,[r1,#4]
;;;206
;;;207 if(NF_EraseBlock(block)==0) return;
000d8c e1a00004 MOV r0,r4
000d90 ebfffffe BL NF_EraseBlock
000d94 e3500000 CMP r0,#0
000d98 1a000000 BNE |L1.3488|
;;;208
;;;209 Uart_Printf("%d-block erased.\n", block);
;;;210
;;;211 }
|L1.3484|
000d9c e8bd8010 LDMFD sp!,{r4,pc}
|L1.3488|
000da0 e1a01004 MOV r1,r4 ;209
000da4 e28f003c ADR r0,|L1.3560| ;209
000da8 ebfffffe BL _printf ;209
000dac eafffffa B |L1.3484|
|L1.3504|
000db0 28434d53 DCB "SMC("
000db4 3144394b DCB "K9D1"
000db8 56383047 DCB "G08V"
000dbc 20294d30 DCB "0M) "
000dc0 444e414e DCB "NAND"
000dc4 6f6c4220 DCB " Blo"
000dc8 65206b63 DCB "ck e"
000dcc 65736172 DCB "rase"
000dd0 0000000a DCB "\n\0\0\0"
|L1.3540|
000dd4 636f6c42 DCB "Bloc"
000dd8 2023206b DCB "k # "
000ddc 65206f74 DCB "to e"
000de0 65736172 DCB "rase"
000de4 0000203a DCB ": \0\0"
|L1.3560|
000de8 622d6425 DCB "%d-b"
000dec 6b636f6c DCB "lock"
000df0 61726520 DCB " era"
000df4 2e646573 DCB "sed."
000df8 0000000a DCB "\n\0\0\0"
ENDP
K9D1G08_Lock PROC
;;;213 void K9D1G08_Lock(void)
;;;214 {
000dfc e92d4070 STMFD sp!,{r4-r6,lr}
;;;215 U32 num;
;;;216 U32 S_block, E_block;
;;;217 Uart_Printf("SMC(K9D1G08V0M) NAND Lock Test !!!\n");
000e00 e28f009c ADR r0,|L1.3748|
000e04 ebfffffe BL _printf
;;;218 Uart_Printf("Select Lock type, Softlock(1)/Lock-tight(2) : ");
000e08 e28f00b8 ADR r0,|L1.3784|
000e0c ebfffffe BL _printf
;;;219
;;;220 num=Uart_GetIntNum();;
000e10 ebfffffe BL Uart_GetIntNum
000e14 e1a05000 MOV r5,r0
;;;221
;;;222 Uart_Printf("\nEnter programmable start block address ");
000e18 e28f00d8 ADR r0,|L1.3832|
000e1c ebfffffe BL _printf
;;;223 S_block = Uart_GetIntNum();
000e20 ebfffffe BL Uart_GetIntNum
000e24 e1a06000 MOV r6,r0
;;;224 Uart_Printf("Enter programmable end block address ");
000e28 e28f00f4 ADR r0,|L1.3876|
000e2c ebfffffe BL _printf
;;;225 E_block = Uart_GetIntNum();
000e30 ebfffffe BL Uart_GetIntNum
000e34 e1a04000 MOV r4,r0
;;;226
;;;227 rNFSBLK=(S_block<<5);
000e38 e1a00286 MOV r0,r6,LSL #5
000e3c e51f1cb4 LDR r1,|L1.400|
000e40 e5810044 STR r0,[r1,#0x44]
;;;228 rNFEBLK=(E_block<<5);
000e44 e1a00284 MOV r0,r4,LSL #5
000e48 e5810048 STR r0,[r1,#0x48]
;;;229
;;;230 if(num==1){
000e4c e3550001 CMP r5,#1
000e50 1a000005 BNE |L1.3692|
;;;231 rNFCONT|=(1<<2);
000e54 e1a00001 MOV r0,r1
000e58 e5900004 LDR r0,[r0,#4]
000e5c e3800004 ORR r0,r0,#4
000e60 e5810004 STR r0,[r1,#4]
;;;232 Uart_Printf("Software Locked\n ");
000e64 e28f00e0 ADR r0,|L1.3916|
000e68 ebfffffe BL _printf
;;;233 }
;;;234 if(num==2){
|L1.3692|
000e6c e3550002 CMP r5,#2
000e70 1a000006 BNE |L1.3728|
;;;235 rNFCONT|=(1<<3);
000e74 e51f0cec LDR r0,|L1.400|
000e78 e5900004 LDR r0,[r0,#4]
000e7c e3800008 ORR r0,r0,#8
000e80 e51f1cf8 LDR r1,|L1.400|
000e84 e5810004 STR r0,[r1,#4]
;;;236 Uart_Printf("Lock-tight: To clear Lock-tight, reset S3C24A0!!!\n ");
000e88 e28f00d0 ADR r0,|L1.3936|
000e8c ebfffffe BL _printf
;;;237 }
;;;238 Uart_Printf("%d block ~ %d block are Programmable\n ", S_block, (E_block-1));
|L1.3728|
000e90 e2442001 SUB r2,r4,#1
000e94 e1a01006 MOV r1,r6
000e98 e28f00f4 ADR r0,|L1.3988|
000e9c ebfffffe BL _printf
;;;239 }
000ea0 e8bd8070 LDMFD sp!,{r4-r6,pc}
|L1.3748|
000ea4 28434d53 DCB "SMC("
000ea8 3144394b DCB
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -