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

안녕하세요

제가 낸드플래쉬를 제어하고 싶은데 인터넷에서 본 소스는 제가 하려는 메모리와 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
번호 제목 글쓴이 날짜 조회 수

초보적인 Toolchain 문제 [1]

2G SD카드 인식문제 [9]

bootloader 에서 usb device 인식( usb ethernet adator ) [3]

2차 보드와 3차 보드의 차이점을 알고 싶습니다. [1]

[질문] 하나의 텍스트 파일안에 utf8 과 euc-kr 이 섞여 있을때의... [6]

[완료]공유기 없이 VMware network 환경 설정 [7]

sd card 질문입니다. [7]

[완료] 프로세서가 먹통되었을 때 리셋버튼 눌러도 반응이 없는 경... [3]

[완료] 삼성 NAND Flash 제어 질문입니다. ^^ [4]

[완료]LCD - framebuffer 관련 질문 이요 ^^; [1]

nfs서버 질문입니다. [2]

[질문]페도라의 ntsysv 와 같은 역활의 명령어 Slackware11에 어떤게... [5]

회사의 다른컴에서 aesop-embedded.org 접속이 안됩니다. [5]

nand bad 관련 의문점 [2]

nand erase error입니다 도움 부탁합니다. [2]

[완료]레드햇9 리눅스 부팅에러입니다. [2]

[완료]NAND Flash 제어할때 주소구성이 어떻게 되는지 궁금합니다... [4]

삼성 2440 I/O Speed [1]

[완료]SDL 기본 화면 뛰우기 [3]

[완료]QTE vs TinyX+QT/X11 [2]

사용자 로그인