마이크로비젼 기술지원팀입니다.
다운로드를 진행하실 때 따로 address를 설정하여 write을 하지 않아도 됩니다. 처음 dnw에서 다운로드 어드레스만
설정하신 후에 진행을 하시면 됩니다. 이미지를 하나나에 어드레스 설정을 하실 필요는 없습니다.
그림<2>설명은 메모리에 이미지를 다운로드 한 후에 NAND Flash에 write하는 과정을 설명한 것입니다. 당사 매뉴얼에
표기한 방법으로 다운로드를 진행하시면 보드에 정상적으로 이미지가 write되여 부팅하는 것을 확인 하실 수 있을 겁니다.
DDR과 NAND Flash는 동일한 Address가 아닙니다. NAND Flash는 번지가 아닌 블록단위로 읽고 쓰기 때문입니다.
SRC\BOOTLOADER\EBOOT폴더에서 “loader.h”파일을 보시면 NAND Flash map을 확인 하실 수 있습니다.
NBOOT – stepldr.nb0
TOC - 환경변수 설정파일 영역
EBOOT – Eboot.nb0
RESERVED – resvered 영역
IMAGE_START – OS(nk)가 위치한 영역
#define STEPLDR_RAM_IMAGE_SIZE
// Stepping Stone size is just 8Kbytes
// But Stepldr is fused in Block 0 that can hold 32KBytes in Small Block NAND
// and 128KBytes in Large Block NAND. So, we can define this value over original Stepping stone size.
//
와 같이 소블럭 nand는 block 사이즈가 32KB인데 mv6410에 들어있는 NAND는 대블럭 NAND를 사용하고 있습니다.
그래서 블록당 사이즈가 128KB입니다.
NAND는 메모리 interface가 아니고 IO interface를 하기 때문에 CPU 메모리 MAP 상에 없습니다.
그리고 데이터를 읽고 쓸 때 SDRAM에 복사를 해서 사용을 하게 됩니다. 그래서 NAND flash MAP과 OS에서 RAM에
위치한 메모리 MAP이랑 다릅니다.
// NAND Boot (loads into SteppingStone) @ Block 0
#define NBOOT_BLOCK 0
#define NBOOT_BLOCK_SIZE 1
#define NBOOT_SECTOR BLOCK_TO_SECTOR(NBOOT_BLOCK)
// TOC @ Block 1
#define TOC_BLOCK 1
#define TOC_BLOCK_SIZE 1
#define TOC_SECTOR BLOCK_TO_SECTOR(TOC_BLOCK)
// Eboot @ Block 2
#define EBOOT_BLOCK 2
#define EBOOT_SECTOR_SIZE FILE_TO_SECTOR_SIZE(EBOOT_RAM_IMAGE_SIZE)
#define EBOOT_BLOCK_SIZE SECTOR_TO_BLOCK(EBOOT_SECTOR_SIZE)
#define EBOOT_SECTOR BLOCK_TO_SECTOR(EBOOT_BLOCK)
#define RESERVED_BOOT_BLOCKS (NBOOT_BLOCK_SIZE + TOC_BLOCK_SIZE + EBOOT_BLOCK_SIZE)
// Images start after OEM Reserved Blocks
#define IMAGE_START_BLOCK RESERVED_BOOT_BLOCKS
#define IMAGE_START_SECTOR BLOCK_TO_SECTOR(IMAGE_START_BLOCK)