注册 | 登录 忘记密码? 51cto首页 | 博客 | 论坛 | 招聘
热点文章 顺便给51cto做个广告
 帮助

usbd模拟串口


2008-04-02 10:43:09
 标签: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





    文章评论
 
 

发表评论

昵   称:
验证码:  点击图片可刷新验证码  博客过2级,无需填写验证码
内   容: