"); //-->
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固件程序已经实际的硬件平台上得到了验证。
*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。