기존 이솝 임베디드 포럼의 지식인 서비스가 게시판 형태로 변경되었습니다.

안녕하세요

제가 낸드플래쉬를 제어하고 싶은데 인터넷에서 본 소스는 제가 하려는 메모리와 Spec상에 차이가 있어 고치려고 하는데 소스중에 이해가 되지 않는 부분이 있어 글을 올리게 되었습니다.


아래는
K9K2G16U0M 용 Page Read 코드인데
{{{

static int NF16_ReadPage(U32 block,U32 page,U32 *buffer)
{
    int i;
    unsigned int blockPage;    
    U32 Mecc0, Mecc1, Secc;    
    U32 *bufPt=buffer;    
    
    blockPage=(block<<6)+page;

    NF_RSTECC();    // Initialize ECC
    NF_MECC_UnLock();
    
    NF_nFCE_L();    

    NF_CLEAR_RB();
    NF_CMD(0x00); // Read command
    NF_ADDR(0);  // Column (A[7:0]) = 0
    NF_ADDR(0);  // A[10:8]
    NF_ADDR((blockPage)&0xff); // A[18:11]
    NF_ADDR((blockPage>>8)&0xff); // A[26:19]
    NF_ADDR((blockPage>>16)&0xff);  // A27
    NF_CMD(0x30); // 2'nd command
    NF_DETECT_RB();

}}}
좀 이해가 되지 않는 부분은 바로
{{{
    NF_ADDR(0);  // Column (A[7:0]) = 0  <----- 무슨 용도인지 설명을 부탁드립니다.
    NF_ADDR(0);  // A[10:8]                    <----- 왜 0을 넣죠 ?
    NF_ADDR((blockPage)&0xff); // A[18:11]
    NF_ADDR((blockPage>>8)&0xff); // A[26:19]
    NF_ADDR((blockPage>>16)&0xff);  // A27
}}} 입니다.


고현철

2007.11.19 00:36:17
*.70.26.87

어떤 hw를 사용하시는지.....

controller가 있는 녀석이면 위의 코드가 필요없습니다.
CPLD나 FPGA 혹은 로직을 가지고 접근할때 쓰는 코드일 듯 싶네요.

저도 오래되어서 까먹었는데, 유영창씨가 kelp에서 했던 강좌에 보면 자세한 내용이 있을겁니다.

nand에 대해 공부를 했었도, 직접 저런 방식으로 쓰지를 않다보니 다 까먹네요....ㅎㅎ

임종환

2007.11.19 02:11:21
*.233.31.85

시중에 볼 수 있는 평가보드가 아니라서 HW를 설명드리지 못하겠구요.

일단 NAND FLash Controller가 있습니다.
삼숭 SPEC에 보면 5 cycle 동안 row Column 3주소를 준다고 하는데
row가 Block column이 page address 라고 생각했는데
생각지도 못한 0값을 넣고 있어서 질문드렸습니다.

KELP가서 해당 문서좀 봐야겠네요.

감사합니다.
profile

김재훈

2007.11.19 04:37:32
*.46.168.40

말씀하신 Row Column 3 주소는 블록 번호를 말씀 하시는 것 같군요. 이경우 세번째~다섯번째 사이클에 접근하고자 하는 블록 번호를 넣는 것이 맞습니다.
첫번째와 두번째 싸이클에 0을 넣는 이유는, Block 내부의 페이지를 억세스 하기 위한 주소 값 입니다. 보통은 한 블록당 페이지의 첫번째 데이터부터 끝까지 억세스를 하니깐, 여기에는 0을 주는 것이지요. ^^

임종환

2007.11.19 06:42:41
*.233.31.85

가만히 연습장에 저게 뭐지하며 있다가 "페이지 단위 억세스니까 하게 되네요." 하고 완료글 붙이러 오니, 친절하게 설명해주셨네요.
감사합니다.
가끔씩 이렇게 멍청해질때가 .. 부끄 부끄
List of Articles
번호 제목 글쓴이 날짜 조회 수
168 초보적인 Toolchain 문제 [1] 서영태 2008-01-16 1172
167 2G SD카드 인식문제 [9] 문철민 2008-01-12 3176
166 bootloader 에서 usb device 인식( usb ethernet adator ) [3] 황기천 2008-01-10 1502
165 2차 보드와 3차 보드의 차이점을 알고 싶습니다. [1] 김영수 2008-01-07 1143
164 [질문] 하나의 텍스트 파일안에 utf8 과 euc-kr 이 섞여 있을때의... [6] 유형목 2008-01-06 1291
163 [완료]공유기 없이 VMware network 환경 설정 [7] 최재혁 2007-12-24 3694
162 sd card 질문입니다. [7] 박진우 2007-12-21 1273
161 [완료] 프로세서가 먹통되었을 때 리셋버튼 눌러도 반응이 없는 경... [3] 오주열 2007-12-18 1386
160 [완료] 삼성 NAND Flash 제어 질문입니다. ^^ [4] 김태현 2007-12-10 1649
159 [완료]LCD - framebuffer 관련 질문 이요 ^^; [1] 박준영 2007-12-09 1693
158 nfs서버 질문입니다. [2] 문철민 2007-12-04 1424
157 [질문]페도라의 ntsysv 와 같은 역활의 명령어 Slackware11에 어떤게... [5] 조준동 2007-11-30 1313
156 회사의 다른컴에서 aesop-embedded.org 접속이 안됩니다. [5] 조준동 2007-11-28 1546
155 nand bad 관련 의문점 [2] 문철민 2007-11-27 1288
154 nand erase error입니다 도움 부탁합니다. [2] 문철민 2007-11-24 2780
153 [완료]레드햇9 리눅스 부팅에러입니다. [2] 문철민 2007-11-21 1789
» [완료]NAND Flash 제어할때 주소구성이 어떻게 되는지 궁금합니다... [4] 임종환 2007-11-18 2068
151 삼성 2440 I/O Speed [1] 전철웅 2007-11-17 2759
150 [완료]SDL 기본 화면 뛰우기 [3] 윤치호 2007-11-15 2731
149 [완료]QTE vs TinyX+QT/X11 [2] 박준영 2007-11-13 1978

사용자 로그인