发明名称 一种VxWorks操作系统中实现驱动1394设备的方法和系统
摘要 本发明提供了一种VxWorks操作系统中实现驱动1394设备的方法和系统,其中方法包括步骤:a)初始化;b)中断处理;c)使能DMA读写,接收和发送数据。系统包括:初始化单元,用于设置链路层芯片的相关寄存器和物理层寄存器的相关位,使处于准备状态,初始化DMA接收描述符和DMA发送描述符;中断处理单元,用于处理各类中断;数据发送单元,以DMA方式发送数据;数据接收单元,以DMA方式接收数据。本发明实现了在VxWorks操作系统下驱动1394设备。
申请公布号 CN101937406B 申请公布日期 2012.08.22
申请号 CN200910108161.1 申请日期 2009.06.29
申请人 研祥智能科技股份有限公司 发明人 熊威;匡尧文;陈超
分类号 G06F13/10(2006.01)I;G06F13/32(2006.01)I 主分类号 G06F13/10(2006.01)I
代理机构 深圳市顺天达专利商标代理有限公司 44217 代理人 高占元
主权项 一种VxWorks操作系统中实现驱动1394设备的方法,其特征在于,包括步骤:a)初始化;b)中断处理;c)使能DMA读写,接收和发送数据;所述a)初始化进一步包括步骤:a1)设置链路层寄存器和物理层寄存器,使寄存器处于准备状态;a2)初始化DMA接收描述符和DMA发送描述符;a3)安装中断服务程序,通过设置链路层芯片的中断屏蔽寄存器来使中断打开;a4)软复位总线,使能链路层;其中,所述a1)设置链路层寄存器和物理层寄存器,使寄存器处于准备状态具体包括步骤:设置总线选项寄存器;设置主机控制器控制寄存器LPS位;设置节点标识和状态寄存器中的总线号;使能PostedWrites位;清除链路层控制寄存器;使能周期定时器和周期控制器;清除中断寄存器;设置自标识DMA缓存区并使能自标识DMA;设置配置ROM映射寄存器并初始化ConfigROM;获得最大数据包的大小,单位为字节;设置异步接收过滤寄存器;设置字节交换;所述a2)初始化DMA接收描述符和DMA发送描述符具体包括步骤:确定需要的发送描述符和接收描述符的个数;为发送数据和接收数据分配内存空间,所述为发送和接收数据分配内存空间具体实现为:一次性在物理内存空间内开辟一段连续的空间,分别存储发送和接收的数据包,所述连续空间划分成若干相等的内存块,发送缓冲区的单个内存块的大小是一个最大的数据包的大小,接收缓冲区的单个内存块大小是一个最大的数据包的大小的整数倍,整个存储空间是静态的,在运行过程中不释放; 初始化发送描述符链表和接收描述符链表;将每一个描述符链表的头节点的地址赋值到相应的命令寄存器中,DMA控制器根据寄存器中的地址来进行命令解析;在所述c)中,所述DMA的读操作包括步骤:数据包上下文处理任务接收到DMA的中断产生的信号后,在当前的接收描述符中查询是否有数据包过来,并且判断是否有跨描述符,然后根据获得的信息将接收数据包的地址和大小一起通过消息队列的方式传递给解包任务,所述跨描述符用于指示接收的数据包在内存中不完整,需要判断后从最后一个描述符号和第一个描述符中的缓冲区中根据指定的包的大小将这个数据包整合在一起;在所述c)中,所述DMA的写操作包括步骤:应用程序将需要发送的数据包封装好后,先将数据包的信息放入到一个动态的链表中,然后依次按照发送描述符的格式来插入到发送描述符链表中,通过设置异步发送上下文设置寄存器中的相关位来启动DMA的发送,当发送第一个数据包完毕后会产生一个发送完成中断,在该中断中会继续从动态链表中获取数据包插入到描述符链表中,直到完成全部数据包的发送,其中,所述发送描述符的格式为:如果是没有数据内容的数据包,则使用OUTPUT_LAST_Immdiate描述符,如果是只有包头的数据包,则使用OUTPUT_MORE_Immdiate描述符和OUTPUT_LAST描述符。
地址 518057 广东省深圳市南山区高新中四道31号研祥科技大厦