吉林大学北国之春BBS
标题:
8步骤轻松调试U盘不费力
[打印本页]
作者:
一首流年
时间:
2013-2-21 04:11
标题:
8步骤轻松调试U盘不费力
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 中去。
作者:
没有如果绝对爱
时间:
2013-2-21 11:14
这个问题很有用,不错
作者:
天花乱坠的时光
时间:
2013-2-21 16:15
好好学习了,真的不错哦
作者:
午夜的精灵
时间:
2013-2-21 19:13
恩,我觉得值得学习啊,顶你
欢迎光临 吉林大学北国之春BBS (http://jluol.com/)
Powered by Discuz! X3.4