一种实现基站调制解调器芯片解码驱动的方法

文档序号:7623962阅读:284来源:国知局
专利名称:一种实现基站调制解调器芯片解码驱动的方法
技术领域
本发明涉及一种在码分多址(Code Division Multiple Access,CDMA)移动通信系统中对基站调制解调器(Cell Site Modem,CSM)芯片进行解码的一种方法。
对于CDMA系统,在基站调制解调器CSM芯片中,由天线搜索到的扩频信号采样,通过解扩、解交织的处理,最后由维特比译码器解码出反向信道(包括接入信道和反向业务信道)数据。信道单元处理软件模块(Channel ElementModule,CEM)提供对CSM芯片解码的驱动功能,确保每20毫秒从CSM芯片中的解码数据寄存器中读取已解码的反向信道数据。CEM模块运行于实时操作系统(Real Time Operating System,RTOS)之上,这种RTOS应该是多任务抢占式的(如Integrated Systems公司的pSOSystem操作系统)。在该操作系统中,任务是可执行的最小单位,它参与对系统资源的竞争,包括CPU、内存、通信端口等等。任务的调度和切换由操作系统内核来完成,这种调度和切换要占用一定的CPU时间。CEM的硬件平台上一般会有多个CSM芯片,每一个芯片对应一个CDMA信道的实例,即CEM模块是一种多实例的软件模块。这样,每一个CSM芯片就对应着RTOS的一个任务。当多个CSM芯片都被激活于各种信道工作模式,系统中就会存在着多个RTOS任务,这些任务之间的调度和切换将消耗掉大量的CPU时间。
在已公开的美国专利5511067中提到,每一个CDMA反向信道激活的解码驱动实例对应一个CSM芯片。或者说,当基于RTOS操作系统时,每一个CSM芯片的解码驱动对应着一个RTOS任务。CDMA系统中要求反向业务信道保证每20毫秒接收一个反向业务数据帧。在建立话路时,各CSM芯片的接收时间相对于20毫秒边界的时间差(称为帧偏置FRAME OFFSET,为1.25毫秒的整数倍,最小为0,最大为20/1.25-1=15)一般分配为尽量各不相同。这样,当所有的CSM芯片都有话路激活时,在任何一个20毫秒时间内,各个CSM芯片所对应的RTOS任务都要被调度一次然后阻塞(因为它所等待的信号没有到来),特别是当CEM的硬件平台上的CSM芯片数目较多时,多个任务之间的切换与调度将会较大地降低系统的运行效率。
本发明的目的是为了克服上述现有技术中的多个CSM芯片(特别是多于16个)引起效率低下的缺点,通过提供一种解码驱动的方法,使系统运行更稳定,更高效。
为了达到上述目的,关键在于减少任务调度和切换所消耗的CPU时间。由于CSM芯片的数目不固定,有可能还会增加,如果仍采用一个芯片对应一个RTOS任务的方法,显然,只会使任务数目和调度消耗继续增加。而考虑到每个20毫秒时间内帧偏置的数目是固定的(即20/1.25=16),并且CSM芯片接收数据帧恰恰是在这些帧偏置的时间边界完成的。因此,如果每个帧偏置只激活一个RTOS任务,则在20毫秒内将会最多调度16个任务,而不管CSM芯片的数目为多少。
基于上述思想,本发明提出了一种在基站调制解调器CSM芯片中用静态任务驱动解码的方法包括以下步骤创建所有RTOS任务并初始化,建立话路;打开对应的CSM芯片的解码驱动,更新任务状态;调度任务,进行解码;关闭对应的CSM芯片的解码驱动,更新任务状态,然后释放话路。
使用本发明,可以提高CPU的资源利用率,对于有24个CSM芯片的CEM硬件平台,当所有的芯片都被建立话路时,CPU的占用率为70%左右,而不采用发明时,即便是只有16个CSM芯片,CPU占用率已经接近100%了。
下面结合附图对技术方案的实施作进一步的详细描述。


图1是本发明所述方法的总流程图。
图2是各静态解码驱动任务初始化的流程图。
图3是指定CSM芯片打开解码驱动的流程图。
图4是各任务的工作流程图。
图5是指定CSM芯片关闭解码驱动的流程图。
本发明的基本思想是,在系统初始化阶段即创建16个RTOS任务,每个任务对应20毫秒内的一个帧偏置,并且每个任务有一个计数器和一个CSM芯片列表;所述计数器用于记录于该帧偏置激活的CSM芯片的数目,并且将这些CSM芯片的编号存放至列表中。
本发明所述方法分为以下步骤首先需要初始化各静态解码驱动任务(S101);然后由建立话路来打开相应CSM芯片的解码驱动(S102),使CSM芯片进入定时解码的工作状态(S103);最后解码工作结束后(即话路释放),关闭相应CSM芯片的解码驱动(S104)。
开始时,由于还没有任何话路被建立起来,因此计数器的值为零,列表为空。各个任务虽然被创建,但也只是处于挂起状态,而不会被分配任何CPU时间来运行。当建立话路时,解码驱动被打开,根据所分配的帧偏置来激活对应的RTOS任务,该任务的计数器值加1,且将相应的CSM芯片编号加入列表,然后只要话路保持畅通,每次该帧偏置时间边界到来时,此任务都会被调度进行反向信道数据帧的接收。当结束话路时,任务计数器减1,并且将相应的CSM芯片编号从列表中删除。如果此时计数器的值为零,解码驱动被关闭,下次话路仍在此帧偏置建立,否则该任务不会再被调度。
图2是创建各帧偏置对应的静态解码驱动任务的流程图。该流程先复位任务的状态(S202),然后依次以帧偏置(从0到15)创建16个RTOS任务(S203),并启动这16个任务(S204)。其中创建任务和启动任务都通过RTOS相应的系统调用来完成。
各帧偏置任务创建并启动后,立即等待“打开解码驱动”信号,等待的方式为只要该信号不到就永远等待。而在系统初始化阶段或者没有通话时,该信号是不会被发送的,因此这些任务都不会被RTOS调度起来,即并不占用CPU运行时间。
图3表示了指定CSM芯片打开解码驱动的流程(S102)。此流程以CSM芯片号(即CEM实例号)为参数,并指定了解码驱动的模式(S301)。如果该指定模式无效,则结束此流程,否则,通过调用底层的设备I/O函数读取该指定CSM芯片被设置的帧偏置(S302,当上层应用开始一次打开解码驱动的流程之前,相应CSM芯片的帧偏置已被设置)。然后将此CSM芯片号添加至该帧偏置所对应的RTOS任务的芯片列表中,同时计数器加1(S303)。在CSM芯片被设置为指定的解码模式后(S304),判断对应RTOS任务的计数器值是否大于0并且任务尚未被激活(即还没接收到“打开解码驱动”信号),如是,则向该任务发送“打开解码驱动”信号(S306)以激活该任务,使之能被RTOS调度。
图4显示了各RTOS任务的工作流程,它们的任务主体函数以帧偏置为参数。
各任务在被创建和启动后,首先根据帧偏置计算解码中断信号时间边界值(S401),然后立即开始等待“打开解码驱动”信号(S402),等待方式为永远等待。在这种情况下,各任务都处于未激活状态,且计数器值为零,芯片列表为空。只有当上层应用进行打开某CSM芯片解码驱动的操作时,该CSM芯片帧偏置所对应的RTOS任务才会因为接收到“打开解码驱动”信号而被激活(S404),从而也能够被操作系统调度起来。
由于在反向业务信道上要确保每20毫秒接收一条数据帧,因此需要通知定时模块增加一个解码帧中断边界信号(S405),该边界值即为S401中计算得到的结果。然后此任务以一定的时限等待“关闭解码驱动”信号或解码帧中断边界信号(S406)。
若接收到“关闭解码驱动”信号(S407),则此任务重新回到未激活状态(S408),同时还要将在S405中添加到定时模块的定时信号去除(S409),然后转到继续永远等待“打开解码驱动”信号(S402);若接收到解码帧中断边界信号(S410),则通过调用底层提供的设备I/O函数,依次对列表中的各CSM芯片的解码数据进行处理(S411),然后继续以同样的时限等待上述两种信号之一;由于各RTOS任务为静态创建的,且一直处于运行(但并非总被调度)状态,因此各任务主体都永远不会结束,除非整个系统被复位。
RTOS任务所等待接收的“关闭解码驱动”信号是由上层应用在释放话路时调用接口函数,在满足一定的条件下才发送的。对于上层应用来说,只关心相应于所释放话路的解码驱动是否能取消激活,至于RTOS任务是否也取消激活则并不关心。而在底层,一旦RTOS任务接收到了“关闭解码驱动”信号就会立刻将状态跃迁为“未激活”,从而影响RTOS任务在后面是否仍会被调度。
图5显示了关闭解码驱动的流程,它即表示上层应用关闭解码驱动时所调用接口函数的流程,而非如图4所描述的取消激活RTOS任务。上层应用首先通过调用底层的设备I/O函数读取该指定CSM芯片被设置的帧偏置(S501),然后将此CSM芯片从该帧偏置所对应RTOS任务的芯片列表中删除,同时计数器值减1(S502)。如果此时对应RTOS任务的计数器值等于零并且任务处于激活状态,则向该任务发送“关闭解码驱动”信号(S504),对于RTOS任务来说,此时就应该转入S408,状态变为“未激活”,不会再被RTOS调度。除非上层应用再次打开解码驱动从而向对应RTOS任务发送“打开解码驱动”信号,该任务才会被RTOS再次调度。
权利要求
1.一种实现基站调制解调器芯片解码驱动的方法,其特征在于,包括以下步骤创建所有RTOS任务并初始化,建立话路;(S101)打开对应的CSM芯片的解码驱动,更新任务状态;(S102)调度任务,进行解码;(S103)关闭对应的CSM芯片的解码驱动,更新任务状态,然后释放话路。(S104)
2.如权利要求1所述的实现基站调制解调器芯片解码驱动的方法,其特征在于,所述创建所有RTOS任务(S101)包括将任务的状态复位(S202),然后依次以帧偏置(从0到15)创建16个RTOS任务(S203),并启动这16个任务(S204)。
3.如权利要求1所述的实现基站调制解调器芯片解码驱动的方法,其特征在于,所述打开对应的CSM芯片的解码驱动(S102)包括以CSM芯片号为参数,指定解码驱动的模式(S301);如果该指定模式无效,则结束此流程,否则,通过调用底层的设备I/O函数读取该指定CSM芯片被设置的帧偏置(S302);将此CSM芯片号添加至该帧偏置所对应的RTOS任务的芯片列表中,同时计数器加1(S303);在CSM芯片被设置为指定的解码模式后(S304),判断对应RTOS任务的计数器值是否大于0并且任务尚未被激活(S305),如是,则向该任务发送“打开解码驱动”信号(S306)以激活该任务,使之能被RTOS调度。
4.如权利要求1所述的实现基站调制解调器芯片解码驱动的方法,其特征在于,所述调度任务进行解码(S103)包括根据帧偏置计算解码中断信号时间边界值(S401);然后立即开始等待“打开解码驱动”信号(S402),等待方式为永远等待;判断接收的信号是否为“打开解码驱动”(S403),如否,则结束;如是,则使CSM芯片帧偏置所对应的RTOS任务被激活(S404);增加一个解码帧中断边界信号(S405);以一定的时限等待“关闭解码驱动”信号或解码帧中断边界信号(S406);判断是否接收到“关闭解码驱动”信号(S407);如是使此任务重新回到未激活状态(S408),将在S405中添加到定时模块的定时信号去除(S409),然后转到S402;如没有接收到“关闭解码驱动”信号,则判断是否为解码帧中断边界信号(S410),如否,则返回S406;依次对列表中的各CSM芯片的解码数据进行处理(S411),然后返回S406。
5.如权利要求1所述的实现基站调制解调器芯片解码驱动的方法,其特征在于,所述关闭解码驱动(S104)包括读取所指定CSM芯片被设置的帧偏置(S501);然后将此CSM芯片从该帧偏置所对应RTOS任务的芯片列表中删除,同时计数器值减1(S502);判断对应RTOS任务的计数器值是否等于零并且任务处于激活状态(S503),如否,则结束;该任务发送“关闭解码驱动”信号,使该任务状态变为“未激活”;(S504)结束。
全文摘要
本发明提出了一种在基站调制解调器CSM芯片中驱动解码的方法:包括:创建所有RTOS任务并初始化,建立话路;打开对应的CSM芯片的解码驱动,更新任务状态;调度任务,进行解码;关闭对应的CSM芯片的解码驱动,更新任务状态,然后释放话路。采用本发明,对于有24个CSM芯片的CEM硬件平台,当所有的芯片都被建立话路时,CPU的占用率为70%左右,可以提高资源利用,使系统运行更稳定,更高效。
文档编号H04W76/06GK1384631SQ0111283
公开日2002年12月11日 申请日期2001年4月30日 优先权日2001年4月30日
发明者沈弘 申请人:深圳市中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1