nlq_new
驱动老牛
驱动老牛
  • 注册日期2003-04-11
  • 最后登录2012-04-28
  • 粉丝0
  • 关注0
  • 积分102分
  • 威望12点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
阅读:3826回复: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]
linjunchao
驱动牛犊
驱动牛犊
  • 注册日期2003-01-14
  • 最后登录2005-04-27
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-01-18 11:45
看了这么多,不知道你的目的是不是这样?
1。目标板上的ML1210E是不是有USB口,如果有的话是不是MASTER
2。由于PC和ARM的USB都是MASTER,所以不能直接连接通讯,所以用两个SLAVE的器件68000和USB CORE连接,这两个器件间用UART口通讯。
carriage
驱动小牛
驱动小牛
  • 注册日期2002-10-12
  • 最后登录2004-09-29
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-01-12 21:19
再开个贴子吧我看的头都大了
把问题简化一下
目的讲清楚
jinghuiren
驱动巨牛
驱动巨牛
  • 注册日期2002-06-01
  • 最后登录2008-10-27
  • 粉丝0
  • 关注0
  • 积分291分
  • 威望460点
  • 贡献值0点
  • 好评度428点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-01-09 23:07
[quote][quote][quote]感觉有点帮不上忙了! :(
没关系 :),不管怎样,我坚信会及时完成的。就是中间过程比较痛苦 :D他们就跟催命一样。

你说的“其实USB寄存器都是在固件中配置的,不用通过ARM配置”,是不是指在ezregs.h中的那些寄存器声明?象
EXTERN xdata volatile BYTE OUT7BUF[64] _AT_ 0x7B40;这样的? [/quote]

在.c里配置,只要调用.h中的寄存器描述符就可以了! [/quote]
不解,在C里怎么配置啊?举个例子好吗?用什么样的代码配置呢?还有,象OUT7BUF这样的寄存器给我的感觉就是给一个地址指针,但是象USBCS这样的USB寄存器就不是一个指针那么简单了,对于这样的寄存器,我该怎么配置呢? [/quote]

OUT7BUF可以看成是一个数组的起始地址,理解为指针也可以,反正OUT7BUF[0]标志第一个字节数据。
USBCS定义的方法是:EXTERN xdata volatile BYTE USBCS _AT_ 0xXXXX;
可以直接象变量一样访问,如:USBCS = 0
nlq_new
驱动老牛
驱动老牛
  • 注册日期2003-04-11
  • 最后登录2012-04-28
  • 粉丝0
  • 关注0
  • 积分102分
  • 威望12点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-01-09 15:30
算了,这个帖子太乱了,诸位看一遍很费时间,我整理好思路,重开一贴吧,这个的分先放了。 :)
[b][color=green]我庄严宣誓我没干好事[/color] [/b]
nlq_new
驱动老牛
驱动老牛
  • 注册日期2003-04-11
  • 最后登录2012-04-28
  • 粉丝0
  • 关注0
  • 积分102分
  • 威望12点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-01-09 12:51
不过我还是有点不太理解,

如果仅仅是读写硬盘,为什么不使用68300?

如果为了节省成本,那为什么要用ARM?

如果为了保护设计,而又有流片的能力,那何不从头设计,把USB收发器、MCU、逻辑都是到一个芯片里去,为什么还要用68000?

这个我也不知道,也许这是市场的需要,也许是为了骗项目基金吧。 :D :D :D
[b][color=green]我庄严宣誓我没干好事[/color] [/b]
nlq_new
驱动老牛
驱动老牛
  • 注册日期2003-04-11
  • 最后登录2012-04-28
  • 粉丝0
  • 关注0
  • 积分102分
  • 威望12点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2004-01-09 12:49
[quote][quote]感觉有点帮不上忙了! :(
没关系 :),不管怎样,我坚信会及时完成的。就是中间过程比较痛苦 :D他们就跟催命一样。

你说的“其实USB寄存器都是在固件中配置的,不用通过ARM配置”,是不是指在ezregs.h中的那些寄存器声明?象
EXTERN xdata volatile BYTE OUT7BUF[64] _AT_ 0x7B40;这样的? [/quote]

在.c里配置,只要调用.h中的寄存器描述符就可以了! [/quote]
不解,在C里怎么配置啊?举个例子好吗?用什么样的代码配置呢?还有,象OUT7BUF这样的寄存器给我的感觉就是给一个地址指针,但是象USBCS这样的USB寄存器就不是一个指针那么简单了,对于这样的寄存器,我该怎么配置呢?
[b][color=green]我庄严宣誓我没干好事[/color] [/b]
huoxy
驱动小牛
驱动小牛
  • 注册日期2002-03-01
  • 最后登录2014-02-24
  • 粉丝0
  • 关注0
  • 积分21分
  • 威望4点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2004-01-09 12:33
不过我还是有点不太理解,

如果仅仅是读写硬盘,为什么不使用68300?

如果为了节省成本,那为什么要用ARM?

如果为了保护设计,而又有流片的能力,那何不从头设计,把USB收发器、MCU、逻辑都是到一个芯片里去,为什么还要用68000?
好好学习,天天向上,做一个乖宝宝。
flytomoon
驱动巨牛
驱动巨牛
  • 注册日期2003-07-09
  • 最后登录2004-10-18
  • 粉丝1
  • 关注1
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2004-01-09 12:23
[quote]感觉有点帮不上忙了! :(
没关系 :),不管怎样,我坚信会及时完成的。就是中间过程比较痛苦 :D他们就跟催命一样。

你说的“其实USB寄存器都是在固件中配置的,不用通过ARM配置”,是不是指在ezregs.h中的那些寄存器声明?象
EXTERN xdata volatile BYTE OUT7BUF[64] _AT_ 0x7B40;这样的? [/quote]

在.c里配置,只要调用.h中的寄存器描述符就可以了!
nlq_new
驱动老牛
驱动老牛
  • 注册日期2003-04-11
  • 最后登录2012-04-28
  • 粉丝0
  • 关注0
  • 积分102分
  • 威望12点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2004-01-09 12:19
感觉有点帮不上忙了! :(
没关系 :),不管怎样,我坚信会及时完成的。就是中间过程比较痛苦 :D他们就跟催命一样。

你说的“其实USB寄存器都是在固件中配置的,不用通过ARM配置”,是不是指在ezregs.h中的那些寄存器声明?象
EXTERN xdata volatile BYTE OUT7BUF[64] _AT_ 0x7B40;这样的?
[b][color=green]我庄严宣誓我没干好事[/color] [/b]
flytomoon
驱动巨牛
驱动巨牛
  • 注册日期2003-07-09
  • 最后登录2004-10-18
  • 粉丝1
  • 关注1
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2004-01-09 11:52
感觉有点帮不上忙了! :(
nlq_new
驱动老牛
驱动老牛
  • 注册日期2003-04-11
  • 最后登录2012-04-28
  • 粉丝0
  • 关注0
  • 积分102分
  • 威望12点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2004-01-09 11:45
68000管脚图
[b][color=green]我庄严宣誓我没干好事[/color] [/b]
nlq_new
驱动老牛
驱动老牛
  • 注册日期2003-04-11
  • 最后登录2012-04-28
  • 粉丝0
  • 关注0
  • 积分102分
  • 威望12点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2004-01-09 11:38
这是USB 芯片的管脚,其中UTMIXXX是和UTMI 68000的XXX管脚连在一起的,比如utmidata0管脚就是和6800的D0管脚连在一起的,FIFOXXX管脚在这里不使用,以up开头的管脚都连在MCU上。
附件名称/大小 下载次数 最后更新
2004-01-09_新建 Microsoft Word 文档.doc (83KB)  1
[b][color=green]我庄严宣誓我没干好事[/color] [/b]
nlq_new
驱动老牛
驱动老牛
  • 注册日期2003-04-11
  • 最后登录2012-04-28
  • 粉丝0
  • 关注0
  • 积分102分
  • 威望12点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2004-01-09 11:03
没什么,那就麻烦你再看看我的问题吧?
[b][color=green]我庄严宣誓我没干好事[/color] [/b]
huoxy
驱动小牛
驱动小牛
  • 注册日期2002-03-01
  • 最后登录2014-02-24
  • 粉丝0
  • 关注0
  • 积分21分
  • 威望4点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2004-01-09 10:43
不好意思,看错资料了,嘿嘿。
好好学习,天天向上,做一个乖宝宝。
nlq_new
驱动老牛
驱动老牛
  • 注册日期2003-04-11
  • 最后登录2012-04-28
  • 粉丝0
  • 关注0
  • 积分102分
  • 威望12点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
15楼#
发布于:2004-01-09 10:09
楼上的,我都说了,整个项目的目的是设计一块USB核芯片,现在已经投片了,但是还需要测试它的功能,才能大批量生产。我的任务测试那块USB芯片能否正常工作,如果最后能够在主机上对连接在MCU 1201E上的硬盘进行读写,那就成功了。
由于这块USB芯片是被测试的目标,所以必须在整个数据传输中扮演角色,目的是测试芯片功能,实现硬盘的读写只是手段
 
,你说的
cy7c68000是一个独立的USB2IDE芯片,他不需要MCU参与,而是直接与IDE硬盘相连
我不太清楚,只记得当时他们测试电路的时候,还用过一块683000,它就是可以直接连在硬盘和USB端口之间,然后我什么也不作,就可以在主机上读写硬盘。
[b][color=green]我庄严宣誓我没干好事[/color] [/b]
win86
驱动牛犊
驱动牛犊
  • 注册日期2003-08-26
  • 最后登录2007-08-31
  • 粉丝0
  • 关注0
  • 积分18分
  • 威望2点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
16楼#
发布于:2004-01-09 10:05
引用:
――――――――――――――――――――――――――――――――
嗯,上面的那一大段引用不是用什么语言写的程序代码,具体是什么,给我提供这分资料的人说了我也没明白,反正是在工作站上的,关键是要完成响应的功能。
――――――――――――――――――――――――――――――――
我估计这段语言只是描述所要实现的方法,功能,就象用英文告诉你怎么做,而不是编程语言
win86
huoxy
驱动小牛
驱动小牛
  • 注册日期2002-03-01
  • 最后登录2014-02-24
  • 粉丝0
  • 关注0
  • 积分21分
  • 威望4点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
17楼#
发布于:2004-01-09 08:48
个人认为:

cy7c68000是一个独立的USB2IDE芯片,他不需要MCU参与,而是直接与IDE硬盘相连,也就是说你的电路上只需要把cy7c68000的管脚和硬盘线相连(好向他们的定义都一样)、D+D-和USB线练就可以了,你不需要写任何固件,也不需要写任何驱动,固件在68000内固化了。唯一需要做的就是给他挂一个256字节的串行EEPROM,在里面按照固定的格式给处你的描述符就可以了,如果你没有外挂EEPROM,那也没关系,他会按照缺省的描述符描述自己,你也可以用。

如果你非要让MCU参与,我实在想不出来理由。因为那样子的花卉多非很多事儿。或许你是出于保密的考虑。反正你没把实际的情况说出来。
好好学习,天天向上,做一个乖宝宝。
nlq_new
驱动老牛
驱动老牛
  • 注册日期2003-04-11
  • 最后登录2012-04-28
  • 粉丝0
  • 关注0
  • 积分102分
  • 威望12点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
18楼#
发布于:2004-01-08 18:50
诸位放心吧,俺什么时候赖过帐 :D,不过一个帖子不能放两次分,这样对以后回答问题的人就不公平了,对诸位的指点,我是很感激的 :)。这个项目必须年前做完(用项目负责人的话说就是-作不完不行  :mad: :(),到时候不管怎样我争取放999分 :D :D :D :D

emailcdh,jinghuiren两位说的68000的作用倒是和我的板子上的USB芯片很像,而这块芯片就是连接在68000和MCU之间的,发现我的概念很模糊,叙述不清,待会发个电路板的图片上来,大家看看。

最后,再一次感谢帮助我的人 :)
[b][color=green]我庄严宣誓我没干好事[/color] [/b]
nlq_new
驱动老牛
驱动老牛
  • 注册日期2003-04-11
  • 最后登录2012-04-28
  • 粉丝0
  • 关注0
  • 积分102分
  • 威望12点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
19楼#
发布于:2004-01-08 18:38
楼上的说错的,俺是“苦”毙了。 :( :( :( :(
[b][color=green]我庄严宣誓我没干好事[/color] [/b]
上一页
游客

返回顶部