請教
讀取nandflash裡面的data需要特別注意什麼嗎?
目前我使用s3c2410.從vivi boot後跳到main(),我把圖片資料也一併複製到sdram上.
然後寫到framebuffer .LCD PANEL上顯示正常.但是考慮若是30幾張圖片一次複製到SDRAM.會耗時
蠻長的.我想省略複製到SDRAM的動作,需要秀圖時再直接從NAND FLASH讀取圖片資料.
試了多次,顯示出來的畫面是看的出人物風景,但是夾雜有規律性的水平白色線段.或規律的色點段.
我懷疑資料讀取錯誤或是有缺漏,或是MAKE完燒到NANDFLASH上的資料不是連續性存放...
請前輩們指導.是哪裡我疏忽了.
燒寫一張65536色圖片資料,size=320x240.data length=320x240x2bytes=153600 Bytes
我是用arm-elf-objdump -t 指令去抓圖片起始位址
程式是修改vivi Nand_read.c
/**********************************************
* Display NandFlash Image
***********************************************/
int Display_NandFlash_Image(unsigned long start_addr, unsigned int size)
{
unsigned int i=0,j=0,k=0,index=0;
unsigned int data=0;
unsigned char buf[153600];
/*
if ((start_addr & NAND_BLOCK_MASK) || (size & NAND_BLOCK_MASK)) {
return -1; // invalid alignment
}*/
/* chip Enable */
NFCONF &= ~0x800;
for(i=0; i<10; i++);
for(i=start_addr; i < (start_addr + size);) {
NFCMD = 0; /* READ0 */
/* Write Address */
NFADDR = i & 0xff;
NFADDR = (i >> 9) & 0xff;
NFADDR = (i >> 17) & 0xff;
NFADDR = (i >> 25) & 0xff;
wait_idle();
for(j=0; j < NAND_SECTOR_SIZE; j++, i++)
{
buf[index]= (NFDATA& 0xff);
index++;
}
}
/* chip Disable */
NFCONF |= 0x800; /* chip disable */
for(k=0;k<153600;k+=4)
{
data=(buf[k]<<24)|(buf[k+1]<<16)|(buf[k+2]<<8)|(buf[k+3]);
*(volatile unsigned int *)(0x31400000+k)=data;//frame buffer
}
}