[C] 纯文本查看 复制代码 usb_sts_type msc_disk_capacity(uint8_t lun, uint32_t *blk_nbr, uint32_t *blk_size)
{
uint32_t flash_s = *((uint32_t *)0x1FFFF7E0);
msc_flash_size = (flash_s << 10) - (USB_FLASH_ADDR_OFFSET - FLASH_BASE);
//flash_s 左移为实际芯片flash的大小
if(flash_s < 256)
{
sector_size = SECTOR_SIZE_1K;
}
else
{
sector_size = SECTOR_SIZE_2K;
}
switch(lun)
{
case INTERNAL_FLASH_LUN://INTERNAL_FLASH_LUN
*blk_nbr = msc_flash_size / sector_size;
*blk_size = sector_size;
break;
case SPI_FLASH_LUN://
[color=#ff0000] *blk_size = 512;//512
*blk_nbr = 8 * 1024 * 1024 / 512;//16* 1024 * 1024 / 512[/color]
break;
case SD_LUN:
break;
default:
break;
}
return USB_OK;
}
这个blk_size 与blk_nbr是值是怎么计算的?
例如现在外接SPI FLASH 型号为w25q64 实际容量为8MB。那这个blk_size是要取多少?是指一个sector的大小(那就是4K?)blk_nbr是用来计算扇区的个数吗?
|