ASN.1编解码模块在LTE协议栈中的研究与应用(2)
发布时间:2021-06-06
发布时间:2021-06-06
移动通信LTE资料
的、功能完善的ASN.1编解码模块对开发LTE协议栈软件起着至关重要的作用。
2
ASN.1编解码模块的设计与实现
2.1
ASN.1数据类型及编码规则
在ASN.1中。一个数据类犁就是一个值的集合。一
个给定的ASN.1类刭的值是该类型集合眼的一个元素。ASN.1有两种数据类型:简单类型和结构类型。简单类型是ASN.1描述数据结构的基础:结构类型是由基本类型和其他结构类剖组合而形成的复杂类型。结构类型中有叮选成员,其中可能有默认值。还叮以使用ASN.1的分配符(::=)为类型和值指定名字。这蝗名字叮以片j于定义其他类型或值J3l。
与RRC消息有关的基本类型有BITSTRING。IN—
TEGER。NUI.L。OCTET
STRING,BOOl。EAN,ENUMER.
ATED。ASN.1标准定义了5个结构类型,其中与RRC消
息有关的只有3个。分别是CHOICE,SEQUENCE和SEQUENCEOF。CHOICE类型选择其所有成员中的一个作为其值,相当于C语言中的UNION;SEQUENCE类型是一个或多个类型的有序集合。相当于C语言中的
STRUCT:SEQUENCEOF类型是某个给定类型}f{现0次或多次的有序集合.相当于C语言中的数组。
ASN.1标准定义了5种编码规则:BER(BasicEncod
ing
Rules),CER(CanonicalEncodingRules),DER(1)iain-
guishedEncodingRules),PER(PackedEncodingRules),
XER(XMI。EncodingRules)。其中PER在编码时冗余最小、编码最紧凑、效率最高[41。PER的编码结构如图2所示.可以分为基本的(Basic)和规范的(Canonical)两类.
每一类又可以分为对齐模式(Aligned)和非对齐模式
(Unaligned)两种。
图2PER编码结构图
lJTE协议栈软件ASN.1编解码模块选JfJ基本的非对齐模式PER作为编码规则。PER编码的结构为“IPIIL】
【C】''<optionalPreamble.optionalI七ngth,optionalContents
>.PLC中每个域都不冉是8位组串而是比特串.且每个域都是Lnr选的。Preamble只I叶J现在结构类型中.片j来记录结构类型中是否有扩展、可选成员或缺省值;I上n甜h用来记录Contents的具体长度.其单位根据具体类制而
变化:对于Contents.若数据足摹本类捌.则直接编码,若万方数据
Wide
bandnetworkI
赛带网络I
数据足结构类型.则是嵌套进行编码,此时Contents中也包含PLCi个部分。由于I七n对h町以省略(甚至Contents也I叮以省略),所以编解码双方必须知道抽象描述才能
正确编解码。文献【5I说明了PER对各个类型的详细编
码规则。
2.2
ASN.1编解码模块设计思想
ASN.1在一种高度抽象的层次卜来表示数据结构信
息,各种应厢程序无法直接对其进行操作和使用.需要先对使用ASN.1描述的数据结构进行翻译转换.转换成相应的编程语言(如C,C++,JAVA等)的数据结构表示形式,
之后成用程序就町以对其进行操作.写人棚应的值。然后
通过丰H应的ASN.1编码函数生成二进制码流.将码流通过通信介质进行传递。解码时,通过解码函数将二进制码流还原为相应编程语言的数据结构.应用程序就叮以从中读取相应的值。整个过程如图3所示。
Ash.I描述的数掂结构/
r
T:或软件转换HCif}奇描述的数掘结构
传输1.叫二进制码流—叫
编解码程序
图3
ASN.1应用过程
根据I胍协议栈软件需求。使JfI效牢较高的C语言
作为实现语言。ASN.1编解码模块采J}I结构化设计,但子函数层应尽可能少.提供编码和解码两个接口函数.在出现异常情况时。要提供异常信息,并能对程序运行进行跟踪。便于调试。
设计I,TE协议栈软件ASN.1编解码模块结构如图4所示。在实现时,先完成内存管理模块、比特流处理模块和辅助模块,最后完成核心模块。
图4
ASN.1编解码模块结构
2.3ASN.1编解码模块实现2.3.1
内存管理模块
ASN.1编解码模块使J}j自定义的内存管理函数.主要
2011年第35卷第0I期(总箐I35I期)
1it/".烹甥耩穆71
J●ll
J,,.』f¨r …,“
■
■
上一篇:石家庄某公司人力资源管理制度
下一篇:报关单练习