中级会员
 
- 积分
- 404
- 金钱
- 404
- 注册时间
- 2014-3-6
- 在线时间
- 41 小时
|
5金钱
u8 updata_fontx(u8 *fxpath,u8 fx)
{。。
u32 flashaddr=0;
u32 tempsys[2];
FIL * fftemp;
u8 res;
u16 bread;
u32 offx=0;
fftemp=&gbkFile;
if(fftemp==NULL)return 1;
res=f_open(fftemp,(const TCHAR*)fxpath,FA_READ);
if(res)//
{
f_close(fftemp);
return 2;//???????§
}
if(fftemp==NULL)return 2;
if(fx==0)//?ü??UNI2GBK.SYS
{
tempsys[0]=ftinfo.ugbkaddr; //UNIGBK??·????·
tempsys[1]=fftemp->fsize; //UNIGBK ?ó??
SPI_Flash_Write((u8*)tempsys,FONTINFOADDR,8); //?????????·FONTINFOADDR+1~8??
flashaddr=ftinfo.ugbkaddr;
}else//GBK16
{
SPI_Flash_Read((u8*)tempsys,FONTINFOADDR,8);
tempsys[0]=flashaddr; //
tempsys[1]=fftemp->fsize; //GBK16 ?ó??
SPI_Flash_Write((u8*)tempsys,FONTINFOADDR+8,8); //?????????·FONTINFOADDR+1~8+16??
}
while(res==FR_OK)//
{
res=f_read(fftemp,temp,1024,(UINT *)&bread);
if(res!=FR_OK)break;
SPI_Flash_Write(temp,offx+flashaddr,1024);//
offx+=bread;
fupd_prog(fftemp->fsize,offx); //
if(bread!=1024)break; //
}
}为什么到最后了会有这一段,还有就是不理解“if(bread!=1024)break;”这一句,我追踪到f_read()函数里边,但是也找不到原因,难道一定要等到bread不能与1024就结束吗,那一开始bread等于多少,它有事怎么变化的!!
|
最佳答案
查看完整内容[请看2#楼]
回复【3楼】春和景明:
---------------------------------
因为字库是从SD卡更新到外部FLASH
自然是读取SD卡数据,写入到SPI FLASH了。
每次读1024字节。
如果读取的数据,少于1024字节了,说明这个文件读完了,也就可以退出while循环了。
|