・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小时内删除。