2.2.3 嵌入式通信软件设计
1.嵌入式通信软件的组成
(1)嵌入式通信软件构建类型
广义地划分,通信系统有两类软件构件:协议软件(应用软件)和系统软件。协议软件实现协议规范;而系统软件(含基础软件)通常包括一个实时操作系统和管理硬件的基础软件。
协议软件实现协议规范中详细规定的协议。规范由一些国际标准化组织制定,如ISO、IEEE、ITU-T等。协议实现通常基于状态事件机,也叫状态机。状态机是协议实现的核心,其形式通常为一状态事件迁移图,记录一系列规则来指出在某一事件下应执行的动作。
基础软件包括缓冲区管理、动态内存管理、定时器管理、资源管理、模块间的通信,其他软件模块的监视、硬件模块的状态管理等。系统软件包括实时操作系统和设备驱动程序等。
(2)嵌入式通信软件设计考虑
①硬件体系结构。
②RTOS是否选定。
③需要什么样的性能。
④需要实现那些协议。
⑤实现时要使用哪些全局数据结构和表。
⑥需要什么样的缓冲区管理和定时器管理。
⑦告警、统计处理机制。
⑧系统测试方法。
2.通信软件结构模型
(1)通信系统软件结构模型(见图2-2)
图2-2 通信系统软件结构模型
(2)系统块与功能块关系模型
系统块由多个功能块组成。在这些功能块里,只有一块功能块与环境交互,它收集环境中发生的事件,把它们转换成可以处理的消息,发给相应的进程。同时,它还接收各功能块中进程发往环境的消息,把它们转换成硬件可以执行的动作或操作系统的系统调用。
3.通信系统协议软件实现
(1)状态机
协议是通信系统功能的核心,而协议实现的核心是状态机。协议有些是有状态的,有些是无状态的。如IP转发是无状态的,其转发动作的执行不依赖以前的行为或数据包。而7号信令系统中的TUP协议是有状态的,其呼叫流程是和以前的行为或数据包密切相关的。
(2)协议数据单元处理
①PDU预处理:主要包括包文法检查及校验和验证等工作。
②给状态机的事件:预处理完成确定包的类型,并将适当的事件传给状态机,状态机完成数据包的解析,将协议数据转换为编程数据,状态机根据消息类型及消息携带的具体参数执行下一步动作。
③PDU传输:状态机完成相应动作后将产生的结果以消息的形式,结合具体所需参数,利用PDU组包功能,将编程数据转化为协议数据,发送到线路上,传送给对方。因此,概括地讲,协议数据单元处理就是PDU的校验、组包及解包过程,该步骤直接影响状态机的执行。
(3)协议接口
协议任务并非孤立存在或执行,需要和系统环境中的其他成分接口和交互包括:
①实时操作系统;
②存储管理;
③缓冲区管理;
④时间管理;
⑤事件管理;
⑥进程间通信;
⑦驱动程序接口;
⑧配置与控制。
(4)协议软件数据结构
①表:表主要有四类。
● 配置:用于设置操作参数和边界的读/写或只读。例如,口令就是配置参数。
● 控制:用于改变通信软件模块的读/写信息。例如,开启或关断协议,主备用切换标志设置等就是控制。
● 状态:详细反映当前操作状态的只读信息。例如,HDLC链路的运行状态就是状态变量。
● 统计:模块记数或监视到的只读信息。例如,对一个对模块接收或发送的报文数记数的变量就是统计变量。
②其他的数据结构:
● 进程控制块:记录协议模块中各进程状态,参数等信息的数据结构。
● 接口控制块:记录模块或进程间通信端口状态及信息的数据结构。
③实现:在协议软件中使用的数据结构表、进程控制块、接口控制块,通常使用数组、链表、树结构等方式实现。
为了能够快速、有效地访问数据结构,主要根据不同对象设计不同的HASH算法直接定位的方式实现。
(5)配置与控制
协议的配置与控制是指协议的管理。
①开启和关断协议;
②开启和关断特定端口的协议;
③特定接口的编址;
④设置最大帧尺寸;
⑤协议消息超时管理;
⑥对等实体的超时处理;
⑦鉴别安全信息;
⑧流量参数管理;
⑨封装信息。
(6)系统启动
①对各种表的大小参数进行初始化;
②为动态数据结构和状态表分配内存;
③状态表变量初始化;
④缓冲区和定时器接口初始化;
⑤从本地源读入配置,并对配置初始化;
⑥高层和低层接口初始化,包括向高层和/或低层注册;
⑦需要时创建和启动其他的协议任务;
⑧在无限循环中等待。
4.多板通信软件的设计
通信系统很复杂,通常在一个机壳上有多块板,甚至有多个机壳。本小节讨论通信中常用的多板设计中软件结构的变化。
(1)板件通信协议及实现
板间通信协议(ICCP或ICP)解决各主控板之间的通信问题和主控板和硬件插板的通信问题。目前使用的通信方式:TCP、UDP、HDLC等。
板间通信协议的实现:对底层通信方式进行封装,提供两个统一的接口,分别对应基本传输服务(A类服务)和带差错控制的服务(B类服务)。
A类服务:通信的一方将报文发送给对方,不等对方证实。对方收到报文后直接交给用户,不回证实。这类服务不提供差错控制,主要适合两种场合:协议用户本身自己提供差错控制;ICCP底层已提供差错控制,如TCP。
B类服务:该服务与MTP相似,每个报文都带一个前向序号字节和一个后向序号字节。所谓前向序号是指发送方给当前发送报文的编号,所谓后向序号是本方已正确接收的报文序号。通过对这些序号的判断,实现对丢失报文的重发,从而达到差错控制的目的。B类服务主要用于直接控制HDLC芯片进行通信,或在局域网上使用UDP协议。
(2)多板系统中的故障与容错
多板系统和单板系统都会受到硬件故障的影响,但多板系统能够通过切换到另一块板对故障进行处理,这就是多板系统的容错。目前,电信级设备普遍要求具有容错功能。单控制板+多线板结构是通信应用中经常使用的多板系统实现。
5.通信系统管理软件
①SNMP管理
②公共管理信息协议(CMIP);
③公共对象请求代理结构(CORBA);
④事务语言1(TL1);
⑤命令行接口(CLI、MML)。