@@ -109,7 +109,7 @@ static void usbd_event_handler(uint8_t busid, uint8_t event)
109109 }
110110}
111111
112- #if !defined(RT_CHERRYUSB_DEVICE_TEMPLATE_MSC_BLKDEV ) && !defined(PKG_CHERRYUSB_DEVICE_TEMPLATE_MSC_BLKDEV )
112+ #if !defined(RT_CHERRYUSB_DEVICE_MSC_BLKDEV ) && !defined(PKG_CHERRYUSB_DEVICE_MSC_BLKDEV )
113113#define BLOCK_SIZE 512
114114#define BLOCK_COUNT 10
115115
@@ -138,58 +138,19 @@ int usbd_msc_sector_write(uint8_t busid, uint8_t lun, uint32_t sector, uint8_t *
138138 memcpy (mass_block [sector ].BlockSpace , buffer , length );
139139 return 0 ;
140140}
141- #else
142- #include <rtthread.h>
143- #include <rtdevice.h>
144-
145- #ifndef CONFIG_USBDEV_MSC_THREAD
146- #error "Please enable CONFIG_USBDEV_MSC_THREAD, move msc read & write from isr to thread"
147- #endif
148-
149- #ifndef CONFIG_USBDEV_MSC_BLOCK_DEV_NAME
150- #define CONFIG_USBDEV_MSC_BLOCK_DEV_NAME "sd0"
151- #endif
152-
153- static rt_device_t blk_dev = RT_NULL ;
154- struct rt_device_blk_geometry geometry = { 0 };
155-
156- void usbd_msc_get_cap (uint8_t busid , uint8_t lun , uint32_t * block_num , uint32_t * block_size )
157- {
158- rt_device_control (blk_dev , RT_DEVICE_CTRL_BLK_GETGEOME , & geometry );
159-
160- * block_num = geometry .sector_count ;
161- * block_size = geometry .bytes_per_sector ;
162- }
163-
164- int usbd_msc_sector_read (uint8_t busid , uint8_t lun , uint32_t sector , uint8_t * buffer , uint32_t length )
165- {
166- rt_device_read (blk_dev , sector , buffer , length / geometry .bytes_per_sector );
167- return 0 ;
168- }
169-
170- int usbd_msc_sector_write (uint8_t busid , uint8_t lun , uint32_t sector , uint8_t * buffer , uint32_t length )
171- {
172- rt_device_write (blk_dev , sector , buffer , length / geometry .bytes_per_sector );
173- return 0 ;
174- }
175141#endif
176142
177143static struct usbd_interface intf0 ;
178144
179145void msc_ram_init (uint8_t busid , uintptr_t reg_base )
180146{
181- #if defined(RT_CHERRYUSB_DEVICE_TEMPLATE_MSC_BLKDEV ) || defined(PKG_CHERRYUSB_DEVICE_TEMPLATE_MSC_BLKDEV )
182- rt_err_t res ;
183-
184- blk_dev = rt_device_find (CONFIG_USBDEV_MSC_BLOCK_DEV_NAME );
185- RT_ASSERT (blk_dev );
186-
187- res = rt_device_open (blk_dev , RT_DEVICE_OFLAG_RDWR );
188- RT_ASSERT (res == RT_EOK );
189- #endif
190147 usbd_desc_register (busid , & msc_ram_descriptor );
191-
148+ #if defined(RT_CHERRYUSB_DEVICE_MSC_BLKDEV ) || defined(PKG_CHERRYUSB_DEVICE_MSC_BLKDEV )
149+ extern void usbd_msc_blkdev_init (uint8_t busid , uint8_t in_ep , uint8_t out_ep );
150+ usbd_msc_blkdev_init (busid , MSC_IN_EP , MSC_OUT_EP );
151+ #else
192152 usbd_add_interface (busid , usbd_msc_init_intf (busid , & intf0 , MSC_OUT_EP , MSC_IN_EP ));
153+ #endif
193154
194155 usbd_initialize (busid , reg_base , usbd_event_handler );
195156}
0 commit comments