Jelajahi Sumber

rename CONFIG_USBDEV_MSC_BLOCK_SIZE to CONFIG_USBDEV_MSC_MAX_BUFSIZE

sakumisu 2 tahun lalu
induk
melakukan
249e650c37

+ 2 - 2
cherryusb_config_template.h

@@ -45,8 +45,8 @@
 /* Enable test mode */
 // #define CONFIG_USBDEV_TEST_MODE
 
-#ifndef CONFIG_USBDEV_MSC_BLOCK_SIZE
-#define CONFIG_USBDEV_MSC_BLOCK_SIZE 512
+#ifndef CONFIG_USBDEV_MSC_MAX_BUFSIZE
+#define CONFIG_USBDEV_MSC_MAX_BUFSIZE 512
 #endif
 
 #ifndef CONFIG_USBDEV_MSC_MANUFACTURER_STRING

+ 6 - 6
class/msc/usbd_msc.c

@@ -43,7 +43,7 @@ USB_NOCACHE_RAM_SECTION struct usbd_msc_priv {
     uint16_t scsi_blk_size;
     uint32_t scsi_blk_nbr;
 
-    USB_MEM_ALIGNX uint8_t block_buffer[CONFIG_USBDEV_MSC_BLOCK_SIZE];
+    USB_MEM_ALIGNX uint8_t block_buffer[CONFIG_USBDEV_MSC_MAX_BUFSIZE];
 
 #if defined(CONFIG_USBDEV_MSC_THREAD)
     usb_osal_mq_t usbd_msc_mq;
@@ -554,7 +554,7 @@ static bool SCSI_write10(uint8_t **data, uint32_t *len)
         return false;
     }
     g_usbd_msc.stage = MSC_DATA_OUT;
-    data_len = MIN(data_len, CONFIG_USBDEV_MSC_BLOCK_SIZE);
+    data_len = MIN(data_len, CONFIG_USBDEV_MSC_MAX_BUFSIZE);
     usbd_ep_start_read(mass_ep_data[MSD_OUT_EP_IDX].ep_addr, g_usbd_msc.block_buffer, data_len);
     return true;
 }
@@ -583,7 +583,7 @@ static bool SCSI_write12(uint8_t **data, uint32_t *len)
         return false;
     }
     g_usbd_msc.stage = MSC_DATA_OUT;
-    data_len = MIN(data_len, CONFIG_USBDEV_MSC_BLOCK_SIZE);
+    data_len = MIN(data_len, CONFIG_USBDEV_MSC_MAX_BUFSIZE);
     usbd_ep_start_read(mass_ep_data[MSD_OUT_EP_IDX].ep_addr, g_usbd_msc.block_buffer, data_len);
     return true;
 }
@@ -640,7 +640,7 @@ static bool SCSI_processRead(void)
 
     USB_LOG_DBG("read lba:%d\r\n", g_usbd_msc.start_sector);
 
-    transfer_len = MIN(g_usbd_msc.nsectors * g_usbd_msc.scsi_blk_size, CONFIG_USBDEV_MSC_BLOCK_SIZE);
+    transfer_len = MIN(g_usbd_msc.nsectors * g_usbd_msc.scsi_blk_size, CONFIG_USBDEV_MSC_MAX_BUFSIZE);
 
     if (usbd_msc_sector_read(g_usbd_msc.start_sector, g_usbd_msc.block_buffer, transfer_len) != 0) {
         SCSI_SetSenseData(SCSI_KCQHE_UREINRESERVEDAREA);
@@ -677,7 +677,7 @@ static bool SCSI_processWrite(uint32_t nbytes)
     if (g_usbd_msc.nsectors == 0) {
         usbd_msc_send_csw(CSW_STATUS_CMD_PASSED);
     } else {
-        data_len = MIN(g_usbd_msc.nsectors * g_usbd_msc.scsi_blk_size, CONFIG_USBDEV_MSC_BLOCK_SIZE);
+        data_len = MIN(g_usbd_msc.nsectors * g_usbd_msc.scsi_blk_size, CONFIG_USBDEV_MSC_MAX_BUFSIZE);
         usbd_ep_start_read(mass_ep_data[MSD_OUT_EP_IDX].ep_addr, g_usbd_msc.block_buffer, data_len);
     }
 
@@ -883,7 +883,7 @@ struct usbd_interface *usbd_msc_init_intf(struct usbd_interface *intf, const uin
 
     usbd_msc_get_cap(0, &g_usbd_msc.scsi_blk_nbr, &g_usbd_msc.scsi_blk_size);
 
-    if (g_usbd_msc.scsi_blk_size > CONFIG_USBDEV_MSC_BLOCK_SIZE) {
+    if (g_usbd_msc.scsi_blk_size > CONFIG_USBDEV_MSC_MAX_BUFSIZE) {
         USB_LOG_ERR("msc block buffer overflow\r\n");
         return NULL;
     }

+ 3 - 4
docs/source/api/api_config.rst

@@ -51,12 +51,11 @@ CONFIG_USBDEV_TEST_MODE
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 使能或者关闭 usb test mode
 
-CONFIG_USBDEV_MSC_BLOCK_SIZE
+CONFIG_USBDEV_MSC_MAX_BUFSIZE
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
-msc 临时缓存的大小,缓存越大,msc 的速度越高,默认等于 1个内存介质的扇区大小(例如 sd卡 512,flash 4K),更改时需要是内存介质扇区的倍数。
-
-虽然名字叫 block size,但是跟内存介质的 block size不是一个意思。
+msc 缓存的最大长度,缓存越大,USB 的速度越高,因为介质一般多个 block 读写速度比单个 block 高很多,比如 sd 卡。
+默认 512 ,如果是 flash 需要改成 4K, 缓存的大小需要是 介质的一个 block size 的整数倍。
 
 CONFIG_USBDEV_MSC_MANUFACTURER_STRING
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

+ 1 - 1
docs/source/demo/msc_ram.rst

@@ -35,7 +35,7 @@ USB 模拟 U 盘
     }
 
 - 实现三个接口即可使用 msc,读写操作如果没有 os 则是在中断中
-- `CONFIG_USBDEV_MSC_BLOCK_SIZE` 可以为 512 的整数倍,更改此项,可以增加 msc 的读写速度,当然,也会消耗更多的 ram
+- `CONFIG_USBDEV_MSC_MAX_BUFSIZE` 可以为 512 的整数倍,更改此项,可以增加 msc 的读写速度,当然,也会消耗更多的 ram
 
 
 .. note:: MSC 一般配合 rtos 使用,因为读写操作是阻塞的,放中断是不合适的, `CONFIG_USBDEV_MSC_THREAD` 则是使能 os 管理