VirtualBox从ST-Link/V2读到的序列号是乱码,在虚拟机设置中将ST-Link/V2添加到USB设备筛选器中,并编辑该筛选器将其序列号清空,就可以解决这个问题。
原文:http://blog.csdn.net/zoomdy/article/details/45765577
mingdu.zheng at gmail dot com
问题现象
试图在VirtualBox中挂载STMicroelectronics STM32 STLink设备时,会弹出如下对话框:
对话框显示:
不能分配 USB设备 STMicroelectronics STM32 STLink [0100] 到虚拟电脑
USB device ‘STMicroelectronics STM STLink’ with UUID {e14e050b-6e9c-4ce2-b506-f2e8795e4424} is busy with a previous request. Please try again later.
明细内容:
返回 代码:
E_INVALIDARG (0x80070057)
组件:
HostUSBDevice
界面:
IHostUSBDevice {173b4b44-d268-4334-a00d-b6521c9a740a}
被召者:
IConsole {8ab7c520-2442-4b66-8d74-4ff1e195d2b6}
这种错误出现在Host OS是Windows的情况。
解决办法
打开虚拟机设置,选择 USB设备 分类,点击右边带加号的按钮,在弹出菜单中选择 STMicroelectronics STM32 STLink [0100] (仅在已经插入ST-Link的情况下才会有,如果没有这一项,请先将ST-Link插入您的电脑),这将创建一个新的 USB设备筛选器 ;选中刚创建的筛选器,点击右边带圆圈的按钮,弹出 USB筛选器明细 ,可以看到 序列号(S) 输入框内的字符串为乱码,将该输入框内的所有字符清空,点击 确定 保存筛选器。重新启动虚拟机后,ST-Link已正常挂载到了Guest OS中。
Host OS为Linux的情况
当Host OS为Linux时,如果是通过虚拟机菜单 设备>>分配USB设备 挂载的是没有问题的,如果是在设置对话框中通过 USB设备筛选器 挂载的,那么下次打开虚拟机控制台时会报告 .vbox 文件错误,.vbox是xml文件,但是添加了ST-Link设备筛选器后,它的一些信息(包括序列号)会写入到.vbox文件,ST-Link的序列号是乱码,因此这个.vbox里面就包含了乱码。因此如果通过 USB设备筛选器 挂载,也应当将序列号清空,如果已经出现了报告.vbox文件错误的情况,那么用文本编辑打开.vbox文件,将报错的那一行的乱码字符串删除变成空字符串即可。
的博客保存到服务器草稿箱,即使换浏览器或者清除缓存,内容也不会丢失。