PCM3643卡共享中断驱动开发

上传人:jiups****uk12 文档编号:40255876 上传时间:2018-05-25 格式:PDF 页数:5 大小:156.32KB
返回 下载 相关 举报
PCM3643卡共享中断驱动开发_第1页
第1页 / 共5页
PCM3643卡共享中断驱动开发_第2页
第2页 / 共5页
PCM3643卡共享中断驱动开发_第3页
第3页 / 共5页
PCM3643卡共享中断驱动开发_第4页
第4页 / 共5页
PCM3643卡共享中断驱动开发_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《PCM3643卡共享中断驱动开发》由会员分享,可在线阅读,更多相关《PCM3643卡共享中断驱动开发(5页珍藏版)》请在金锄头文库上搜索。

1、1 7 4C E S C2 0 0 6 年第一层全国嵌入式系统学木交流套论文集P C M 3 6 4 3 卡共享中断驱动开发赵博赵文栋王海解放军理工大学通信工程学院,南京,2 1 0 0 0 7摘要介绍了P C M 3 6 4 3 多串口卡在V x W o r k s 下共享中断驱动的开发方法,以噩V x w o r k s 下共享中断驱动的开发思路。使用本骚动可实现人十串口通道共用一十中断所有串口全速率读写,并打开F I F O 模式,提高传精娃率。依据本文的驱动开发思路,可以很方便地开发其他串1 3 控制芯片的共享中断驱动。关毽词共事中断,串口驱动,V x w o r k s ,P C M

2、 3 6 4 3 ,T L l 6 C 5 5 4 1 引言嵌入式多串口设备在模拟器平台研制,智能监控( 交通、气象) 等方面有着很广泛的应用,嵌入式多串口设备的开发有着很大的前景和债值。但是嵌入式操作系统如V x W o r k s 的中断资源很有限,解决这个问题的方法是使用共享中断策略同类的多个设备( 如串口J 共用一个中断。这样既可以节省和充分利用中断资源,又可以提高系统的扩展能力。笔者参与的一个工程中用到了P C M 3 6 4 3 多串口卡,本文以该卡为例,介绍共享中断的串口驱动开发过程。第2 节t 对开发环境进行简要介绍;第3 节,简要介绍V x W o r k s 的串口驱动结构

3、f 第4 节,介绍驱动的开发方法 第5 节,对主要的技术难点做说明 最后是测试结果。2 板卡介绍及设置P C M 3 6 4 3 卡是A d v e m e c h 公司面向嵌入式系统用户推出的多串口卡,使用T L l 6 C 5 5 4 串l :_ :l 控制芯片,支持8 个独立R S 一2 3 2 串口,适用于多任务工作环境,作为串口扩充昔,除波特率设置和帧格式设置外,该卡还提供基地址模式、独享共享中断和F I F O 模式选择等功能。每个串口可单独配置。满足不同用户的需求。本文的开发环境为P C M 5 8 2 3 单板机和P C M 3 6 4 3 多串口卡组成的系统。P C M 5

4、8 2 3 板为主机板,包音两个采用i 8 2 5 0 芯片的串口。两串口使用默认设置使用v x w o r k s 自带驱动。P C M 3 6 4 3 卡作为串口扩展,有8 个串口。设置为8 串口共享中断,中断值5 ,使用增强模式,基地址0 x 3 0 0 ,其他使用默认设置。至此硬件设置完成。在编写驱动之前,首先介绍一下V x W o r k s 环境下串口驱动的组织结构。3V x W o r k s 串口驱动结构V x W o r k s 的串口驱动具有分层结构,如图1 所示。从圉中可以看出,V x W o r k s 的串口驱动的上层是应用程序( 用户) 和I O 系统。I O 系统

5、包括r e a d 、w r i t e 等7 个标准的I O 命令,是面向应用程序的统一接口,供应用程序调用,应用程序通过这些命令来访问设备。串口驱动分为两层:第一层是t t y D r v 和t y L i b 库,实现所有串口设备的统一管理。对上提供t t y R e a d 、t t y W r i t e 等7 个I O 接口,实现对串口设备的统一操作;对下管理所有串口设备的硬件驱动。t t y D r v可视为一个虚拟的驱动,所有的率口设备教看作是阐一类型的设备在这一层统一管理。该层提供读写数据缓冲区,完成各种与硬件无关的功能。具体的硬件驱动在第二层。第二层是具体串口设备的驱动。针

6、对不同的控制芯片,串口设备各有自己的一套功能函数,通过对特定寄存器的读写,圈1 驱动分属结构以及调用回调函数完成数据读写等功能。这是设备最底层的驱动。从上边的介绍可以看出,第一层的驱动对于1 6 C 5 5 4 芯片以及其他串口控制芯片来说是共同的,1 6 ( ;6 5 4 芯第二部分科研交流篇1 7 5片驱动的编写主要是串口驱动第二层的部分。4 串口驱动的编写4 1 驱动的编写V x W o r k s 中,应用程序、t t y D r v 与x x D r v 之间的调用关系如图2 所示。底层的串口驱动可以以t e m p l a t e S i o c 作为模板,结台T I 1 6 C

7、5 5 4 芯片硬件手册对各寄存器的说明编写。底层的串H 驱动包括初始化函数、读写函数等。下面分别按初始化、写操作、读操作等几个流程的顺序遥一介绍。1 设备初始化应用程序厂1 矛覆雨i 按照启动流程,串I = I 的初始化主要有三个0 磊i T 而) 点第一个点在B S P s y s L i b c 中,流程为:t y W r i t e 0lt y B e a d 0,、冀m 艘卜D e v l n 、“卜K 汇h 1t t y D r v t y L i b( 毪瓣) ( 驾瓣)( ) 一曲u d S e t ( ) 一O p t s S e t ( ) 。= := = := 各函数的内

8、容如下:,。 曼冀去蠹要产_ _ 警S e r i a l H w l a i t ( ) :初始化设备描述结构m i T x l m 0Il 、 体。这里通过循环对八个串口的描述x x D r v串口设备结构体分别进行初始化,并分别对每个串l X l 调用后续函数。圈2E M g t H i tD e v l n i t ( ) :受S e r i a l H w l n i t ( ) 函数调用,初始化s I O D R V F U N C S 结构,初始化回调函数,初始化信遭模式和状态。I n i t C h a n n e ( ) :调用l h u d S e t ( ) 函数和O p

9、 t s S e t ( ) 函数。B a u d S e t ( ) :首先使用i n t L o e k 命令关闭中断,然后写入D L L ( 除数锁存器低位) 和D L M ( 除数锁存器高位) ,设置波特率,之后在设备描述结构体中保存波特率值副本,最后美中断。O p t s S e t O :关闭中断。分别写入L C R ( 线路状态寄存器) 、M C R ( M o d e m 控制寄存器) 、F C R ( F I F O 控制器存器) 和I E R ( 中断使能寄存器) ,设置帧格式、M o d e m 状态、F I F O 状态和中断模式等,之后在设备描 述结构体中保存模式副本

10、。最后打开中断。第二个点也在B S P s y s L i b c 中,流程为:S e r i a l H w l n i t 2 一s y C I n t E n a b l e P I C ( ) 。 S e r i a l H w l n i t 2 ( ) :使用i n t C o n n e c t 函数挂接中断,把中帝随和中断服务函数挂接起来。对于共享中断驱动,这个挂接只需执行一次。s y s l n i t E n a b t e P I C ( ) :使能特定的中断值。第三个点在c o n f i g a l l b o o t C o n f i g c 中,使用t t y

11、D e v C r e a t e 函数将设备名与设备描述结构体指针联系起来。其中s y s S e r i a l C h a n G e t 函数用于返回设备描述结构体指针。由于1 6 C 5 5 4 芯片的串口属于后加入的设备,因此要对s y s s e r i a I c h a n G e t 函数做一定修改以支持新加入的串1 2 1 。修改方法略。2 写操作写操作流程为,Wr i t e ( ) 一t y W r i t e ( ) 一t t y T x S t a r t u p ( )x x T x I n t ( ) 一串口控制器应用程序发起写请求之后,t y W r i t

12、 e ( ) 将欲写入的数据拷贝到数据缓冲区中之后调用t t y T x S t a r t u p ( ) 启动一个传输循环。t t y T x I n t ( ) 被中断触发,将数据从缓冲区写到串口设备中。t t y S t a r t u p ( ) :如果处于中断模式,则t t y S t a r t u p ( ) 将对应串口控制器的I E R l ( I E R 的第1 位,下同) 置1 ,允许发进中断。t t y T x I n t ( ) :发送中断函数,被中断触发。当串口控制嚣的I E R I 为1 且串日输出完毕即T H R ( 发送暂存寄存器) 为空时,串口控制器会向C

13、P U 发出一个发送中断,表示可以接收下一个字符。之后t t y T x I n t ( ) 被中断触发。t t y T x I n t ( ) 调用回调函数从数据缓冲区取得字符,写人到T H R 中通过串口】7 6c E S C2 0 0 6 年第一届全国嵌入式系统学术交流舍论文集设备发送出去。之后再取字符,发送直到全部字符发送完毕。最后将I E R I 置零,复位传输中断。对于共享中断来说,必须解决中断源判断问题。独享中断系统中各设备中断值不同,因此可根据中断值判断中断源。但是共享中断系统中各设备中断值相同,要根据其他信息判断中断来源。这个问题在4 2 第一段I l 有详细阐述。3 读操作

14、读操作流程为:r e a d ) 一t y R e a d ( )x x R v I n t ( ) 一串口控制器串口设备接收到数据后,审口控制器会向C P U 发出一个中断,表示有数据到。之后t t y R v I n t ( ) 被触发。将数据从串口设备读取到数据缓冲区中。t t y R v I n t ( ) :首先I E R 置零,关闰中断。之后从R B R ( 读取缓冲寄存器) 读取一个字符,通过回调函数将字符迸同数据缓冲区中。最后将I E R 恢复为初始值,打开中断。与t t y T x I n t ( ) 函数类似,这个荫数也面临中断源判斯问题,在3 2 1 节有详细阐述。4 其

15、他其他函数描述姐下:I n t ( ) :中断服务函数。在本驱动中,t t y T x I n t ( ) 和t t y R v I n t ( ) 函数合并起来,成为I n t ( ) 函数,完成两个函数的所有功能。该函数在系统初始化时与中断值联系起来,当中断触发时被调用。根据I I R ( 中断标识寄存器) 的值判断出当前状态是读还是写,并作出相应处理。c a l l b a c k I n s t a l l ( ) :安装高层协议的回调函数。泼函数安装回调函数,以便从数据缓冲区获取字符或向数据缓冲隧写 字符。4 2 需要注意的几个问题1 在中断服务函数中判断中断源中断值与串口通道的对应

16、关系由中断挂接函数i n t C o n n e c t ( ) 在系统启动过程中完成。中断挂接函数有三个参数:中断值、中断服务函数人口地址和串口通道指针。该函数将三者联系到一起,当中断触发时,中斯服务函数启动,串 1 通道指针作为参数被传递培中断服务函数。对于独享中断来说,一个中断对应一个串V l 通道,在中断取务函数被调用的时候,即可知道中断 虹哪个串口通道触发,并对该通道进糟操作。但是对于共享中断来说,一个中断对应多个串口通道在中断服务函数被调用时,必须首先判断是哪个串口通道触发了中断。当某个串口通道触发了中断时,它的I R ( 中断标识寄存嚣) 值会发生变化1 1 R 0 表示中断状态,1 为无中断,0 为有中断。从硬件手册得知,T I ,1 6 C 5 5 4 芯片是四片T I 1 6 C 5 5 0 芯片组台而成,四个串口通道各有一套寄存器和收发缓冲区。通

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 毕业论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号