jrmforever
驱动牛犊
驱动牛犊
  • 注册日期2004-07-24
  • 最后登录2010-05-01
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1738回复:16

to metaling:bulk传输的一点理解,不知道对不对

楼主#
更多 发布于:2004-09-20 15:44
metaling 你好,这两天我又改了一下固件部分的程序,理解了一下

bulk传输的过程,不知道对不对希望你给我解答一下。

设备枚举结束后从地址状态转换到了配置状态

通过设置配置使设备正常工作,接下来就是根据端点的配置情况进行

工作,而不论读写动作都是由上位机发起的,也就是说,上位机给

d12发送读写命令,然后才是进行数据的读写!

还有是不是只要进入了工作状态,端点就可以进行工作了

我在周立功的程序里面看到了一个read_write_register()

这个函数如果不用行不行?

请metaling和各位大虾指导!!!
metalwing
驱动中牛
驱动中牛
  • 注册日期2003-10-13
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分178分
  • 威望58点
  • 贡献值0点
  • 好评度17点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-09-20 16:06
对.USB设备有3种状态:默认(DEFAULT),地址(ADDRESSED),配置(CONFIG).当设备枚举完后(加装驱动?),就进入了配置状态.这时,你
的设备的各个工作端点和管道都应当准备好投入工作.
USB设备是一个被动设备,他的所有的工作是基于上位机(HOST)来完成
的,按软件的说法叫基于事件流的,也就是说上位机叫你干什么,你才
能干什么,上位机不理你,你干什么也没用,而上位机的动作一般都是
通过唤起中断来实现的.
"只要进入了工作状态,端点就可以进行工作了",对,但他不是主动就
可以工作,而是要你来根据你的设备的要求进行一系列的配置才能工
作.
因为我没用过D12这个芯片,也没看过相关资料,所以对那个函数是干
什么的没有概念,不清楚.
新手上路,请多关照.
jrmforever
驱动牛犊
驱动牛犊
  • 注册日期2004-07-24
  • 最后登录2010-05-01
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-09-20 16:35
那时不是我可以这样理解我的工作过程

如果我现在想从flash理面读取数据,整个过程应该是

1,将flash中的数据写如d12的主端点缓冲区

然后等待上位机的读取命令

2,上位机通过软件向下位机发送读取数据的命令,具体函数easyd12

的动态连接库里面已经提供了。

3,mcu收到命令进行判断,然后进入了中断中主端点读函数


然后将整个数据传到上位机,由此循环完成了数据传输过程

我的理解对吗???

metalwing
驱动中牛
驱动中牛
  • 注册日期2003-10-13
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分178分
  • 威望58点
  • 贡献值0点
  • 好评度17点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-09-20 21:52
不是吧.
1.收到HOST发来的读命令.(EP0中断或命令端口中断)
2.分析命令.
3.读FLASH,并将读到的数据写入USB相应端点的BUFF.(DMA中断)
4.等待HOST的IN令牌,将数据取走.(相应端点IN中断)
新手上路,请多关照.
jrmforever
驱动牛犊
驱动牛犊
  • 注册日期2004-07-24
  • 最后登录2010-05-01
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-09-21 09:20
请问dma中断是什么意思????


顺便还有一个问题,我一直没有理解dma是怎么回事,怎么应用


能不能顺便给我解释一下?

还有那是不是所有的读写过程都要通过控制端点分析阿

也就是说所有过程都要进入主端点中断!!!
metalwing
驱动中牛
驱动中牛
  • 注册日期2003-10-13
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分178分
  • 威望58点
  • 贡献值0点
  • 好评度17点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-09-21 19:09
DMA中断就是说当你的DMA处理完了后,会产生一个DMA中断,你通过他
来判断DMA传输是否完成(最好在传输前设个中断,看看要传输的总长
度,传输完了后再看看是否传完了).
DMA传输实际上是为了节省MCU的处理时间而设计的.在DMA传输过程
中,MCU不干涉,可以做自己的事.DMA的时序电路(一般)由外部电路
(DMA控制器产生).
不是.如:我可以通过其他端口(如中断端口)发送命令,固件接收了后,
解析他;也可以不通过命令,直接发送数据,但要求你在固件中进行安
排(?),就是说你知道这个端口发送的就是数据,而且就是这个数据.
新手上路,请多关照.
lhaih
驱动小牛
驱动小牛
  • 注册日期2004-04-28
  • 最后登录2007-10-19
  • 粉丝0
  • 关注0
  • 积分50分
  • 威望5点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2004-09-22 10:15
两位好,
我现正想,通过端点2向主机发送数据,数据写在一组数组里。
我只要把数据写入端点2IN缓冲区,然后使能缓冲区是不是就可以了,
然后就是等待主机的IN令牌,把数据取走,进入相应中断,清除中断标志位。

lhaih
驱动小牛
驱动小牛
  • 注册日期2004-04-28
  • 最后登录2007-10-19
  • 粉丝0
  • 关注0
  • 积分50分
  • 威望5点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2004-09-22 10:19
但这样做,根本进不去Ep2IN中断,什么原因呢
hongjuanguodong
驱动牛犊
驱动牛犊
  • 注册日期2004-04-27
  • 最后登录2004-10-30
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2004-09-22 15:24
jrmforever、metaling、lhaih,你们好,一起研究一下:)

    我也是不执行端点索引4的中断,在set config完之后中断寄存器一直为0,我的bus hound中set config之后主机还发送一个URB是select config,然后就停了,你们遇到过这种情况吗,怎么解决的?我觉着在这之前的过程都是正确的
metalwing
驱动中牛
驱动中牛
  • 注册日期2003-10-13
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分178分
  • 威望58点
  • 贡献值0点
  • 好评度17点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2004-09-22 19:45
to lhaih:
"只要把数据写入端点2IN缓冲区,然后使能缓冲区是不是就可以了",
对.看样子是你的驱动没有发IN TOKEN.
to hongjuangguodong:
set config后,完成枚举.然后就等待HOST事件,产生中断.select config是什么?不是标准命令?
新手上路,请多关照.
hongjuanguodong
驱动牛犊
驱动牛犊
  • 注册日期2004-04-27
  • 最后登录2004-10-30
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2004-09-22 22:40
to metalwing

select config我也不知道是什么,是主机发送的,不是标准命令,也不知道需不需要返回值

完成枚举,等待host事件,是主机自动发送还是要写应用程序发送host事件
metalwing
驱动中牛
驱动中牛
  • 注册日期2003-10-13
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分178分
  • 威望58点
  • 贡献值0点
  • 好评度17点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2004-09-23 08:43
to hongjuanguodong:
"等待host事件,是主机自动发送还是要写应用程序发送host事件",
HOST事件在枚举过程中,是HOST自动(实际上是由USBD)发.之后,是你
的驱动或应用程序发.
新手上路,请多关照.
lhaih
驱动小牛
驱动小牛
  • 注册日期2004-04-28
  • 最后登录2007-10-19
  • 粉丝0
  • 关注0
  • 积分50分
  • 威望5点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2004-09-23 10:55
to hongjuanguodong:
   你的邮箱我发不进去,我的理解是:索引4中断是只有主机向设备发送数据时才会进入的,不运行程序,应该是进不去的。
hongjuanguodong
驱动牛犊
驱动牛犊
  • 注册日期2004-04-27
  • 最后登录2004-10-30
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2004-09-23 12:45
to metalwing,lhaih
"HOST事件在枚举过程中,是HOST自动(实际上是由USBD)发.之后,是你
的驱动或应用程序发."

 是不是周立功提供的D12TEST.SYS不支持Mass Storage设备,上位机驱动还要自己写:(
  我的QQ:59996522
metalwing
驱动中牛
驱动中牛
  • 注册日期2003-10-13
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分178分
  • 威望58点
  • 贡献值0点
  • 好评度17点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2004-09-24 08:51
索引4中断是只有主机向设备发送数据时才会进入的,不运行程序,应该是进不去的。
不理解你什么意思.索引4中断是什么中断?反正就是IN中断产生在主
机(HOST)取走数据后,OUT中断产生在设备收到数据后.
新手上路,请多关照.
hongjuanguodong
驱动牛犊
驱动牛犊
  • 注册日期2004-04-27
  • 最后登录2004-10-30
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
15楼#
发布于:2004-09-24 11:50
插入U盘后枚举完成会自动执行SCSI命令,主机应该可以自动发inquiry命令,但现在没有发送这个命令,上位机的驱动是没有问题的,枚举我也不知道有什么问题,设备驱动已经加载上了

metalwing
驱动中牛
驱动中牛
  • 注册日期2003-10-13
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分178分
  • 威望58点
  • 贡献值0点
  • 好评度17点
  • 原创分0分
  • 专家分0分
16楼#
发布于:2004-09-24 14:11
主机应该可以自动发inquiry命令.
不是吧,应该是你的HOST固件或驱动(USBD)在检测到设备后,根据返回
的描述符知道是U盘,然后由他们发的吧.我对这些不清楚,也不知对不
对.
新手上路,请多关照.
游客

返回顶部