搜索
bottom↓
回复: 53

我来谈谈AVRUSB的开发

[复制链接]

出0入0汤圆

发表于 2007-10-29 20:53:10 | 显示全部楼层 |阅读模式
接触AVRUSB有半年了,第一次看到这个我就非常想搞出来,主要因为mega8单片机容易获得,而且有DIP封装的自己好焊.





从固件来讲AVRUSB有两个版本
1,atmel公司的application note里的AVR309,这个是一个斯洛伐克的工程师写的,在其源程序中有其网址,这个网址我以前打开过,上面还有用单片机模拟以太网接口的程序(强啊!),可惜现在打不开了,这个版本的固件程序打印出来大约50页,我把这个程序打印出来,看了一周实在看不下去了,现在这个程序尘封在家里,全是汇编语言写的,真的看不下去.
2,在http://www.obdev.at/products/avrusb/index.html这个网站有AVRUSB的另一个版本,也就是大家常用的版本,这个版本是C语言+汇编语言写的比上一个版本好看多了,它的汇编部分打印出来20几页(比50页少多了!),我花了好长时间才初步看懂整个程序.

说实话如果你仅想做出来一个USB的下载线出来,在论坛里下载一个电路图和固件,按样做一下就行了,如果你真的想把AVRUSB为你所用的话,还是要费的事的.
首先你要对USB协议有一定的了解,这是你读懂固件程序的前提,至少你要看懂USB协议中有关NRZI编码,位填充,数据包等内容.USB1.1协议在网上可以下到,不过是英文的,很考验人噢.最好找些USB开发的书看看.推荐一本<USB2.0原理与开发>这本书的前半部分几本上是USB协议的翻译.
其次你要有一定的C语言和汇编的基础,特别是avrgcc语言的基础,不然你会在看程序时遇到很多语法上看不懂的问题,这会增加读懂负担.




下面具体谈谈AVRUSB设备的开发
1,硬件电路
在USB的接口接线上,我看论坛里遇到问题的人很多,根据我的经验USBASP的电路是稳定可用的,我在好多台式机,还有几种本本上都试过了,没有问题.当然在VCC上串两个二极管,或直接稳压到3.3V,与USB电平兼容,我个人认为会更稳定.不过这样就不好与5V的51单片机联用所以没怎么关注.AVRUSB设备与PC联结后分两种情况
看,首先要看它有没有与主机通信,如果你是第一次用没有出现安装驱动程序的向导你的设备很可能是不能与主机通信,用一个软件:USBVIEW(网上有的下)可以诊断这种情况,如果你的设备能与主机通信(会出现驱动程序安装向导),这个小软件会显示设备描述符等信息,否则全是0.前些天我遇到这个情况,后来发现新的MEGA8单片机默认不是用外部的晶振,要设置一下(我很菜的).
2,固件程序
两个版本的固件程序除了所用语言的区别外,在具体实现上也有区别,版本1是先把每一位USB数据接收下来再解析,而版本2是边接收边解析,各方面比较后,不言而喻,版本2值得好好研究.这里简单说一下版本2,方便对程序有兴趣的人.版本2的汇编部分(usbdrvasm.S)主要是一个中断程序,它完成USB数据的接收与发送,简单说就是在12M晶振下第8个时钟周期接收一个USB数据位(1.5M),同时要据USB协议(NRZI编码,位填充等)解析出最终的数据,usbdrv.c主要是根据USB协议(各种数据包)完成各种包的处理.main.c主程序里有一个端点0用户自定义的请求处理,要改程序主要是在这里改,这是大部分人采用的方法,其实这个固件支持其它的端点:
端点1 IN OUT ,端点3 IN,如要你想用这些端点就要改usbdrv.c里和usbconfig.h等文件,还要对USB有了更好的了解才能做到.
3,驱动程序
现在很少人学编驱动程序,所以AVRUSB设备大部分都用的是WIN32 LIBUSB  一种通用 USB驱动程序,如果你有能力也可自己编,我自己的驱动程序是改编的CYPRSS公司的CY7C63001开发板上驱动程序,只要作少量改动再重新编译就可了.
4,应用程序
如果只想简单实现与USB设备的通信,实际上应用程序是很好编的,对于那些用过API对串口编程的人来说更简单,也就是那几个API,所以我建议如果想编USB设备应用程序,可以先编编串口的API程序,参考的书很多噢.那个搞定了再转回来就简单了.


说了这么多不知是对是错,高手勿笑啊,再发点感言
以前搞过PDIUSBD12看了实验板的S52源程序真感慨自己以前编的程序太小儿科,看了AVRUSB的程序让我再一次感受到一山还有一山高,所以潜心想把它搞透,太敬佩这些作者了,见贤思齐,希望我们国家多出些这样的人知道创新,也知道分享.

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

发表于 2007-10-29 21:19:44 | 显示全部楼层
强贴留名

出0入0汤圆

发表于 2007-10-29 21:23:58 | 显示全部楼层
楼主可否附上驱动源码?

出0入0汤圆

发表于 2007-10-29 21:24:12 | 显示全部楼层
楼主写的不错啊
好好读读

感谢

出0入0汤圆

 楼主| 发表于 2007-10-29 21:29:37 | 显示全部楼层
这是我改的驱动程序的源码:

点击此处下载ourdev_178984.rar(文件大小:683K)

出0入0汤圆

发表于 2007-10-29 21:42:27 | 显示全部楼层
好帖!好帖!

我一直建议,有AVR基础的人,如果想更加深入的话,就做这个东西。当然,不是简单的照搬,而是深入的学习和研究。

我有几个学生想学习做这个,我会让他们看此贴的。

出0入0汤圆

发表于 2007-10-29 22:05:25 | 显示全部楼层
说了这么多不知是对是错,高手勿笑啊,再发点感言
以前搞过PDIUSBD12看了实验板的S52源程序真感慨自己以前编的程序太小儿科,看了AVRUSB的程序让我再一次感受到一山还有一山高,所以潜心想把它搞透,太敬佩这些作者了,见贤思齐,希望我们国家多出些这样的人知道创新,也知道分享.

楼主写的真不错啊
太赞美了。。。天冷了,armok给个裤子穿

出0入0汤圆

发表于 2007-10-29 22:13:50 | 显示全部楼层
谢谢

出0入22汤圆

发表于 2007-10-29 22:20:52 | 显示全部楼层
谢谢楼主的分享

出0入0汤圆

发表于 2008-1-6 23:01:55 | 显示全部楼层
顶一个

出0入0汤圆

发表于 2008-1-6 23:34:27 | 显示全部楼层
留个爪印

出0入0汤圆

发表于 2008-1-7 08:16:51 | 显示全部楼层
占个位置学习

出0入0汤圆

发表于 2008-1-7 11:37:23 | 显示全部楼层
好贴,我也一直想做USB、以太网(TCP/IP协议栈)、MP3方面的开发(出于兴趣)。

出0入0汤圆

发表于 2008-1-7 12:42:50 | 显示全部楼层
好帖!好帖!

出0入0汤圆

发表于 2008-1-7 17:31:52 | 显示全部楼层
我也想学习一下

出0入0汤圆

发表于 2008-1-7 19:05:37 | 显示全部楼层
有人用mega8读过U盘吗

出0入0汤圆

发表于 2008-1-7 20:42:16 | 显示全部楼层
真是很感慨 AVRUSB 相关开发人士!

同感6楼

出0入0汤圆

发表于 2008-1-30 16:50:01 | 显示全部楼层
好贴,谢谢~~~

出0入0汤圆

发表于 2008-1-31 15:59:27 | 显示全部楼层
记号

出0入0汤圆

发表于 2008-1-31 17:48:08 | 显示全部楼层
用汇编编写USB固件代码,的却需要点技术,需要了解最底层的东西。
不过学东西就是要学得根本一点,至少要知道。不要飘渺于空中楼阁。

出0入0汤圆

发表于 2008-1-31 20:59:46 | 显示全部楼层
哇,汇编,东搅西绕,为了不至于迷失方向最好做个流程图.

出0入0汤圆

发表于 2009-12-12 02:53:14 | 显示全部楼层
留名

出0入0汤圆

发表于 2010-3-15 16:29:04 | 显示全部楼层
MARK

出0入0汤圆

发表于 2010-3-19 19:16:45 | 显示全部楼层
好贴!我们初学者有了方向了!

出0入0汤圆

发表于 2010-3-20 14:24:56 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-3-20 16:42:29 | 显示全部楼层
佩服楼主做过深入研究!

出0入0汤圆

发表于 2010-3-20 17:40:07 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-3-21 14:39:25 | 显示全部楼层
顶一个,学习中。

出0入0汤圆

发表于 2010-8-9 13:52:48 | 显示全部楼层
MARK!!

出0入0汤圆

发表于 2010-8-9 19:35:08 | 显示全部楼层
mark!

出0入0汤圆

发表于 2010-12-6 16:40:08 | 显示全部楼层
正在学习中..就是英文的,看的有点太费劲了..另外,我觉得http://www.obdev.at/products/avrusb/index.html里面的东西,都是在linux下搞的.为什么国内用linux开发电子的资料,就少的不的了呢?

出0入0汤圆

发表于 2010-12-7 15:41:28 | 显示全部楼层
好东西…留下了…

出0入8汤圆

发表于 2010-12-7 16:04:08 | 显示全部楼层
颇有收获,谢谢

出0入0汤圆

发表于 2010-12-18 12:15:23 | 显示全部楼层
mark~~

出0入0汤圆

发表于 2011-1-14 13:37:16 | 显示全部楼层
mark

出0入4汤圆

发表于 2011-1-14 13:50:37 | 显示全部楼层
好贴

出0入0汤圆

发表于 2011-1-14 14:25:50 | 显示全部楼层
好!

出0入0汤圆

发表于 2011-1-16 06:37:42 | 显示全部楼层
谢谢

出0入0汤圆

发表于 2011-2-10 16:20:53 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-2-16 14:01:23 | 显示全部楼层
最近也在做vusb相关的东西,的确值得深入研究,程序构架读懂也需要花很多的时间。

出0入0汤圆

发表于 2011-2-18 15:36:23 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-2-18 21:07:41 | 显示全部楼层
接在D-D+上的稳压管是3.6v还是3.3v?

出0入0汤圆

发表于 2011-3-1 16:17:21 | 显示全部楼层
第一次用没有出现安装驱动程序的向导,应该是设备不能与主机通信吧?那不能与主机通信的原因有哪些啊?

出0入0汤圆

发表于 2011-3-6 22:16:15 | 显示全部楼层
不错,正在学习中。。。

出0入0汤圆

发表于 2011-3-6 22:19:16 | 显示全部楼层
MARK

出0入0汤圆

发表于 2011-3-6 22:53:52 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-3-7 21:50:07 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-3-7 21:55:26 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-4-10 16:11:38 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-8-3 21:44:12 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-10-20 10:48:48 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-10-20 10:55:10 | 显示全部楼层
mark

出0入0汤圆

发表于 2013-12-16 21:58:50 | 显示全部楼层
本人菜鸟一个,好贴拜膜,谢谢楼主分享。

出0入0汤圆

发表于 2013-12-17 22:21:17 来自手机 | 显示全部楼层
研究深入
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-13 03:36

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表