Load sd卡的app的方法:
下面方法是我们开发板出厂的时候,就是从SD卡 load的应用程序
[mw_shl_code=c,true]int loadFlashAppbin(void)
{
const u8 *BIN_PATH="0:/MINI.BIN"; //UNIGBK.BIN的存放位置
u16 bread; u32 offx=0;
u8 rval=0;
FIL * fftemp;
u8 *tempbuf;
u8 res;
u32 i=0;
fftemp=(FIL*)mymalloc(sizeof(FIL)); //分配内存
if(fftemp==NULL)rval=1;
tempbuf=mymalloc(4096);
if(tempbuf==NULL)rval=1;//分配内存失败
res=f_open(fftemp,(const TCHAR*)BIN_PATH,FA_READ);
if(res) rval=2;//打开文件失败
LCD_ShowString(60,40,200,16,16,"Loading...!");
if(rval==0)
{
while(res==FR_OK)
{
res=f_read(fftemp,tempbuf,4096,(UINT *)&bread);
if(res!=FR_OK)
{rval=3;
break;
}
iap_write_appbin(offx+FLASH_APP1_ADDR,tempbuf,bread);//更新FLASH代码
offx+=bread;
i++;
if(i%10==0)
{
LCD_ShowString(60,(i/10)*20+40,200,16,16,"Loading...!");
LED0=0;
LED1=0;
delay_ms(100);
LED0=1;
LED1=1;
}
if(bread!=4096)
break;
}
}
f_close(fftemp);
myfree(fftemp); //释放内存
myfree(tempbuf); //释放内存
return rval;
}
[/mw_shl_code]
|