资源简介
目录
第一章 绪论 1
1.1 PC接口简介 1
1.2 USB 接口分析 1
1.3 USB 器件的选择 1
1.4 MASS STORAGE协议与FAT16文件系统 2
第二章 USB总线结构 3
2.1 总线拓扑结 3
2.2 USB设备 3
2.2.1 USB HUB 4
2.2.2 即插即用 5
2.2.3 设备电源 6
2.2.4 设备的挂起 6
2.3 USB主机 6
2.4 USB数据流 7
2.5 USB的端点 9
第三章 协议 12
3.1 MASS STORAGE 协议 12
3.2 BULK-ONLY传输协议 16
3.3 SCSI指令集 18
3.4 FAT16 文件系统 21
3.4.1 FAT 文件系统结构 21
3.4.2 Flash盘的FAT结构 26
第四章 程序实现与调试 29
4.1 固件程序的实现 29
4.1.1 主循环——MAINLOOP.C 29
4.1.2 中断服务程序——D12ISR.C 29
4.1.3 标准设备请求处理——D12SETUP.C 33
4.1.4 NAND FLASH操作程序——NFLASH32.C 38
4.2 固件调试 42
4.2.1 检查USB器件是否正常工作 42
4.2.2 设备枚举 43
4.2.3 BULK_ONLY传输协议命令处理 43
4.2.4 FLASH的读写 45
结论 46
致谢 47
参考文献 48
附录 49
附录 A USB接口芯片命令总汇 49
A1.初始化命令 50
A2.数据流命令 54
A3.数据流命令 59
附录 B U盘固件程序源码清单 60
代码片段和文件信息
/*++
Module Name:
D12ISR.c
Abstract:
Header file related to D12 module
Environment:
ICCAVR 6.29
Revision History:
04/23/2004 chenchi created
--*/
/******************************************************************/
#include “io8515v.h“
#include “d12.h“
/************************************************************
**工程名称:U盘固件程序开发
**编译器类型及版本:ICCAVR 6.29
**日期:2004.4.30
**创建人:陈驰
**所属单位:湖南大学计算机与通信学院
**芯片类型:AT90S8515PDIUSUD12K9F5608U0A-YCB0
**时钟频率:8MHZ
**函数功能:中断服务处理
**函数输入参数及说明:无
**函数返回值:无
**在本函数以外定义的变量:D12_COMMANDD12_DATA
**调用的函数说明:
Setup_control():枚举控制函数
USB_submit():控制端点提交函数
Bulk_Out_Pack(j):处理PC发送的批量传输包
Bulk_In_Packet():回应批量传输包
void bus_reset(void):总线重置
void dma_eot(void):Dma 操作结束
**修改人:陈驰
**修改日期:2004.4.30
**修改说明:创建
*************************************************************/
void D12_ISR(void)
{
unsigned char ij;
D12_COMMAND = 0xf4;// 读中断寄存器
cwait1;
i=D12_DATA;//读取数据赋值给局部变量i
csram;
if(i & 0x01)//处理控制输出端点
{
D12_COMMAND = 0x40;//读最后状态
cwait1;
i= D12_DATA;//从端点缓冲区读取数据
csram;
if (i & 0x20) //收到SETUP包
{
Setup_control();//枚举控制函数
}
}else if(i & 0x02)//处理控制输入端点
{
D12_COMMAND = 0x41;//读最后状态
cwait1;
i = D12_DATA;//从端点缓冲区读取数据
csram;
USB_submit();//控制端点提交函数
}else if(i & 0x04)//处理端点1输出
{
}else if(i & 0x08)//处理端点1输入
{
}else if(i & 0x10)//处理批量输出端点
{
D12_COMMAND = 0x44;//读最后状态
cwait;
i = D12_DATA;
csram;
D12_COMMAND = 0x04;//选择端点(指针指向0位置)
cwait;
D12_COMMAND = 0xf0;//读缓冲区
/****************************
缓冲区数据结构:
字节1:保留可为任意值
字节2:数据字节的数目/长度
字节3:数据字节1
字节4:数据字节2
*****************************/
cwait1;
j=D12_DATA;//字节1
cwait1;
j=D12_DATA;//字节2
csram;
Bulk_Out_Packet(j);//处理PC发送的批量传输包
}
else if(i & 0x20)//处理批量输入端点
{
D12_COMMAND = 0x45;//读 in 最后状态
cwait1;
i = D12_DATA;
cwait1;
csram;
Bulk_In_Packet();//回应批量传输包
}else if(i & 0x80)//D12_INT_SUSPENDCHANGE D12挂起
{
}else if(i & 0x40)//D12_INT_BUSRESET总线复位
{
bus_reset();//总线重置
}else
{
i=D12_DATA; //D12_INT_EOT DMA操作已结束
if(i & 0x01)
{
dma_eot();//Dma 操作结束
}
}
}
void bus_reset(void)//总线重置函数
{
}
void dma_eot(void)//Dma 操作结束函数
{
}
/************************************************************
**工程名称:U盘固件程序开发
**编译器类型及版本:ICCAVR 6.29
**日期:2004.4.30
**创建人:陈驰
**所属单位:湖南大学计算机与通信学院
**芯片类型:AT90S8515PDIUSUD12K9F5608U0A-YCB0
**时钟频率:8MHZ
**函数功能:控制端点传输提交
**函数输入参数及说明:无
**函数返回值:无
**在本函数以外定义的变量:传输结构体
**调用的函数说明:无
**修改人:陈驰
**修改日期:2004.4.30
**修改说明:创建
*************************************************************/
void USB_submit(void)
{
unsigned char ijk;
/*********说明******************
D12芯片数据手册上说明控制端点
缓冲区大小为16BYTES使用时试用
64BYTES可以完成传输这里故用64
来处理
*******************************/
if(64 > XmtBuff.wrLength)
{
j = XmtBuff.wrLength;
}else
{
j = 64;
}
D12_CO
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 4096 2004-05-08 17:11 USB通信程序开发\源代码\Avr_Usb_Disk.IMB
文件 368 2004-05-08 17:11 USB通信程序开发\源代码\Avr_Usb_Disk.IMD
文件 4096 2004-05-08 17:11 USB通信程序开发\源代码\Avr_Usb_Disk.IAB
文件 368 2004-05-08 17:11 USB通信程序开发\源代码\Avr_Usb_Disk.IAD
文件 3632 2004-05-17 21:31 USB通信程序开发\源代码\Avr_Usb_Disk.PR
文件 27860 2004-06-17 15:28 USB通信程序开发\源代码\Avr_Usb_Disk.PS
文件 40 2004-06-14 14:33 USB通信程序开发\源代码\Avr_Usb_Disk.PFI
文件 776 2004-06-14 14:33 USB通信程序开发\源代码\Avr_Usb_Disk.PO
文件 1607 2004-05-18 21:01 USB通信程序开发\源代码\Scsi.h.bak
文件 5562 2004-06-01 03:07 USB通信程序开发\源代码\D12ISR.c
文件 20752 2004-05-17 21:31 USB通信程序开发\源代码\Avr_Usb_Disk.PRI
文件 5560 2004-05-18 11:59 USB通信程序开发\源代码\D12ISR.c.bak
文件 3101 2004-05-18 20:10 USB通信程序开发\源代码\D12Setup.h.bak
文件 5561 2004-05-19 16:44 USB通信程序开发\源代码\D12ISR._c
文件 868 2004-05-19 16:44 USB通信程序开发\源代码\Avr_Usb_Disk.prj
文件 139 2004-05-18 09:57 USB通信程序开发\源代码\AVR_USB_DISK.SRC
文件 1090 2004-05-19 16:44 USB通信程序开发\源代码\Avr_Usb_Disk.mak
文件 51 2004-05-19 16:44 USB通信程序开发\源代码\Avr_Usb_Disk.lk
文件 73 2004-05-19 16:40 USB通信程序开发\源代码\MainLoop.dp2
文件 33493 2004-05-19 16:01 USB通信程序开发\源代码\Scsi.s
文件 47 2004-05-19 16:44 USB通信程序开发\源代码\D12ISR.dp2
文件 3024 2004-05-19 16:39 USB通信程序开发\源代码\D12Setup.h
文件 8665 2003-08-20 18:01 USB通信程序开发\源代码\io8515v.h
文件 70 2004-05-19 16:01 USB通信程序开发\源代码\D12Setup.dp2
文件 109 2004-05-19 16:01 USB通信程序开发\源代码\Scsi.dp2
文件 6736 2004-05-19 16:44 USB通信程序开发\源代码\D12ISR.o
文件 3110 2004-05-19 16:40 USB通信程序开发\源代码\MainLoop.s
文件 11666 2004-06-02 09:33 USB通信程序开发\源代码\D12Setup.c
文件 7416 2004-05-19 16:40 USB通信程序开发\源代码\MainLoop.lis
文件 12719 2004-05-19 16:44 USB通信程序开发\源代码\D12ISR.s
............此处省略40个文件信息
- 上一篇:活动演出演唱会票务网页模板
- 下一篇:飞机大战图片
相关资源
- 大话无线通信 epub
- Optilux光通信仿真资源包
- ILMergeGUI 合并多个.net程序集和exe文件
- 数字通信讲义 数字通信讲义
- STM32F103C8 虚拟示波器 源码全套资料
- STM32单片机实现Modbus协议主机2个源码
- STM32F103C6T6做的USB转RS232模块图纸源码
- 最新彩虹代刷网站源码4.8全解密版源
- souyun搜云、ajax\\sgk社工库源码
- S5P6818裸机系列教程源码
- exynos4412裸机系列教程源码
- 手机阅读源码
- wince TCP/IP 通信源码
- STM32+ADC+中断+串口通信
- E语言抽奖系统源码
- 毕业设计项目源码 5个项目
- 基于VC的包过滤防火墙论文源码有效地
- desk\\usb-over-network 内含注册机
- 最新yaffs2源码包
- 单线半双工通信.zip
- PUBG 源码可用,需要更新offset。
- 小程序拼车6.3.3带前端源码,增加用户
- 云风lua源码欣赏
- 安卓基于UDP的简易聊天程序源码
- Linux 下 diff 工具源码
- OPC dll全套和一个S7-1200OPC案例
- anyQ服务器源代码
- Unix_内核源码剖析_-_青柳隆宏.epub
- 企业人事管理系统(全部源码)
- 客流系统源码
评论
共有 条评论