我们的设备上采用的是2G的NAND FLASH外加一个SD卡,三星提供的BSP和相关文档上说设备作为MASS STORAGE时,同时只能将其中一个作为MASS STORAGE连接到PC上,我们想连接PC的时候同时显示这两个存储空间,目前的候选方案是在应用程序上进行一些设置,进行切换选择显示不同的存储空间。我看到有些MP4也是同时只能显示一个存储空间,也是通过软件设置选择的,这是目前比较难解决的问题吗?
请问谁有没有什么好的解决办法可以同时将NAND FLASH和SD卡作为MASS STORAGE连接到PC机上呢?
谢谢!
------解决方案--------------------
当然可以做到。要修改驱动。我记得好像掌微的A3方案,就实现了这个,你可以找它的驱动参考一下。
------解决方案--------------------
可以做到的,我们的设备就支持
要修改Public下面的一些代码,应该不会很复杂
------解决方案--------------------
其实这是个很好的讨论贴的,怎么之前没注意呢。
先想想pc上,移动硬盘如果分多于1个分区,肯定是能认出来的。
从USB设备整体架构看,跟USB协议无关,跟windows环境无关。
那么就应该是跟底层的硬件控制器(包含firmware或者说驱动)有关。
针对wince来说,应该就是mass storage协议直接相关,而且是跟MDD层相关。
MDD层如果只提供一个接口,将一个设备(device)作为Mass Storage提交,那么就只能挂一个。
如果在这个结构下需要挂两个,就必须修改MDD层,允许提交多于一个的设备。
对这层没研究过,只是猜想。lx继续。
------解决方案--------------------
to Veabol , 最近比较忙,没时间帮你具体看了,下面我写了比较重要的几点,将就着看吧。
1,发送序列号:
static LPCWSTR g_rgpszStrings0409[] = {
g_RegInfo.szVendor, g_RegInfo.szProduct, L"14273211-1575-4252-9161-419514811863"
};
static UFN_STRING_SET g_rgStringSets[] = {
0x0409, g_rgpszStrings0409, dim(g_rgpszStrings0409)
};
2,修改g_bScratch变量,
g_bScratch=0x1 (表示支持两个LUN(logical unit number))
3,在STORE_Init中初始化两个Store,记住一定要将这些Store dismount掉。
4,在CSW中有个bCBWLUN表示这个CSW命令要发给哪个LUN
(LUN 从 0开始)。可以在BOT_HandleCBW这个函数中得到截获LUN的值,
然后用BOT_ExecuteCB这个函数来执行host端发送的命令,这些命令有可能是读、写等等。