我经历的典型的U盘调试过程
扫描二维码
随时随地手机看文章
如果Step1到Step3都正常实现了,step4和step5也比较顺利,可以找到相应的盘符了。
其中Step1除了能完成串口还在pc找到了“无法识别的USB设备”,这是硬件完好的信息,下面的步骤都要基于这一个step;USB通讯协议中要求对端点的操作,Step2是对端点的调试,除了端点使能,端点还正常产生中断,信息由串口给出。Step3已经配置了设备的描述符,串口显示主机已经接受了设备提供的描述符,可以开始识别设备了;Step4开始处理标准的USB请求,在我们这里是标准的Mass Storage USB海量存储设备,因此主机进行读写端点可以按照正常标准的框架进行,pc可以通过端点和USB端点进行数据交换,此时主机的状态栏已经可以显示可以识别的图标,但仍没有相应的SCSI配置。Step5开始建立Bulk_Out端点数据处理框架。这一步完成了就可以对系统的SCSI命令进行解析和识别,进行相应的处理;到Step6就对SCSI命令进行处理,进而对flash进行读写操作;在这一步已经建立了相应的bulk_In数据处理机制,完成了数据的写入flash,续传,和设备的识别,因此在系统里已经可以看到相关组件了。
在这之后与flash建立了数据交换,但是还没有能顺利的格式化flash。其原因是要先用硬件进行格式化,因为第一次对新的flash进行数据交换,还没有相关的0扇区、保留扇区、文件分配表、根目录区等,Windows无法识别。
我们加上了format_Fat16Media()用代码直接硬格式化一次。(这个函数对应在代码的flash.hex中)此后Windows中可以找到相应的盘符,但是暂时还不能识别优盘的容量,也不能对该盘实施文件操作,运行Windows的格式化指令两次,系统已经辨认出了16M的Flash存储器,相关盘符也可以正常打开并进行文件读写删擦的工作。我们的16M优盘正确调试出来了。是不是很有成就感?