nlq_new
驱动老牛
驱动老牛
  • 注册日期2003-04-11
  • 最后登录2012-04-28
  • 粉丝0
  • 关注0
  • 积分102分
  • 威望12点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
阅读:3610回复:50

问题多,分也多-------我的USB驱动开发问题专帖

楼主#
更多 发布于:2004-01-07 16:11
首先说说板子的配置和我的工作:
MCU--一款采用ARM7TDMI核设计的32位芯片,有内部SRAM(8K)
USB CORE--这个任务的目的就是测试它的功能,
UART--CY68300
要作的事:1.单片机对USB芯片进行配置,配置它的寄存器,使USB芯片能够提供设备描述符表(这个是原来放在USB芯片里的)给主机,这样主机就能识别连接上的是个什么东东了
2.写固件,驱动程序(由于时间关系,我打算用windriver或找个现成的),主机可以对设备发出IRQ请求,设备也可以回复,通过读UART的管脚来检测USB芯片工作是否正常。
下面这个图是大致的结构框架:

最新喜欢:

wdy9927wdy992...
[b][color=green]我庄严宣誓我没干好事[/color] [/b]
pengenwen
禁止发言
禁止发言
  • 注册日期2003-03-07
  • 最后登录2016-04-11
  • 粉丝0
  • 关注0
  • 积分1586分
  • 威望8380点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-01-07 16:33
用户被禁言,该主题自动屏蔽!
nlq_new
驱动老牛
驱动老牛
  • 注册日期2003-04-11
  • 最后登录2012-04-28
  • 粉丝0
  • 关注0
  • 积分102分
  • 威望12点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-01-07 16:39
其中,USB芯片和MCU之间“?”还没有连线,我也不知道怎么连 :(还请指教


另外,CY7C68013是USB专用的芯片,里面有好多寄存器,比如
端点缓冲----INnBUF OUTnBUF
FIFO寄存器-----OUTnDAT,INnDAT
同步字节计数器 ---OUTnBCH\\L
USB寄存器------SUDPTRH\\L,TOGCTL,USBCS,USBFRAMEH\\L,USBPAIR等一大堆
SETUP数据寄存器---SETUPDAT
同步FIFO起始地址寄存器-OUTnADDR,INnADDR
这些在我要用的1201E里就没有这些寄存器,怎么办呢?
 :o
[b][color=green]我庄严宣誓我没干好事[/color] [/b]
nlq_new
驱动老牛
驱动老牛
  • 注册日期2003-04-11
  • 最后登录2012-04-28
  • 粉丝0
  • 关注0
  • 积分102分
  • 威望12点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-01-07 17:04
以前问过,说改寄存器地址就可以,但是现在的问题是某些寄存器就没有,其次EZUSB和1201E的存储器分配也不一样。

头一次作驱动,就有特殊要求---通过MCU配置USB芯片,真是……难! :(具体怎么配置呢?内容如下:

//------reset---------//
set  rst #1
waituntil  #300ns
set  rst #0
//-------wait on usbrest interrupt------//
waitport usbintreq  #1
cmp  #10
waitclk  #3
mov8  usbirq   #10
//------wait on high speed interrupt--------//
waitport  usbintreq  #1
cmp  #14  usbivect
waitclk  #30
mov8  usbirq    #20
#1500
//--------------initialtion the register-----------//
mov8  output  enable
mov8  usbien
mov8  194#01
mov8  196#01
mov8  00A#8B
mov8  00E#8B
mov8  1A3#10

这也不知是什么语言写的,总之要完成这里提到的功能,这个玩意怎么写呀?怎么连线才能使1201E对USB芯片寄存器进行配置呢?
[b][color=green]我庄严宣誓我没干好事[/color] [/b]
nlq_new
驱动老牛
驱动老牛
  • 注册日期2003-04-11
  • 最后登录2012-04-28
  • 粉丝0
  • 关注0
  • 积分102分
  • 威望12点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-01-07 18:09
怎么没有人呢?为了配合我的郁闷情绪,决定改放999分 :D别人请我吃饭也不能去了,要在这里写计划,SIGH :( :( :( :( :( :(
[b][color=green]我庄严宣誓我没干好事[/color] [/b]
nlq_new
驱动老牛
驱动老牛
  • 注册日期2003-04-11
  • 最后登录2012-04-28
  • 粉丝0
  • 关注0
  • 积分102分
  • 威望12点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-01-07 18:11
发现放不了这么多分,还是500好了 :) :) :)
[b][color=green]我庄严宣誓我没干好事[/color] [/b]
carriage
驱动小牛
驱动小牛
  • 注册日期2002-10-12
  • 最后登录2004-09-29
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2004-01-07 18:48
问一下IRQ请求是什么
指的是中断请求还是端的高低电平
nlq_new
驱动老牛
驱动老牛
  • 注册日期2003-04-11
  • 最后登录2012-04-28
  • 粉丝0
  • 关注0
  • 积分102分
  • 威望12点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2004-01-07 19:10
问一下IRQ请求是什么
指的是中断请求还是端的高低电平
我想应该是中断请求
[b][color=green]我庄严宣誓我没干好事[/color] [/b]
nlq_new
驱动老牛
驱动老牛
  • 注册日期2003-04-11
  • 最后登录2012-04-28
  • 粉丝0
  • 关注0
  • 积分102分
  • 威望12点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2004-01-07 19:21
嗯,上面的那一大段引用不是用什么语言写的程序代码,具体是什么,给我提供这分资料的人说了我也没明白,反正是在工作站上的,关键是要完成响应的功能。 :)


还是没人哪,可能都下班了  :P:),也好,再看看有没有什么问题,一块问,希望明天一来就能看到解答。
刚才又问了一下,据说我的驱动程序不用写了,写好固件就行了,1201E上面还连着一块硬盘,最后能让主机看到这块硬盘上的文件就行了,只要完成BULK类型的传输就行了,可以将设备定义成storag类型,就像U盘一样,WIN2000系统里有相应的驱动程序??? :o有这好事吗?
[b][color=green]我庄严宣誓我没干好事[/color] [/b]
nlq_new
驱动老牛
驱动老牛
  • 注册日期2003-04-11
  • 最后登录2012-04-28
  • 粉丝0
  • 关注0
  • 积分102分
  • 威望12点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2004-01-07 19:24
嗯,上面的那一大段引用不是用什么语言写的程序代码,具体是什么,给我提供这分资料的人说了我也没明白,反正是在工作站上的,关键是要完成 响应的功能。 :)
笔误,应该是“相应”。
[b][color=green]我庄严宣誓我没干好事[/color] [/b]
nlq_new
驱动老牛
驱动老牛
  • 注册日期2003-04-11
  • 最后登录2012-04-28
  • 粉丝0
  • 关注0
  • 积分102分
  • 威望12点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2004-01-07 20:19
说的比较乱,现在整理一下
我的任务: :
1.单片机对USB芯片进行配置,配置它的寄存器,使USB芯片能够提供设备描述符表(这个是原来放在USB芯片里的)给主机,这样主机就能识别连接上的是个什么东东了
2.写固件,驱动程序(由于时间关系,我打算用windriver或找个现成的),主机可以对设备发出取设备信息的请求(比如get descriptor configuration1,set feature device等等),设备也可以回复,通过读UART的管脚来检测输入和输出的数据,来判断USB芯片工作是否正常。
最后使主机能看到连接到1201E上的硬盘上的文件,这有点类似U盘了。

[b][color=green]我庄严宣誓我没干好事[/color] [/b]
nlq_new
驱动老牛
驱动老牛
  • 注册日期2003-04-11
  • 最后登录2012-04-28
  • 粉丝0
  • 关注0
  • 积分102分
  • 威望12点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2004-01-07 20:20




我自己设想的开发步骤(也就是我要逐步解决的问题)
1. 参考1201E和USB CORE的引脚,用飞线把它们连上--------------
        1201E要对后者进行寄存器的设置,这样存放在后者上面的设备信息在初次枚举时就能够传送给主机(好像和EZUSB不一样?好像是EPROM+USB CORE)据说通过地址和数据总线就能对USB CORE的寄存器进行读写操作,另外,它们还要完成MCU和USB CORE的功能,手头也没有类似的电路图可以参考,这个管脚的线该怎么连呢?哪位指点一下,要不给个EPROM与MCU或USB CORE与MCU的连接的图也行;

2. 写1201E配置USB CORE寄存器的程序,具体怎么配置那一大段引用说了,这个可能还好办点,还没作,暂时没问题;

开始固件的开发,

3. 没有用ARM编过程,所以想找个例子参考下(简单点),我用的开发工具是ARM STD V2.50

4. 由于ARM和CY7C68013有很多不同,寄存器啊,管脚啊,所以指望根据以前看的  一点后者的固件,把寄存器地址改一下就能用是办不到的:( 它们之间的固件区别应该是很大的,我该怎么办呢?



暂时就总结这些,希望大佬们指点。 :)
[b][color=green]我庄严宣誓我没干好事[/color] [/b]
nlq_new
驱动老牛
驱动老牛
  • 注册日期2003-04-11
  • 最后登录2012-04-28
  • 粉丝0
  • 关注0
  • 积分102分
  • 威望12点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2004-01-07 20:21
汗,看起来很乱 :o
[b][color=green]我庄严宣誓我没干好事[/color] [/b]
carriage
驱动小牛
驱动小牛
  • 注册日期2002-10-12
  • 最后登录2004-09-29
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2004-01-07 20:57
是啊你的东西我年历不明白.
USB CODE 到底是什么不象是硬件,一定要先搞明白
nlq_new
驱动老牛
驱动老牛
  • 注册日期2003-04-11
  • 最后登录2012-04-28
  • 粉丝0
  • 关注0
  • 积分102分
  • 威望12点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2004-01-07 21:19
其中,USB芯片和MCU之间“?”还没有连线,我也不知道怎么连 :(还请指教


另外,CY7C68013是USB专用的芯片,里面有好多寄存器,比如
端点缓冲----INnBUF OUTnBUF
FIFO寄存器-----OUTnDAT,INnDAT
同步字节计数器 ---OUTnBCH\\L
USB寄存器------SUDPTRH\\L,TOGCTL,USBCS,USBFRAMEH\\L,USBPAIR等一大堆
SETUP数据寄存器---SETUPDAT
同步FIFO起始地址寄存器-OUTnADDR,INnADDR
这些在我要用的1201E里就没有这些寄存器,怎么办呢?
 :o

这是我目前最想知道的。 :),在USB固件中,这些寄存器是很必须的,采用ARM7TDMI核的ML1201E怎么解决这个问题呢?我猜是不是可以在RAM中分配地址来实现?比如#define ……什么的,不过SFR好像不能这样作,那该怎么办呢?
[b][color=green]我庄严宣誓我没干好事[/color] [/b]
flytomoon
驱动巨牛
驱动巨牛
  • 注册日期2003-07-09
  • 最后登录2004-10-18
  • 粉丝1
  • 关注1
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
15楼#
发布于:2004-01-08 08:30
问题这么多?我慢慢看吧!
pengenwen
禁止发言
禁止发言
  • 注册日期2003-03-07
  • 最后登录2016-04-11
  • 粉丝0
  • 关注0
  • 积分1586分
  • 威望8380点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
16楼#
发布于:2004-01-08 08:32
用户被禁言,该主题自动屏蔽!
clementzhao
驱动大牛
驱动大牛
  • 注册日期2003-05-08
  • 最后登录2009-02-20
  • 粉丝0
  • 关注0
  • 积分28分
  • 威望63点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
17楼#
发布于:2004-01-08 08:56
一般寄存器不都是有固定地址吗?arm可以引出总线使用吧,就把它当ram访问了,应该可以的。
nlq_new
驱动老牛
驱动老牛
  • 注册日期2003-04-11
  • 最后登录2012-04-28
  • 粉丝0
  • 关注0
  • 积分102分
  • 威望12点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
18楼#
发布于:2004-01-08 08:56
这位大虾,你说话慢点好不好?搞得我们都昏了,不知道你要做什么?

请看第十一和第十二帖
[b][color=green]我庄严宣誓我没干好事[/color] [/b]
flytomoon
驱动巨牛
驱动巨牛
  • 注册日期2003-07-09
  • 最后登录2004-10-18
  • 粉丝1
  • 关注1
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
19楼#
发布于:2004-01-08 09:00
其实usb寄存器都是在固件中配置的,不用你通过arm配置,你只要用arm给中断就可以了。读写控制脚都是通过高低电平来控制的,先说这么多吧!
上一页
游客

返回顶部