usbd模拟串口
版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://bluefish.blog.51cto.com/214870/69560 |
这次的usbfn是基于2410的,该功能是实现用usb device来模拟串口的,以支持activesync。其中MDD层依然用的是MS的COM流接口形式,在PDD层实现两个.c文件在wince420\platform\smdk2410\devices\usb\function下面。 sc2410_usb_ser.c文件是pdd层为mdd层提供的接口,主要提供了GetSerialObject()这个函数,该函数由mdd层来调用以获得串口设备的相关信息,包括功能表和系统中断值等。功能函数也由该文件实现。 这个串口的操作是在usbd的基础上模拟出来的,也就是说具体的对硬件的操作是要通过控制usbd的controller来完成的(对usbd的操作部分由sc2410_usb_hw.c文件实现)。 首先在SerInit函数里除了对pHWHead的相关操作外,再就是要在这里初始化usbd。它的主要操作包括:使能usb clock,设置MISCCR寄存器,初始化usbd控制器(设置0,1,4endpoint,其中EP1为bulk mode in;EP4为bulk mode out,并配置EP4的DMA模式)。要对哪个endpoint来进行操作是通过INDEX_REG寄存器来选择的。 再者,接收和发送中断的处理也是由串口的功能函数调用对usbd的实际处理函数来完成的(发送时用EP1,接收时用EP4)。 本文出自 “bluefish” 博客,请务必保留此出处http://bluefish.blog.51cto.com/214870/69560 本文出自 51CTO.COM技术博客 |


rightsoft
博客统计信息
热门文章
最新评论
友情链接