基于Netlink机制的1553B协议通用接口设计①
2018-10-24顾燕飞邹维军王子剑张庆松
顾燕飞, 邹维军, 王子剑, 张庆松
(中国电子科技集团公司第三十二研究所, 上海 201808)
Netlink作为一种进程间通信机制, 除了提供内核不同模块间通信, 还能实现内核态与用户态进程间通信.相较于传统的用户进程与内核通信的机制(如ioctl方法和proc文件系统)的单向性, Netlink可以实现全双工通信[1].
1553B总线全称为数字时分命令/响应型多路传输数据总线.最早应用于美军航空电子综合系统之上, 各种航电设备基于MIL-STD-1553B总线完成设备间通信[2].但随着其不断的发展, 线性局域网络结构使得1553B总线成为航空系统或地面车辆系统中分布式设备的理想连接方式.与点对点连接相比, 它减少了所需电缆、所需空间和系统的重量.便于维护, 易于增加或删除节点, 提高了设计灵活性, 冗余容错能力等特点,在航空、航天、航海和民用等领域都得到广泛的使用[3].
Socket 1553B协议是在Linux下1553B协议实现的一种方法.Linux下一般使用1553B协议的方法是基于字符设备来实现的, 与之不同的是Socket 1553B使用Netlink的socket接口和linux网络协议栈, 这种方法使得1553B设备驱动可以通过网络接口来调用.Socket 1553B的接口被设计的尽量接近TCP/IP的协议, 让那些熟悉网络编程的程序员能够比较容易的学习和使用.
1 系统总体架构设计
整个系统环境的最底层是PCIE-1553B接口卡, 在操作系统中为1553B设备创建网络驱动, 负责配置和收发操作.在收发网络包过程中对其进行解析报文, 根据协议类型判断是否为1553B数据包, 递交给Netlink内核层中的接收函数处理[4].利用内核提供的……
