发新帖

8步骤轻松调试U盘不费力

[复制链接]
989 3 打印 上一主题 下一主题

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册

x
u盘调试的主要步骤和内容

usb 设备端的固件分以下几个层次:

main.c 进行各种初始化操作、寄存器设置、中断设置

fat16.c flash.c 负责按照fat16 文件系统的组织向flash 中写入数据或是从flash 中读出数据

chap9.c bulk-only.c 完成不同的中断请求,chap9 完成来自端点0 的usb 标准设备请求,bulk-only 完成来自批量模式端点的mass storage bulk-only 传输中断请求

isr.c 中断服务程序,负责将不同类型的中断转向一同的地方

d12ci.c 函数化的d12 的命令集合,可以直接调用这些函数,而不必再自己根据手册查每个命令的代码另外,此文件中包括一些与硬盘有关的地址定义在调试的时候,从现象上来看,分成以下几个阶段性的步骤:

1、usb 芯片正常工作,可以实现软连接,此时pc 机上会出现“未知设备类型”的usb 设备;

2、使用他人已经高度成功的usb 通用接口,按普通usb 设备提供描述符,提供正确的vid 和pid 后,pc 能够识别设备,但要求提供设备的驱动程序;

3、安装驱动程序后,调试几个端点,使其均可传输数据,用pc 端的测试程序对其进行测试,验证硬件及固件的正确性;

4、按mass storagebulk-only 模式提供描述符,pc 机上设备类型变成mass storage device;

5、响应了bulk-only 的inquiry 命令,可以出现盘符了,但尚无法访问磁盘;

6、提供了其他所有的ufi命令(scsi 子集),开始读取磁盘0 扇区(bpb 区)的内容,按照fat16 的格式格式化flash,可以正确读取信息,可以访问盘符,列目录为空;

7、创建文件时,向设备发出write 命令,调整flash 的读写问题,解决写某几个扇区要先保存整个簇的内容,然后擦除整簇,再回写,可以正常创建文件;

8、完成最后的调试,u 盘高度完毕。

在此基础上,还需要提供支持fat16 的文件系统接口函数,比如,可以从fat16 中读取文件,可以创建文件并将其保存到fat16 中去。

精彩评论3

沙发
没有如果绝对爱  新手上路  发表于 2013-2-21 11:14:01 | 只看该作者
这个问题很有用,不错
3
天花乱坠的时光  新手上路  发表于 2013-2-21 16:15:29 | 只看该作者
好好学习了,真的不错哦
4
午夜的精灵  新手上路  发表于 2013-2-21 19:13:20 | 只看该作者
恩,我觉得值得学习啊,顶你
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表