开发板: 飞凌6410 256M DDR 2G nand (4K pagesize)
需要csdn帐号和资源分才可以下载,其它朋友有需要可以QQ 67016879 或 lxj_com@163.com
移植好的uboot下载地址:http://download.csdn.net/source/3561490
三星IROM boot 文档:http://download.csdn.net/source/3561602
烧录工具下载:http://download.csdn.net/source/3561492
Raw data bmp 转换工具(PIC2RAW): http://www.mculee.cn/post/%E5%9B%BE%E7%89%87,bmp,raw,%E8%BD%AC%E6%8D%A2.html
移植说明:
1.支持SD/SDHC启动,相关文件:
2.烧录bin到SD卡:
3.SD卡驱动:
4.uboot1.1.6的FAT文件系统支持:
5.支持yaffs2烧录:
6.烧录uboot:
7.LCD显示支持:
8.修改开机白屏,默认背光是关闭的,framebuffer写好后,再开背光;
9.u-boot自动执行烧录命令:
补充:之前版本是按512字节每块读的,现在改为256K每块读,速度从读100M文件需要100秒提升到只需20秒,进5倍提示,
但是我设置成512K每块读,会出现数据丢失现象。
更新代码 cpu/s3c64xx/hs_mmc.c
void movi_read (uint addr, uint start_blk, uint blknum){
uint dma=0,cmd,multi_blk,i,count,spare;
/*Enable interrupt*/
s3c_hsmmc_writew(s3c_hsmmc_readw(HM_NORINTSTSEN) & ~(DMA_STS_INT_EN | BLOCKGAP_EVENT_STS_INT_EN), HM_NORINTSTSEN);
s3c_hsmmc_writew((HM_NORINTSIGEN & ~(0xffff)) | TRANSFERCOMPLETE_SIG_INT_EN, HM_NORINTSIGEN);
/*clear interrupt*/
ClearCommandCompleteStatus();
ClearDMAStatus();
ClearTransferCompleteStatus();
spare = blknum;
count = ( (blknum * Card_OneBlockSize_ver1) - 1 ) / (Card_OneBlockSize_ver1 * 512) + 1;
for(i=0;i
SetSystemAddressReg(addr); //AHB System Address For Write
addr += Card_OneBlockSize_ver1 * 512; //256K ++
set_blksize_register(6,Card_OneBlockSize_ver1); //Maximum DMA Buffer Size, Block Size
set_blkcnt_register((spare > 512) ? 512 : spare); //Block Numbers to read
/*Card Start Block Address to read*/
if (movi_hc){
set_arg_register(start_blk);
}else{
set_arg_register(start_blk*Card_OneBlockSize_ver1);
}
start_blk += 512;
dma = 1;
multi_blk = (spare > 1);
cmd = multi_blk ? 18 : 17;
if(spare>512){
spare -= 512;
}
/*CMD17 signle block, CMD18 mutil block read*/
set_transfer_mode_register(multi_blk,1,1,multi_blk,dma);
set_cmd_register(cmd,1,MMC_RSP_R1);
if (wait_for_cmd_done()){
printf("ERROR: Command NOT Complete\n");
goto error;
}
/*wait for transfer complete*/
check_dma_int();
error:
ClearCommandCompleteStatus();
ClearDMAStatus();
ClearTransferCompleteStatus();
}
return;
}