Y1ng 发表于 2023-7-30 13:30:12

blk_size与blk_nbr怎么计算?

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://
                *blk_size = 512;//512
                *blk_nbr = 8 * 1024 * 1024 / 512;//16* 1024 * 1024 / 512
      break;
    case SD_LUN:
      break;
    default:
      break;
}
return USB_OK;
}

这个blk_size 与blk_nbr是值是怎么计算的?
例如现在外接SPI FLASH 型号为w25q64 实际容量为8MB。那这个blk_size是要取多少?是指一个sector的大小(那就是4K?)blk_nbr是用来计算扇区的个数吗?

eric2013 发表于 2023-7-31 08:48:16

我这个就是W25Q64,供参考。

基于V6板子的SPI Flash文件系统+SPI Flash虚拟U盘例子下载
https://www.armbbs.cn/forum.php?mod=viewthread&tid=20006&fromuid=58
(出处: 硬汉嵌入式论坛)
页: [1]
查看完整版本: blk_size与blk_nbr怎么计算?