新闻  |   论坛  |   博客  |   在线研讨会
usb_d12固件程序共享
疯癫龙 | 2008-07-16 08:11:11    阅读:863   发布文章

到目前为止,接触pdiusbd12程序已经接近5年多了,差不多6年光景了。前一段时间搞了一个usb开发的小项目,又将usb的固件等程序整理了一遍,该程序的源码如下:
点击下载(欢迎大家下载使用!!!!!!!)

       

        pdiusbd12固件程序主要分成如下几部分:

<!--[if !supportLists]-->1、  <!--[endif]-->应用层。该层主要在main.c文件中实现,实现usb设备固件程序的具体功能。

<!--[if !supportLists]-->2、  <!--[endif]-->协议处理层。该层又可以分为标准协议层、自定义协议层以及usb事务处理层。主要在usb_protocol.c,vendor_request.c,d12_isr.c文件中实现。

<!--[if !supportLists]-->a)         <!--[endif]-->标准协议层。该层主要在usb_protocol.c文件中实现,提供usb请求处理的方法。该层与具体的硬件和应用都没有任何关系,因此,该层可以很容易的移植到其它处理器上,基本无需改动。固件程序要使用协议层时,在应用层软件中首先需要注册协议层处理函数。注册函数的模版为struct usb_total_descriptor_s。

<!--[if !supportLists]-->b)        <!--[endif]-->自定义协议层。该层主要在vendor_request.c文件中实现,封装了用户自定义的请求处理方法。

<!--[if !supportLists]-->c)        <!--[endif]-->事务处理层。该层主要实现了控制传输的相关机制,提供了中断传输、批量传输的事务接口。该层主要在d12_isr.c文件中实现。

<!--[if !supportLists]-->3、  <!--[endif]-->硬件抽象层。该层与具体的硬件相关,主要在sys_hal.c文件实现,封装了硬件系统的初始化等函数。

<!--[if !supportLists]-->4、  <!--[endif]-->D12操作层。该层为Pdiusbd12的驱动程序,实现pdiusbd12控制器的各种操作。

 

        usb_d12的固件程序代码量不大,在1000行以内,控制传输应该是逻辑最复杂的部分了,其采用一个状态及进行实现。该状态机的状态流图如下所示:

        usb_d12固件程序已经实际的硬件平台上得到了验证。

*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
推荐文章
最近访客