×
嵌入式 > 技术百科 > 详情

如何利用SDL开发TD-SCDMA高层信令

发布时间:2021-08-06 发布时间:
|

摘要:介绍td-scdma系统的ue结构以及根据实际工作经验提出利用sdl开发td-scdma高层信令系统的方法。

1 sdl语言介绍

sdl(规范描述语言)广泛地用于描述通信系统的行为。它是ccitt推荐的规范描述语言。经过itu-t的发展和标准化,定义在兰皮书z.100建议中。itu-t在1988年推出了第一个正式版,以后每四年进行一次增补更新。作为国际标准化的正式语言,它被用来规范实时多任务系统的描述。sdl与其它一些相关技术如z.120建议——消息序列图和z.105建议及抽象语法符号一起形成一个完整的描述语言。

在协议软件的开发流程中,sdl被应用在系统规范描述和设计阶段。它完全独立于硬件实现与操作系统。telelogic tau公司提供的sdl软件不仅可以用于规范描述和设计,还可以把sdl的描述和设计直接生成标准的c代码。用户也可以直接在sdl描述和设计中嵌入c代码,从而完成图1中的实现部分的功能。经sdl描述产生的c代码(包括嵌入的c代码)可以直接与多种嵌入式(或非嵌入式)实时多任务操作系统集成,如nuclues、psos、solaris、vrtx、ose等,集成后的代码可以直接在目标板上运行,从而方便用户进行协议软件的开发。

与sdl相对应的msc(信息序列图),是itu-t规范中用来表示信息序列的语言。在1991年,itu-t对msc进行了标准化。用msc图可以方便地表示出信号的流向,即信号是从什么进程发送到什么进程,信号是否带有参数、具体的参数值等都可以直观地表示在sdl msc图中,这对了解和分析信号在各个模块间的传递带来了很大的方便。不仅如此,通过msc图还可以将sdl的各功能有机地联系在一起。在软件的跟踪及调试过程中,使用simulator和validator可以产生msc图。在软件的ttcn测试过程中,msc图还经常被用于分析测试的结果。通过msc图还可以直观地描述信号发送的先后次序,而这些在sdl描述中是办不到的。

开发的最后一步是使用ttcn进行测试。ttcn(树表结合表示法)是由iso和itu定义在iso/iec 9646-3中的一个规范测试语言,是iso/iec 9646的第三部分标准,用于osi一致性测试集的测试表示法。树表结合表示法,顾名思义,就是采用以树和表格为表现形式的测试表示法,其中表格主要用于数据类型、原语、协议观察点、约束等,而树则用于描述测试集、测试例、测试步。对标准有效性的验证和通信软件的一致性测试就显得非常重要。

用sdl设计的系统是一个等级结构的系统,它包括了系统、功能块和进程等。一个系统可以包含多个块,每个块可由一个或多个进程组成。进程是sdl系统中的最小处理单元,采用efsm描述,所有用户的处理和操作都在进程中完成。在系统级下定义的内容(信号、数据结构等)可以在该系统下所有的块和进程中使用,在块下定义的内容可以在该块的任何进程中使用。

正是sdl的这些特点,在开发协议软件中起着不可比拟的作用,下面以sdl开发td-scdma高层信令简单说明sdl的使用。

2 td-scdma系统结构

首先介绍一下td-scdma系统结构。根据tsm协议的要求和实际开发产品的需要,可将td-scdma系统用户终端协议软件分成图2所示的系统结构(没有包括分组数据业务部分)。整个系统结构满足tsm协议的分层结构,同时根据控制和软件的需要增添了tsr、hl1模块,是一个sdl块级的td-scdma的ue端高层信令结构。整个系统共有六个模块,每个模块对应sdl中的一个块,每个模块分别完成不同的功能。下面简要介绍每个模块的功能和接口。

cm模块完成连接管理功能,包括呼叫控制、短消息和附加业务三部分,即图2中的cm块。

mm模块完成在电路交换模式下的移动性管理功能,实现ue的移动性、安全性以及连接管理,即图2中的mm块。

tsr模块是一个信号中转模块,是mm子层的一部分,主要实现信号路由的功能;同时基于cm子层中各实体的多实例(如建立多个呼叫)特性,对cm模块进行多实例的管理。

rrm模块完成无线资源管理和控制功能。在空闲模式下,rrm模块执行小区选择和小区重选、为响应网络寻呼或高层的rr建立请求而发起rr连接建立以及切换等任务;在rr连接建立过程中,rrm控制hl1模块发起立即指派过程、主信令链路的建立过程;在连接模式下,rrm主要完成连接模式的资源管理,如指派、信道模式改变和切换等控制过程;处理随路信令,如分析和处理系统信息类型5、类型6;发送测量报告以及对在facch信道上接收到的层3消息进行分析和处理等任务。另外rrm模块还控制hl1模块对服务小区和邻近小区的测量等过程。

dl模块完成无线连接控制功能,主要包括:信道上提供一个或多个数据链路的连接,不同的连接通过数据链路连接标识dlci区分;提供帧类型的识别机制;允许层3消息在2个层3对等实体之间进行透明传输;顺序控制,以保持帧通过一条数据链路连接后的顺序;具有在数据链路上对格式和操作性错误的检测功能;当出现数据链路的不可恢复性错误时,具有向层3实体报告错误的机制;具有流量控制的功能;在rach上完成接入请求后,当需要建立一条数据链路时具有解决冲突的功能。

hl1模块是连接协议层与物理层的桥梁。按系统的硬件设计,协议层和应用层的任务由arm处理器完成,dsp处理器负责完成具体的物理层底层任务,如信源和信道的编解码、交织、各种物理层参数的测量、扩频及调制等。两种处理器之间通过中断交换数据。hl1根据协议层的请求,通过对协议层的任务分解和规划,对物理层资源进行调度和控制。主要包括:在小区选择过程中,hl1模块控制物理层进行邻近小区的码功率的测量,解读bsic,解读dwpts的相位,读取bcch块等任务;在空闲状态下,hl1模块控制物理层执行服务小区和邻近小区的测量,解读服务小区的系统信息和最强6个邻近小区的系统信息类型1,并把测量结果和读取的系统信息报告给rrm模块;在随机接入过程中,根据rrm模块的控制信号,hl1模块控制并调度物理层执行随机接入过程的消息发送与接收;在连接模式下hl1控制物理层执行数据的收发、服务和邻近小区的测量以及切换过程等。 图2中,每个模块对应sdl描述中的一个块级结构,在每个块级结构中又可以分成很多个进程,高层信令可以通过phi信道和物理层进行通信。向上可以通过mmi、cmmi、mmsim信号和人机界面进行信息交互。而人机界面可以由wince系统完成,硬件驱动部分可以直接编程实现[3]。

3 利用sdl系统开发td-scdma方法

在图2的td-scdma系统描述中,可以利用telelogica tau ab公司的sdl editor将其描述成标准的sdl描述形式。但不是系统所有的部分都可以使用sdl开发。在硬件驱动、物理层具体的算法、信道的编解码以及sim卡的操作等都需要c语言(或者其他语言)完成。最后将所有的代码编译成一个可以执行的目标代码。具体过程如图3所示。系统开发代码运行平台是arm,操作系统是nuclues plus。

利用sdl实现td-scdma高层信令软件过程如下:

第一步:首先根据详细报告的描述,定义出所有的数据结构。例如保存系统信息的结构体、imsi码结构、tmsi码以及任务规划等结构定义,这些数据结构可以c/c++语言格式或是ans.1格式完成,它们都可以被sdl使用。c/c++描述可以被sdl提供的cpp2sdl.exe工具很方便地转换成sdl,可以直接使用pr文本[8]。

第二步:利用sdl工具将图2中完成的td-scdma系统描述和生成相关的pr描述,根据需要编译成不同的c/c++代码,最常用的有两种:一种是在目标板上运行的代码?穴通常选用cadvanced模式?雪,另一种是可以提供给ttcn测试的代码。

第三步:由于生成的目标代码和测试代码具有很好的一致性,利用ttcn可以检查出sdl设计中的问题,以保证sdl设计的正确性。这也是利用sdl进行td-scdma系统开发的优势之一。根据tsm 11(td-scdma系统测试规范)系列所编写的测试例,方便进行协议的一致性测试,最大可能地发现开发中出现的问题,避免了这些错误带到板级调试中,从而加快了软件开发速度。

第四步:sdl描述生成的c源代码要在arm硬件系统上运行,还需要与选定的rtos操作系统进行集成。sdl可以与多种rtos系统相互集成,它们的集成原理相同。根据 sdl的进程任务,在rtos系统中的处理情况可以分成两种,一种是深度集成,另外一种是轻度集成。它们的效果相同,其区别在于深度集成将sdl描述中的每一个进程作为rtos中的一个进程来处理,而轻度集成则将整个sdl系统作为一个rtos进程进行处理。在实际应用中,大多使用第二种方法。这种方法便于sdl和rtos系统的集成,集成时只需要修改sdl的接口文件setenv.c。在该接口文件中,增加下列nucleus的函数:

nu_create_memory_pool()

nu_allocate_memory()

nu_create_task()

前两个函数被nucleus用来分配内存,保存sdl进程控制块。nu_create_task()函数用于创建nucleus的任务,它是sdl进程与nucleus接口的关键函数。该函数共有11个参数:task_ptr、“sdl_fn”、sdl_main、0、null、stack_ptr、manager_stack_size、manager_

task_priority、manager_time_slice、nu_preempt、

nu_start;其中task_prt是指向进程的控制块、“sdl_fn”是进程的名字、stack_ptr是进程的堆栈指针、manager_stack_size是堆栈的大小;manager_time_

slice是进程可以占用的最大时间(以ticks来计算)。经过修改后的接口函数只要与sdl生成的源代码和操作系统提供的代码一起编译即可。每次启动系统后,nucleus将sdl描述当作是一个独立的任务进行处理。sdl进程由sdl内核管理,而整个sdl系统则由nucleus管理。nucleus系统有自己一套完整的消息处理机制,同时sdl生成的代码也有自己一套信号处理机制,它们相互独立,共同作用组成应用系统[9]。

最后将sdl生成的代码、nuclues代码和所编写的硬件驱动统一编写成arm运行代码。

在整个软件开发过程中,实际开发过程不是完全由第一步到第四步这么简单,有时它们交织在一起。在ttcn以及目标板测试中发现的问题反馈到设计过程,不断修正,直到系统的最后完善。

从以上过程描述可以看出sdl有以下优势:

(1)sdl工具可以同时支持图形(gr)和文本描述(pr),并且可以相互转换。图形方式方便设计人员直观了解设计结果,而文本方式便于保存。

(2)便于软件设计,可以将详细设计报告和代码设计过程有机地结合在一起,sdl可以把利用sdl描述的详细报告部分直接生成所需要的代码。

(3) 由于sdl具有一致性的目标源代码和测试代码,可以利用ttcn直接测试,大大提高了sdl设计的源代码的正确性。同时sdl具有丰富的msc接口,在测试的validator、simulator、ttcn过程中都有msc图输出,可以提供设计人员检查设计中存在的问题。

sdl生成的代码可以在多种实时多任务平台上运行,可以方便地与psos、nuclues plus、solaris、vxworks、osedelta等rtos系统相互集成,具有较好的可一致性。

sdl工具可以将整个软件开发过程、需求报告、总体设计报告、详细设计报告、代码设计及测试和维护集成一体。各个部分的设计都可以使用sdl的不同功能来描述,最大限度地节省人力和物力。图3 利用sdl开发td-scdma系统模式(ue端) 本文没有介绍sdl的uml部分可以完成软件开发的需求分析、总体或概要设计。结合sdl的功能,telelogical tau ab提供的sdl工具将软件开发的全过程有机地结合在一起,从需求分析到代码生成。加快了软件开发速度,缩短了软件开发周期。在整个td-scdma高层项目开发中,sdl工具软件起关键作用。

但是sdl在协议软件的开发中也不是万能的,虽然sdl的描述直观、方便,但是sdl生成的代码非常复杂,不便于修改和阅读。这也是惟一对sdl担忧的地方。通常在生成代码中一个不起眼的bug,将永远都不会找到。


『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
无人机新突破:或将利用手机发射塔追踪无人机