中级会员
 
- 积分
- 313
- 金钱
- 313
- 注册时间
- 2014-10-27
- 在线时间
- 34 小时
|
5金钱
不好意思,原先没注意,把求助帖发成分享帖了。重新发下,希望各位见谅。
开发板:战舰 Flash:W25Q64(8M)
在FATFS试验中:前6M给FATFS,6M~6M+500K给用户,6M+500K以后用于存储字库
问题一:
我想问这个前6M给FATFS是如何实现的,是不是通过下面这两步:
第一步:u16 FLASH_SECTOR_COUNT=2048*6;
第二步:
DRESULT disk_ioctl (
BYTE drv, /* Physical drive nmuber (0..) */
BYTE ctrl, /* Control code */
void *buff /* Buffer to send/receive control data */
)
{
DRESULT res;
if(drv==SD_CARD)//SD卡
{
switch(ctrl)
{
case CTRL_SYNC:
SD_CS=0;
if(SD_WaitReady()==0)res = RES_OK;
else res = RES_ERROR;
SD_CS=1;
break;
case GET_SECTOR_SIZE:
*(WORD*)buff = 512;
res = RES_OK;
break;
case GET_BLOCK_SIZE:
*(WORD*)buff = 8;
res = RES_OK;
break;
case GET_SECTOR_COUNT:
*(DWORD*)buff = SD_GetSectorCount();
res = RES_OK;
break;
default:
res = RES_PARERR;
break;
}
}else if(drv==EX_FLASH) //外部FLASH
{
switch(ctrl)
{
case CTRL_SYNC:
res = RES_OK;
break;
case GET_SECTOR_SIZE:
*(WORD*)buff = FLASH_SECTOR_SIZE;
res = RES_OK;
break;
case GET_BLOCK_SIZE:
*(WORD*)buff = FLASH_BLOCK_SIZE;
res = RES_OK;
break;
case GET_SECTOR_COUNT:
*(DWORD*)buff = FLASH_SECTOR_COUNT; //这一步也不能缺少???????????????????????????????????????
res = RES_OK;
break;
default:
res = RES_PARERR;
break;
}
}else res=RES_ERROR;//其他的不支持
return res;
}
我看程序的时候好像没有其它地方还涉及到这个前6M。
问题二:
就是综合实验中,一开始会读取flash总容量,这边应该是属于FATFS管理的容量吧,频幕上显示为6124KB,使用的函数是res=exf_getfree("1:",&dtsize,&dfsize);6M应该是6*1024=6144KB?
问题三:
我在综合试验中改变u16 FLASH_SECTOR_COUNT=2048*6;这个值,为什么读出来的值还是6124KB?
|
|