📄 k9s1208.txt
字号:
000b6c ea000001 B |L1.2936|
|L1.2928|
000b70 e2844001 ADD r4,r4,#1
000b74 eafffffa B |L1.2916|
;;;161 {
;;;162 NF_IsBadBlock(i); // Print bad block
|L1.2936|
000b78 e1a00004 MOV r0,r4
000b7c ebfffffe BL NF_IsBadBlock
;;;163 }
000b80 eafffffa B |L1.2928|
;;;164 }
|L1.2948|
000b84 e8bd8010 LDMFD sp!,{r4,pc}
|L1.2952|
000b88 4d535b0a DCB "\n[SM"
000b8c 394b2843 DCB "C(K9"
000b90 30323153 DCB "S120"
000b94 4d305638 DCB "8V0M"
000b98 414e2029 DCB ") NA"
000b9c 4620444e DCB "ND F"
000ba0 6873616c DCB "lash"
000ba4 64616220 DCB " bad"
000ba8 6f6c6220 DCB " blo"
000bac 63206b63 DCB "ck c"
000bb0 6b636568 DCB "heck"
000bb4 00000a5d DCB "]\n\0\0"
ENDP
K9S1208_PrintBlock PROC
;;;166 void K9S1208_PrintBlock(void)// Printf one page
;;;167 {
000bb8 e92d40f8 STMFD sp!,{r3-r7,lr}
;;;168 int i,j;
;;;169 U32 block,page;
;;;170 U8 * downPt;
;;;171
;;;172 downPt=(unsigned char *)0x11000000;
000bbc e3a05544 MOV r5,#0x11000000
;;;173
;;;174 Uart_Printf("\n[SMC(K9S1208V0M) NAND Flash block read]\n");
000bc0 e28f0088 ADR r0,|L1.3152|
000bc4 ebfffffe BL _printf
;;;175
;;;176 Uart_Printf("Input target block number:");
000bc8 e28f00ac ADR r0,|L1.3196|
000bcc ebfffffe BL _printf
;;;177 block=Uart_GetIntNum();
000bd0 ebfffffe BL Uart_GetIntNum
000bd4 e1a06000 MOV r6,r0
;;;178 Uart_Printf("Input target page number:");
000bd8 e28f00b8 ADR r0,|L1.3224|
000bdc ebfffffe BL _printf
;;;179 page=Uart_GetIntNum();
000be0 ebfffffe BL Uart_GetIntNum
000be4 e1a07000 MOV r7,r0
;;;180
;;;181 NF_ReadPage(block,page,downPt);
000be8 e1a02005 MOV r2,r5
000bec e1a01007 MOV r1,r7
000bf0 e1a00006 MOV r0,r6
000bf4 ebfffffe BL NF_ReadPage
;;;182 Uart_Printf("block=%d,page=%d:",block,page);
000bf8 e1a02007 MOV r2,r7
000bfc e1a01006 MOV r1,r6
000c00 e28f00ac ADR r0,|L1.3252|
000c04 ebfffffe BL _printf
;;;183 for(j=0;j<512;j++)
000c08 e3a04000 MOV r4,#0
|L1.3084|
000c0c e3540f80 CMP r4,#0x200
000c10 aa00000b BGE |L1.3140|
000c14 ea000001 B |L1.3104|
|L1.3096|
000c18 e2844001 ADD r4,r4,#1
000c1c eafffffa B |L1.3084|
;;;184 {
;;;185 if(j%16==0)
|L1.3104|
000c20 e314000f TST r4,#0xf
000c24 1a000002 BNE |L1.3124|
;;;186 Uart_Printf("\n%3xh:",j);
000c28 e1a01004 MOV r1,r4
000c2c e28f0094 ADR r0,|L1.3272|
000c30 ebfffffe BL _printf
;;;187 Uart_Printf("%02x ",*downPt++);
|L1.3124|
000c34 e4d51001 LDRB r1,[r5],#1
000c38 e28f0090 ADR r0,|L1.3280|
000c3c ebfffffe BL _printf
;;;188 }
000c40 eafffff4 B |L1.3096|
;;;189 Uart_Printf("\n");
|L1.3140|
000c44 e28f002c ADR r0,|L1.3192|
000c48 ebfffffe BL _printf
;;;190 }
000c4c e8bd80f8 LDMFD sp!,{r3-r7,pc}
|L1.3152|
000c50 4d535b0a DCB "\n[SM"
000c54 394b2843 DCB "C(K9"
000c58 30323153 DCB "S120"
000c5c 4d305638 DCB "8V0M"
000c60 414e2029 DCB ") NA"
000c64 4620444e DCB "ND F"
000c68 6873616c DCB "lash"
000c6c 6f6c6220 DCB " blo"
000c70 72206b63 DCB "ck r"
000c74 5d646165 DCB "ead]"
|L1.3192|
000c78 0000000a DCB "\n\0\0\0"
|L1.3196|
000c7c 75706e49 DCB "Inpu"
000c80 61742074 DCB "t ta"
000c84 74656772 DCB "rget"
000c88 6f6c6220 DCB " blo"
000c8c 6e206b63 DCB "ck n"
000c90 65626d75 DCB "umbe"
000c94 00003a72 DCB "r:\0\0"
|L1.3224|
000c98 75706e49 DCB "Inpu"
000c9c 61742074 DCB "t ta"
000ca0 74656772 DCB "rget"
000ca4 67617020 DCB " pag"
000ca8 756e2065 DCB "e nu"
000cac 7265626d DCB "mber"
000cb0 0000003a DCB ":\0\0\0"
|L1.3252|
000cb4 636f6c62 DCB "bloc"
000cb8 64253d6b DCB "k=%d"
000cbc 6761702c DCB ",pag"
000cc0 64253d65 DCB "e=%d"
000cc4 0000003a DCB ":\0\0\0"
|L1.3272|
000cc8 7833250a DCB "\n%3x"
000ccc 00003a68 DCB "h:\0\0"
|L1.3280|
000cd0 78323025 DCB "%02x"
000cd4 00000020 DCB " \0\0\0"
ENDP
K9S1208_Erase PROC
;;;192 void K9S1208_Erase(void)
;;;193 {
000cd8 e92d4010 STMFD sp!,{r4,lr}
;;;194 U32 block=0;
000cdc e3a04000 MOV r4,#0
;;;195
;;;196 Uart_Printf("SMC(K9S1208V0M) NAND Block erase\n");
000ce0 e28f0050 ADR r0,|L1.3384|
000ce4 ebfffffe BL _printf
;;;197
;;;198 Uart_Printf("Block # to erase: ");
000ce8 e28f006c ADR r0,|L1.3420|
000cec ebfffffe BL _printf
;;;199 block = Uart_GetIntNum();
000cf0 ebfffffe BL Uart_GetIntNum
000cf4 e1a04000 MOV r4,r0
;;;200
;;;201 #if BAD_CHECK
;;;202 if(NF_IsBadBlock(block)); // 1:bad 0:good
000cf8 e1a00004 MOV r0,r4
000cfc ebfffffe BL NF_IsBadBlock
;;;203 // return;
;;;204 #endif
;;;205
;;;206 rNFCONT&=~(1<<2); // Lock disable
000d00 e51f0b74 LDR r0,|L1.404|
000d04 e5900004 LDR r0,[r0,#4]
000d08 e3c00004 BIC r0,r0,#4
000d0c e51f1b80 LDR r1,|L1.404|
000d10 e5810004 STR r0,[r1,#4]
;;;207
;;;208 if(NF_EraseBlock(block)==0) return;
000d14 e1a00004 MOV r0,r4
000d18 ebfffffe BL NF_EraseBlock
000d1c e3500000 CMP r0,#0
000d20 1a000000 BNE |L1.3368|
;;;209
;;;210 Uart_Printf("%d-block erased.\n", block);
;;;211
;;;212 }
|L1.3364|
000d24 e8bd8010 LDMFD sp!,{r4,pc}
|L1.3368|
000d28 e1a01004 MOV r1,r4 ;210
000d2c e28f003c ADR r0,|L1.3440| ;210
000d30 ebfffffe BL _printf ;210
000d34 eafffffa B |L1.3364|
|L1.3384|
000d38 28434d53 DCB "SMC("
000d3c 3153394b DCB "K9S1"
000d40 56383032 DCB "208V"
000d44 20294d30 DCB "0M) "
000d48 444e414e DCB "NAND"
000d4c 6f6c4220 DCB " Blo"
000d50 65206b63 DCB "ck e"
000d54 65736172 DCB "rase"
000d58 0000000a DCB "\n\0\0\0"
|L1.3420|
000d5c 636f6c42 DCB "Bloc"
000d60 2023206b DCB "k # "
000d64 65206f74 DCB "to e"
000d68 65736172 DCB "rase"
000d6c 0000203a DCB ": \0\0"
|L1.3440|
000d70 622d6425 DCB "%d-b"
000d74 6b636f6c DCB "lock"
000d78 61726520 DCB " era"
000d7c 2e646573 DCB "sed."
000d80 0000000a DCB "\n\0\0\0"
ENDP
K9S1208_Lock PROC
;;;214 void K9S1208_Lock(void)
;;;215 {
000d84 e92d4070 STMFD sp!,{r4-r6,lr}
;;;216 U32 num;
;;;217 U32 S_block, E_block;
;;;218 Uart_Printf("SMC(K9S1208V0M) NAND Lock Test !!!\n");
000d88 e28f009c ADR r0,|L1.3628|
000d8c ebfffffe BL _printf
;;;219 Uart_Printf("Select Lock type, Softlock(1)/Lock-tight(2) : ");
000d90 e28f00b8 ADR r0,|L1.3664|
000d94 ebfffffe BL _printf
;;;220
;;;221 num=Uart_GetIntNum();;
000d98 ebfffffe BL Uart_GetIntNum
000d9c e1a05000 MOV r5,r0
;;;222
;;;223 Uart_Printf("\nEnter programmable start block address ");
000da0 e28f00d8 ADR r0,|L1.3712|
000da4 ebfffffe BL _printf
;;;224 S_block = Uart_GetIntNum();
000da8 ebfffffe BL Uart_GetIntNum
000dac e1a06000 MOV r6,r0
;;;225 Uart_Printf("Enter programmable end block address ");
000db0 e28f00f4 ADR r0,|L1.3756|
000db4 ebfffffe BL _printf
;;;226 E_block = Uart_GetIntNum();
000db8 ebfffffe BL Uart_GetIntNum
000dbc e1a04000 MOV r4,r0
;;;227
;;;228 rNFSBLK=(S_block<<5);
000dc0 e1a00286 MOV r0,r6,LSL #5
000dc4 e51f1c38 LDR r1,|L1.404|
000dc8 e5810044 STR r0,[r1,#0x44]
;;;229 rNFEBLK=(E_block<<5);
000dcc e1a00284 MOV r0,r4,LSL #5
000dd0 e5810048 STR r0,[r1,#0x48]
;;;230
;;;231 if(num==1){
000dd4 e3550001 CMP r5,#1
000dd8 1a000005 BNE |L1.3572|
;;;232 rNFCONT|=(1<<2);
000ddc e1a00001 MOV r0,r1
000de0 e5900004 LDR r0,[r0,#4]
000de4 e3800004 ORR r0,r0,#4
000de8 e5810004 STR r0,[r1,#4]
;;;233 Uart_Printf("Software Locked\n ");
000dec e28f00e0 ADR r0,|L1.3796|
000df0 ebfffffe BL _printf
;;;234 }
;;;235 if(num==2){
|L1.3572|
000df4 e3550002 CMP r5,#2
000df8 1a000006 BNE |L1.3608|
;;;236 rNFCONT|=(1<<3);
000dfc e51f0c70 LDR r0,|L1.404|
000e00 e5900004 LDR r0,[r0,#4]
000e04 e3800008 ORR r0,r0,#8
000e08 e51f1c7c LDR r1,|L1.404|
000e0c e5810004 STR r0,[r1,#4]
;;;237 Uart_Printf("Lock-tight: To clear Lock-tight, reset S3C2440!!!\n ");
000e10 e28f00d0 ADR r0,|L1.3816|
000e14 ebfffffe BL _printf
;;;238 }
;;;239 Uart_Printf("%d block ~ %d block are Programmable\n ", S_block, (E_block-1));
|L1.3608|
000e18 e2442001 SUB r2,r4,#1
000e1c e1a01006 MOV r1,r6
000e20 e28f00f4 ADR r0,|L1.3868|
000e24 ebfffffe BL _printf
;;;240 }
000e28 e8bd8070 LDMFD sp!,{r4-r6,pc}
|L1.3628|
000e2c 28434d53 DCB "SMC("
000e30 3153394b DCB "K9S1"
000e34 56383032 DCB "208V"
000e38 20294d30 DCB "0M) "
000e3c 444e414e DCB "NAND"
000e40 636f4c20 DCB " Loc"
000e44 6554206b DCB "k Te"
000e48 21207473 DCB "st !"
000e4c 000a2121 DCB "!!\n\0"
|L1.3664|
000e50 656c6553 DCB "Sele"
000e54 4c207463 DCB "ct L"
000e58 206b636f DCB "ock "
000e5c 65707974 DCB "type"
000e60 6f53202c DCB ", So"
000e64 6f6c7466 DCB "ftlo"
000e68 31286b63 DCB "ck(1"
000e6c 6f4c2f29 DCB ")/Lo"
000e70 742d6b63 DCB "ck-t"
000e74 74686769 DCB "ight"
000e78 20293228 DCB "(2) "
000e7c 0000203a DCB ": \0\0"
|L1.3712|
000e80 746e450a DCB "\nEnt"
000e84 70207265 DCB "er p"
000e88 72676f72 DCB "rogr"
000e8c 616d6d61 DCB "amma"
000e90 20656c62 DCB "ble "
000e94 72617473 DCB "star"
000e98 6c622074 DCB "t bl"
000e9c 206b636f DCB "ock "
000ea0 72646461 DCB "addr"
000ea4 20737365 DCB "ess "
000ea8 00000000 DCB "\0\0\0\0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -