= u-boot = -- [김도집] [[DateTime(2005-08-12T07:51:50)]] [[TableOfContents]] == u-boot란? == == u-boot 구할 수 있는 곳은? == sf.net 에서 u-boot 으로 검색하면 최신 u-boot 소스를 다운 받을 수 있다. == u-boot 빌드 == == u-boot 소스 분석 == === Nand 플래시 === common/cmd_nand.c 기본 데이터 구조체 {{{#!vim c struct nand_chip int page_shift; u_char *data_buf; u_char *data_cache; int cache_page; u_char ecc_code_buf[6] u_char reserved[2]; ... uint oobblock; uint oobsize; uint eccsize; int bus16; }; }}} ||'''field'''||'''설명'''|| ||data_buf||oobblock+oobsize. eg. 528|| ||oobblock||OOB를 제외한 페이지의 크기 eg. 512|| ||oobsize||OOB의 크기 eg. 16|| 위에서 data_buf는 nand_probe()함수에서 malloc을 통해 할당 받는다. data_buf의 크기는 oobblock+oobsize 이다. 즉 낸드 플래시 페이지가 512바이트이고 OOB 크기가 16바이트라고 한다면 data_buf의 크기는 528바이트가 된다. ECC [[BR]] 다음은 낸드 플래시의 페이지가 크기가 512바이트일 때, JFFS2에서 ECC에 대한 것이다. ||'''OOB 영역의 비트'''||'''설명'''|| ||비트 0||JFFS2_OOB_ECCPOS0|| ||비트 1||JFFS2_OOB_ECCPOS1|| ||비트 2||JFFS2_OOB_ECCPOS2|| ||비트 3||JFFS2_OOB_ECCPOS3|| ||비트 4||ECCVALID_POS|| ||비트 5||BADBLOCK_POS|| ||비트 6||JFFS2_OOB_ECCPOS4|| ||비트 7||JFFS2_OOB_ECCPOS5|| ||비트 8||cleanmarker. 0x85|| ||비트 9||cleanmarker. 0x19|| ||비트 10||cleanmarker. 0x03|| ||비트 11||cleanmarker. 0x20|| ||비트 12||cleanmarker. 0x08|| ||비트 13-15||cleanmarker. 0x00|| == 참고 == * [http://www.denx.de/twiki/bin/view/DULG/Manual U-Boot Manual]