现已在AT32F403A上实现了文件系统挂载,将FAL分区filesys挂载为elm文件系统;同时也移植了CherryUSB并实现了U盘功能。但是文件系统和U盘使用的是基于同一FAL分区创建的块设备,致使二者不能同时工作。使用CherryUSB怎样实现U盘动态挂载和卸载呢?即在不插USB线时,挂载文件系统,应用可正常使用文件系统,当插入USB线时,动态卸载文件系统并挂载U盘,当弹出U盘或插出USB线时,再动态地卸载U盘并挂载文件系统。自己偿试在CherryUSB的事件回调usbd_event_handler中完成以上操作,但没成功,相关代码执行不到。是CherryUSB不支持动态加载吗?
/* assume the block device is 512M */
#define BLOCK_DEV_NAME "filesys"
#define BLOCK_SIZE 4096
#define BLOCK_COUNT (7 * 1024 * 1024 / BLOCK_SIZE)
static rt_device_t blk_dev = RT_NULL;
static void usbd_event_handler(uint8_t busid, uint8_t event)
{
switch (event) {
case USBD_EVENT_RESET:
break;
case USBD_EVENT_CONNECTED:
//卸载文件系统
//挂载U盘
break;
case USBD_EVENT_DISCONNECTED:
//卸载U盘
//挂载文件系统
break;
case USBD_EVENT_RESUME:
break;
case USBD_EVENT_SUSPEND:
break;
case USBD_EVENT_CONFIGURED:
break;
case USBD_EVENT_SET_REMOTE_WAKEUP:
break;
case USBD_EVENT_CLR_REMOTE_WAKEUP:
break;
default:
break;
}
}
有不依赖外部检测电路实现动态加载U盘的办法吗?
购买hpm 芯片,IP 自带@红枫