📄 k9f1g08.txt
字号:
000580 e3a0144b MOV r1,#0x4b000000
000584 e5810020 STR r0,[r1,#0x20]
;;;764
;;;765 while(!(rSRCPND & BIT_DMA0)); // Wait until Dma transfer is done.
000588 e1a00000 NOP
|L1.1420|
00058c e3a0044a MOV r0,#0x4a000000
000590 e5900000 LDR r0,[r0,#0]
000594 e3100b80 TST r0,#0x20000
000598 0afffffb BEQ |L1.1420|
;;;766
;;;767 rSRCPND=BIT_DMA0;
00059c e3a00b80 MOV r0,#0x20000
0005a0 e3a0144a MOV r1,#0x4a000000
0005a4 e5810000 STR r0,[r1,#0]
;;;768
;;;769 #endif
;;;770
;;;771 /*
;;;772 NF_MECC_Lock();
;;;773
;;;774 rNFMECCD0=NF_RDDATA();
;;;775
;;;776 NF_nFCE_H();
;;;777
;;;778 if ((rNFESTAT0&0x3) == 0x0) return OK;
;;;779 else return FAIL;
;;;780 */
;;;781
;;;782 NF_MECC_Lock();
0005a8 e3a0044e MOV r0,#0x4e000000
0005ac e5900004 LDR r0,[r0,#4]
0005b0 e3800020 ORR r0,r0,#0x20
0005b4 e3a0144e MOV r1,#0x4e000000
0005b8 e5810004 STR r0,[r1,#4]
;;;783
;;;784 // NF_SECC_UnLock();
;;;785 NF1G08_Spare_Data[0]=NF_RDDATA8();
0005bc e3a0044e MOV r0,#0x4e000000
0005c0 e5d00010 LDRB r0,[r0,#0x10]
0005c4 e59f10e4 LDR r1,|L1.1712|
0005c8 e5c10000 STRB r0,[r1,#0] ; NF1G08_Spare_Data
;;;786 Mecc=NF_RDDATA();
0005cc e3a0044e MOV r0,#0x4e000000
0005d0 e5904010 LDR r4,[r0,#0x10]
;;;787 rNFMECCD0=((Mecc&0xff00)<<8)|(Mecc&0xff);
0005d4 e20400ff AND r0,r4,#0xff
0005d8 e2041cff AND r1,r4,#0xff00
0005dc e1800401 ORR r0,r0,r1,LSL #8
0005e0 e3a0144e MOV r1,#0x4e000000
0005e4 e5810014 STR r0,[r1,#0x14]
;;;788 rNFMECCD1=((Mecc&0xff000000)>>8)|((Mecc&0xff0000)>>16);
0005e8 e3c408ff BIC r0,r4,#0xff0000
0005ec e3c00cff BIC r0,r0,#0xff00
0005f0 e1a00420 MOV r0,r0,LSR #8
0005f4 e1a01404 MOV r1,r4,LSL #8
0005f8 e1800c21 ORR r0,r0,r1,LSR #24
0005fc e3a0144e MOV r1,#0x4e000000
000600 e5810018 STR r0,[r1,#0x18]
;;;789
;;;790 // NF_SECC_Lock();
;;;791 NF1G08_Spare_Data[1]=(U8)(Mecc&0xff);
000604 e59f00a4 LDR r0,|L1.1712|
000608 e5c04001 STRB r4,[r0,#1] ; NF1G08_Spare_Data
;;;792 NF1G08_Spare_Data[2]=(U8)((Mecc>>8) & 0xff);
00060c e1a00804 MOV r0,r4,LSL #16
000610 e1a00c20 MOV r0,r0,LSR #24
000614 e59f1094 LDR r1,|L1.1712|
000618 e5c10002 STRB r0,[r1,#2] ; NF1G08_Spare_Data
;;;793 NF1G08_Spare_Data[3]=(U8)((Mecc>>16) & 0xff);
00061c e1a00404 MOV r0,r4,LSL #8
000620 e1a00c20 MOV r0,r0,LSR #24
000624 e59f1084 LDR r1,|L1.1712|
000628 e5c10003 STRB r0,[r1,#3] ; NF1G08_Spare_Data
;;;794 NF1G08_Spare_Data[4]=(U8)((Mecc>>24) & 0xff);
00062c e1a00c24 MOV r0,r4,LSR #24
000630 e59f1078 LDR r1,|L1.1712|
000634 e5c10004 STRB r0,[r1,#4] ; NF1G08_Spare_Data
;;;795
;;;796 for(i=5;i<64;i++) {
000638 e3a05005 MOV r5,#5
|L1.1596|
00063c e3550040 CMP r5,#0x40
000640 aa000007 BGE |L1.1636|
000644 ea000001 B |L1.1616|
|L1.1608|
000648 e2855001 ADD r5,r5,#1
00064c eafffffa B |L1.1596|
;;;797 NF1G08_Spare_Data[i]=NF_RDDATA8(); // Read spare array with 4byte width
|L1.1616|
000650 e3a0044e MOV r0,#0x4e000000
000654 e5d00010 LDRB r0,[r0,#0x10]
000658 e59f1050 LDR r1,|L1.1712|
00065c e7c10005 STRB r0,[r1,r5]
;;;798 }
000660 eafffff8 B |L1.1608|
;;;799 /* NF_RDDATA(); // read 4~7
;;;800 Secc=NF_RDDATA();
;;;801 rNFSECCD=((Secc&0xff00)<<8)|(Secc&0xff);
;;;802 NF8_Spare_Data[8]=Secc&0xff;
;;;803 NF8_Spare_Data[9]=(Secc&0xff00)>>8;
;;;804 NF8_Spare_Data[10]=(Secc&0xff0000)>>16;
;;;805 NF8_Spare_Data[11]=(Secc&0xff000000)>>24;
;;;806 */
;;;807 EXT_NF_nFCE_H();
|L1.1636|
000664 e3a00456 MOV r0,#0x56000000
000668 e5900004 LDR r0,[r0,#4]
00066c e3800b40 ORR r0,r0,#0x10000
000670 e3a01456 MOV r1,#0x56000000
000674 e5810004 STR r0,[r1,#4]
;;;808
;;;809 if ((rNFESTAT0&0x3) == 0x0){
000678 e3a0044e MOV r0,#0x4e000000
00067c e5900024 LDR r0,[r0,#0x24]
000680 e3100003 TST r0,#3
000684 1a000003 BNE |L1.1688|
;;;810 Uart_Printf("ECC OK!\n");
000688 e28f0024 ADR r0,|L1.1716|
00068c ebfffffe BL Uart_Printf
;;;811 return OK;
000690 e3a00001 MOV r0,#1
;;;812 }
;;;813 else {
;;;814 Uart_Printf("ECC FAIL!\n");
;;;815 return FAIL;
;;;816 }
;;;817
;;;818
;;;819 }
|L1.1684|
000694 e8bd87f0 LDMFD sp!,{r4-r10,pc}
|L1.1688|
000698 e28f0020 ADR r0,|L1.1728| ;814
00069c ebfffffe BL Uart_Printf ;814
0006a0 e3a00000 MOV r0,#0 ;815
0006a4 eafffffa B |L1.1684| ;815
|L1.1704|
0006a8 4e000010 DCD 0x4e000010 ;815
|L1.1708|
0006ac f8600080 DCD 0xf8600080 ;815
|L1.1712|
0006b0 00000000 DCD ||.bss$2|| ;815
|L1.1716|
0006b4 20434345 DCB "ECC " ;815
0006b8 0a214b4f DCB "OK!\n" ;815
0006bc 00000000 DCB "\0\0\0\0" ;815
|L1.1728|
0006c0 20434345 DCB "ECC " ;815
0006c4 4c494146 DCB "FAIL" ;815
0006c8 00000a21 DCB "!\n\0\0" ;815
ENDP
Test_NF1G08_Page_Read PROC
;;;234 void Test_NF1G08_Page_Read(void)
;;;235 {
0006cc e92d40f8 STMFD sp!,{r3-r7,lr}
;;;236 U32 block=0, page=0;
0006d0 e3a06000 MOV r6,#0
0006d4 e3a07000 MOV r7,#0
;;;237 U32 i;
;;;238 unsigned char * downPt;
;;;239
;;;240 downPt=(unsigned char *)_NONCACHE_STARTADDRESS;
0006d8 e3a055c4 MOV r5,#0x31000000
;;;241
;;;242 Uart_Printf("(K9F1G08) NAND Page Read.\n");
0006dc e28f00f4 ADR r0,|L1.2008|
0006e0 ebfffffe BL Uart_Printf
;;;243
;;;244 Uart_Printf("Block # to read: ");
0006e4 e28f0f42 ADR r0,|L1.2036|
0006e8 ebfffffe BL Uart_Printf
;;;245 block = Uart_GetIntNum();
0006ec ebfffffe BL Uart_GetIntNum
0006f0 e1a06000 MOV r6,r0
;;;246 Uart_Printf("Page # to read: ");
0006f4 e28f0f43 ADR r0,|L1.2056|
0006f8 ebfffffe BL Uart_Printf
;;;247 page = Uart_GetIntNum();
0006fc ebfffffe BL Uart_GetIntNum
000700 e1a07000 MOV r7,r0
;;;248
;;;249 if(NF1G08_ReadPage(block, page, (U8 *)downPt )==FAIL) {
000704 e1a02005 MOV r2,r5
000708 e1a01007 MOV r1,r7
00070c e1a00006 MOV r0,r6
000710 ebfffffe BL NF1G08_ReadPage
000714 e3500000 CMP r0,#0
000718 1a000002 BNE |L1.1832|
;;;250 Uart_Printf("Read error.\n");
00071c e28f00f8 ADR r0,|L1.2076|
000720 ebfffffe BL Uart_Printf
000724 ea000001 B |L1.1840|
;;;251 } else {
;;;252 Uart_Printf("Read OK.\n");
|L1.1832|
000728 e28f00fc ADR r0,|L1.2092|
00072c ebfffffe BL Uart_Printf
;;;253 }
;;;254 // Print data.
;;;255 Uart_Printf("Read data(%d-block,%d-page)\n", block, page);
|L1.1840|
000730 e1a02007 MOV r2,r7
000734 e1a01006 MOV r1,r6
000738 e28f00f8 ADR r0,|L1.2104|
00073c ebfffffe BL Uart_Printf
;;;256
;;;257 for(i=0; i<2048; i++) {
000740 e3a04000 MOV r4,#0
|L1.1860|
000744 e3540e80 CMP r4,#0x800
000748 2a00000b BCS |L1.1916|
00074c ea000001 B |L1.1880|
|L1.1872|
000750 e2844001 ADD r4,r4,#1
000754 eafffffa B |L1.1860|
;;;258 if((i%16)==0) Uart_Printf("\n%4x: ", i);
|L1.1880|
000758 e314000f TST r4,#0xf
00075c 1a000002 BNE |L1.1900|
000760 e1a01004 MOV r1,r4
000764 e28f00ec ADR r0,|L1.2136|
000768 ebfffffe BL Uart_Printf
;;;259 Uart_Printf("%02x ", *(U8 *)downPt++);
|L1.1900|
00076c e4d51001 LDRB r1,[r5],#1
000770 e28f00e8 ADR r0,|L1.2144|
000774 ebfffffe BL Uart_Printf
;;;260 }
000778 eafffff4 B |L1.1872|
;;;261 Uart_Printf("\n");
|L1.1916|
00077c e28f00b0 ADR r0,|L1.2100|
000780 ebfffffe BL Uart_Printf
;;;262 Uart_Printf("Spare:");
000784 e28f00dc ADR r0,|L1.2152|
000788 ebfffffe BL Uart_Printf
;;;263 for(i=0; i<64; i++) {
00078c e3a04000 MOV r4,#0
|L1.1936|
000790 e3540040 CMP r4,#0x40
000794 2a00000c BCS |L1.1996|
000798 ea000001 B |L1.1956|
|L1.1948|
00079c e2844001 ADD r4,r4,#1
0007a0 eafffffa B |L1.1936|
;;;264 if((i%16)==0) Uart_Printf("\n%4x: ", i);
|L1.1956|
0007a4 e314000f TST r4,#0xf
0007a8 1a000002 BNE |L1.1976|
0007ac e1a01004 MOV r1,r4
0007b0 e28f00a0 ADR r0,|L1.2136|
0007b4 ebfffffe BL Uart_Printf
;;;265 Uart_Printf("%02x ", NF1G08_Spare_Data[i]);
|L1.1976|
0007b8 e51f0110 LDR r0,|L1.1712|
0007bc e7d01004 LDRB r1,[r0,r4]
0007c0 e28f0098 ADR r0,|L1.2144|
0007c4 ebfffffe BL Uart_Printf
;;;266 }
0007c8 eafffff3 B |L1.1948|
;;;267 Uart_Printf("\n");
|L1.1996|
0007cc e28f0060 ADR r0,|L1.2100|
0007d0 ebfffffe BL Uart_Printf
;;;268
;;;269 }
0007d4 e8bd80f8 LDMFD sp!,{r3-r7,pc}
|L1.2008|
0007d8 46394b28 DCB "(K9F"
0007dc 38304731 DCB "1G08"
0007e0 414e2029 DCB ") NA"
0007e4 5020444e DCB "ND P"
0007e8 20656761 DCB "age "
0007ec 64616552 DCB "Read"
0007f0 00000a2e DCB ".\n\0\0"
|L1.2036|
0007f4 636f6c42 DCB "Bloc"
0007f8 2023206b DCB "k # "
0007fc 72206f74 DCB "to r"
000800 3a646165 DCB "ead:"
000804 00000020 DCB " \0\0\0"
|L1.2056|
000808 65676150 DCB "Page"
00080c 74202320 DCB " # t"
000810 6572206f DCB "o re"
000814 203a6461 DCB "ad: "
000818 00000000 DCB "\0\0\0\0"
|L1.2076|
00081c 64616552 DCB "Read"
000820 72726520 DCB " err"
000824 0a2e726f DCB "or.\n"
000828 00000000 DCB "\0\0\0\0"
|L1.2092|
00082c 64616552 DCB "Read"
000830 2e4b4f20 DCB " OK."
|L1.2100|
000834 0000000a DCB "\n\0\0\0"
|L1.2104|
000838 64616552 DCB "Read"
00083c 74616420 DCB " dat"
000840 64252861 DCB "a(%d"
000844 6f6c622d DCB "-blo"
000848 252c6b63 DCB "ck,%"
00084c 61702d64 DCB "d-pa"
000850 0a296567 DCB "ge)\n"
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -