硬汉嵌入式论坛

 找回密码
 立即注册
查看: 673|回复: 1
收起左侧

blk_size与blk_nbr怎么计算?

[复制链接]

24

主题

58

回帖

130

积分

初级会员

积分
130
发表于 2023-7-30 13:30:12 | 显示全部楼层 |阅读模式
[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是用来计算扇区的个数吗?

回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106771
QQ
发表于 2023-7-31 08:48:16 | 显示全部楼层
我这个就是W25Q64,供参考。

基于V6板子的SPI Flash文件系统+SPI Flash虚拟U盘例子下载
https://www.armbbs.cn/forum.php? ... 0006&fromuid=58
(出处: 硬汉嵌入式论坛)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-5 22:35 , Processed in 0.155269 second(s), 26 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表