・163・
测试软件工程
计算机测量与控制-2020. 28(3)Computer Measurement & Control
文章编号:1671 - 4598(2020)03 - 0163 - 05 DOI :10. 16526/j. cnki. 11-4762/tp. 2020. 03. 034 中图分类号:TP316 ;TP311. 1 文献标识码:A
LINUX 系统下GPIB 驱动优化设计与实现
赵昕】,
郭恩全12
,
李小杰2
linux内核设计与实现 pdf(1.西安精密机械研究所,西安710075; 2.陕西海泰电子有限责任公司,西安710075)
摘要:为方便开发基于LINUX 操作系统的GPIB 仪器,近几年,Linux 内核也集成了专用在测试测量领域里的GPIB 总线驱 动,但直接拿来利用发现,在向仪器发命令的频率比较高时,此驱动传输性能不是很理想,偶尔还会出现驱动挂掉,造成
LINUX 内核崩溃;针对以上问题,给出了在LINUX 架构下GPIB 驱动优化设计方案;分析了 LINUX 字符设备驱动模型;在中
断服务程序底半部里,引入了结合睡眠机制的非原子操作工作队列,提高了驱动运行效率;提出了利用FIFO 半满而非传统的全
满标志位作为数据传输判断标准,提升了数据传输速率,引入了读写操作互斥的信号量,消除了由于读写竞态引起的驱动异常; 对优化后的GPIB 驱动进行测试,结果表明,上述问题得到了一定的改善%
关键词:LINUX ; GPIB ;优化;半满位;工作队列;信号量
7esig, *,: Implementation of GPIB 7rive( Optim* 8, L0NLJX System
Zhao Xin 1 & Guo Enquan 1,2 & Li Xiaojie 2
(1. Shanxi HitechElectronic limited liability Company , Xi'an 710075, China ; 2. XiFn Precision Machinery Research Institute , Xi'an 710075 , China)
Abstract : In order to facilitate the development of GPIB instruments based on LINUX operating system , in recent years , the
LINUX kernel has also integrated a GPIB bus driver specially used in the field of testing and measurement. However ,after being di
rectly used ,it is found that the transmission performanee of this driver is not very ideal when sending commands to instruments with relativelyhighfrequency occasiona l ytherewi l bedrivehangingo f tocausekernelcrash-Inviewoftheaboveproblems theGPIB
—driven optimization design scheme under the LINUX architecture is given. The LINUX character deviee driver model is analyzed ; In the bo t om half of the interrupt service program anon-atomicoperatingworkqueuecombinedisintroducedtoimprovethedriving operatione f iciency ; TheuseofFIFOhalffu l insteadofthetraditionalfu l flagbitasthedatatransmissionstandardisproposedto
improvethedatatransferrate ;Introducingmutua l yexclusivesignalforreadandwriteoperations eliminatingdrive-runninganoma- lies caused by read and write race ; TestsontheoptimizedGPIBdriver result shows that the above problem have been improved to
someextent.
Keywords : LINUX ; GPIB ; optimiee ; half full ; work queue ; semaphore
0引言
随着嵌入式技术快速发展,功能更加齐全,性能更加 强大的台式仪器已经面世,例如LXI 仪器,其数据传输吞 吐率,基于时间触发,组建远程分布式测控系统都具有明 显优势,但GPIB 经历了几十年的发展,总线协议已经相当
成熟,仍然受到传统用户的青睐,因此众多国内外测试测 量研发商开发高端的台式仪器时,都会保留传统的GPIB 接 口。由于LINUX 操作系统内核是开源的,使用者可以根据 自身的需求,对其进行裁减配置,形成高效的嵌入式操作
系统,使得LINUX 成为当前最流行的嵌入式操作系统之 一,但不足之处是,它不像WINDOWS ,有微软专门的研 发团队对其进行不断优化和升级,LINUX 并非以商业盈利
为目的,没有专门组织对其进行官方维护,从而LINUX 内
核在集成各个芯片厂商的驱动时,不少驱动在一些应用情 况下,传输性能还不够理想,尤其像GPIB 这种只是测试测
收稿日期2019-12-15;修回日期2020 -01 - 17%
作者简介:赵昕(1983 -),男,陕西西安人,硕士,工程师,主要 从事测控技术和嵌入式方向的研究%
量领域里的专用总线,相比应用广泛的USB 、LAN ,更具 典型性%
为了提升LINUX 系统下GPIB 传输性能,文章对其驱 动进行了优化%将GPIB 中断服务程序分割成顶半部和底半
部,在底半部里开辟了配置成非原子操作的工作队列,同 时采用睡眠机制,高效的实现了驱动运行效率;在数据接
收流程里,采用FIFO 半满位判断标准,使得从FIFO 中收
数据到内核缓冲区和向FIFO 里传数据可以并发进行,从而 提升了数据传输速率;设备文件操作中的读写函数可能会
同时操作临界资源,应用信号量避免了竞态的发生,增强 了驱动可靠性%
1 LINUX 字符设备驱动模型分析
LINUX 字符设备驱动程序〔5*—般包括3部分:初始化、 中断服务、设备文件操作%在驱动程序初始化时,要向系
统注册此驱动程序,系统后续才能调用驱动里各设备文件
操作接口 %在Linux 系统里,是通过调用register _ chrdev 向系统注册设备驱动程序,初始化部分除了注册设备驱动
程序,一般还需要给驱动程序申请系统资源,包括内存、 时钟、I/O 端口等,芯片的初始化也在这里进行,另外还要
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论