创龙科技
直播中

李华

7年用户 1367经验值
私信 关注

请问在C6748开发板如何实现USB读卡器功能?

目标:将C6748开发板枚举成MSC设备,电脑通过USB读取开发板上的SD卡。
实现的基本思路:
1.在USB_DEV_MSC例程基础上修改,将其中的disk_read(),disk_write(),disk_initialize(),disk_ioctl()这几个函数映射到SD卡操作上。
2.上述4个函数的功能实现,参考不带BIOS的MMCSD例程。

回帖(16)

h1654155275.5842

2019-10-16 07:27:44
可以这样啊
举报

李森

2019-10-16 07:46:10


因为我开发的产品程序是基于BIOS的,产品主要的功能已经实现,因此其他的功能也必须在BIOS下实现。
现在还差一个功能,就是连接PC后,让PC将产品识别为U盘。

我已经在BIOS下成功实现了48M虚拟U盘,其中48M就是USB_DEV_MSC中映射到内存上的空间。
在将disk_read(),disk_write(),disk_initialize(),disk_ioctl()这4个函数映射到SD卡操作时遇到了问题。
我本来想直接使用FatFs中的函数,但是在FatFs中这几个函数可能用到了信号量,而调用它们的上层函数USBDMSCStorageRead,USBDMSCStorageWrite,USBDMSCStorageNumBlocks可能是在ISR中执行的。最后就只能移植不带BIOS的MMCSD例程中的实现函数来实现disk_read()等4个函数。

通过上述方法,实现了所需要的USB读卡器功能。
举报

李青

2019-10-16 07:53:48
在实现USB读卡器过程中,分析USB_DEV_MSC例程可知,只需要实现几个底层函数,即文件u***dmscglue.c中的5个函数:
USBDMSCStorageOpen(),打开MSC设备
USBDMSCStorageClose(),关闭MSC设备
USBDMSCStorageRead(),读块
USBDMSCStorageWrite(),写块
USBDMSCStorageNumBlocks(),获取总的块数量

事实上,前两个函数只是对标志变量进行操作,因为SD卡的初始化操作在进行USB枚举前已经进行过了。
只需要实现后面3个函数即可。


我想知道的是楼主移植 USB 驱动库到 SYS/BIOS 并能够正常运行了么?这个是一个难点哦 
举报

张春梅

2019-10-16 08:13:41
引用: shan812 发表于 2019-10-16 08:35
我想知道的是楼主移植 USB 驱动库到 SYS/BIOS 并能够正常运行了么?这个是一个难点哦 


我想知道的是楼主移植 USB 驱动库到 SYS/BIOS 并能够正常运行了么?这个是一个难点哦
举报

更多回帖

发帖
×
20
完善资料,
赚取积分