Difference between r1.11 and the current
@@ -6,8 +6,11 @@
== u-boot란? ==
ad
== u-boot 구할 수 있는 곳은? ==
sf.net 에서 u-boot 으로 검색하면 최신 u-boot 소스를 다운 받을 수 있다.
== u-boot 빌드 ==
== u-boot 소스 분석 ==
=== Nand 플래시 ===
common/cmd_nand.c
@@ -55,5 +58,4 @@
||비트 13-15||cleanmarker. 0x00||
== 참고 ==
* [http://www.denx.de/twiki/bin/view/DULG/Manual U-Boot Manual]
u-boot #
--
김도집 2005-08-12 16:51:50
Contents
- 1 u-boot
- 1.1 u-boot란?
- 1.2 u-boot 구할 수 있는 곳은?
- 1.3 u-boot 빌드
- 1.4 u-boot 소스 분석
- 1.4.1 Nand 플래시
- 1.5 참고
1.2 u-boot 구할 수 있는 곳은? #
sf.net 에서 u-boot 으로 검색하면 최신 u-boot 소스를 다운 받을 수 있다.
common/cmd_nand.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
다음은 낸드 플래시의 페이지가 크기가 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 |