硬件环境:
LPC2468U2口作为USB HOST
一个2G容量的U盘,标着是现代的,格式化成FAT16格式
移植了USBHostLite之后,运行到FAT_Init()函数,返回值不对了,跟踪进去看看,确实读出来的数据与应该读到的数据不符。
在此之前,已经验证另一个2G容量的U盘没问题。格式化多次,依然无果,用WinHEX查看两个盘的区别,有点区别,但是并不能说明问题。抓狂了半个小时,终于想起用DiskGenius查看一下,立马看出区别了:
这个“不能用”的U盘居然是用MBR分区的,而另一个盘没有,这时才知道,原来现代的这个盘,启动模式是USB-HDD的,而另一个启动模式是USB-FDD的,将现代的U盘转换为USB-FDD,格式化之后,接到系统上,运行到FAT_Init(),一切正常。
之前一个朋友说,NXP的USBHost有挑盘的现象,不知道是不是就是这个问题。那些Lite版的驱动,功能确实不完善。