引言
随着多核产品的日益普及,对跟踪调试系统解决方案的性能要求也愈来愈高。ARM公司针对复杂片上系统(SoC)设计推出了高度可配置的跟踪调试解决方案ARMCoreSightSoC,它满足了软件开发人员在SoC设计方面需要更高可视性的要求。在嵌入式应用系统复杂性越来越高的今天,跟踪调试技术在整个系统开发过程中所占的比重也越来越大。因此,拥有高效、强大的跟踪调试技术可以大大减少整个系统的开发时间,缩短产品面市时间,减轻系统开发的工作量。
在TD-LTE多模基带平台的开发中,既要满足多种模式(TD-LTE、TD-SCDMA和GSM)下跟踪技术的一致性,又要满足TD-LTE的高效率要求,更要保证跟踪信息的有序性、正确性和实时性,这对跟踪技术提出了更高的要求。通过对原始跟踪技术方案与新跟踪方案的性能进行对比分析,来选择更加适合TD-LTE多模基带平台的跟踪软件技术。
1 总体概述
在多模终端的开发中,跟踪技术对终端的性能有着至关重要的作用。由于本项目是多模单带芯片的开发,多种系统的模式切换对微处理器的要求较高,鉴于ARM11系列处理器具有超强的性能,采用ARM新指令架构——ARMv6设计实现,故本项目采用ARM1176JZ内核。
ARMv6架构通过以下几点来增强处理器的性能:
①多媒体处理扩展,使MPEG4编码/解码速度和音频处理速度加快一倍;
②增强的Cache结构,实地址Cache4减少Cache的刷新和重载,减少上下文切换的开销;
③增强的异常和中断处理,使实时任务的处理更加迅速;
④支持Unaligned和Mixed-endian数据访问,使数据共享、软件移植更简单,也有利于节省存储器空间。
在多模芯片的开发中,本项目将跟踪技术作为芯片软件开发中的一个小模块来处理,其系统结构如图1所示。
当其他模块有跟踪信息打印时,其他模块调用TRACE模块提供的打印函数。TRACE模块接收到打印信息后,通过设置打印参数来判断是否需要把这些打印信息发送到PC机。如果需要,则通过UART串口将打印信息传送到PC机的TRACE跟踪软件,TRACE模块对其进行解码之后,通过解码软件显示出来。
2 原始跟踪方案
2.1 缓存管理机制
原方案中的缓存管理机制采用备份缓存管理机制,采用含跟踪头和跟踪信息的跟踪信息帧格式,将跟踪信息写入一个大小为128 KB的全局跟踪信息缓存中。为避免在任务切换频繁时,当前任务被高优先级任务打断造成数据丢失,申请一个16 KB的备份缓存用于存放高优先级任务跟踪信息。若当前跟踪源在进行写人操作,高优先级任务调用跟踪接口,当前跟踪源的任务就被抢占,则将高级任务的跟踪信息写入备份缓存中,当前跟踪源继续进行当前未完成的写操作。
每次写完当前跟踪信息,检查备份缓存中是否有数据,若有,则将备份缓存中的跟踪信息拷回至全局跟踪信息缓存中,从而保证全局跟踪信息缓存中跟踪信息的连续性,原始方案跟踪缓存场景图如图2所示。在本方案中,缓存机制内部采用svnsprintf函数将跟踪信息写入缓存,该函数可以满足跟踪源打印多个变量的值,通过遍历参数列表,找出跟踪源需要打印参数的类型和个数,这样跟踪源在打印动态临时字符串时使用统一的跟踪接口,使其他模块的跟踪源在使用跟踪接口时更加方便。
2.2 跟踪控制机制
原始方案的跟踪通过类别和进程进行控制,进程的控制包括变量、主函数和子函数。PC端通过跟踪控制工具发送相应的AT命令,在终端的内存中读取相应的设置值。若读取的设置值与跟踪源的值相等,则打印出该条跟踪;若不相等,则丢弃本条跟踪。在本方案中所有的跟踪控制都是在跟踪接口内部,这样对各种跟踪信息的控制更加明确和具体,通过switch…case语句对跟踪类型进行判断,从而决定屏蔽跟踪信息还是打印跟踪信息。原始跟踪控制图如图3所示,每种模式的跟踪控制都采用同样的机制,图3中以TDS模式下的跟踪控制为例进行介绍。
2.3 传输控制机制
实时跟踪系统通过串口在PC端和ARM子系统之间进行通信,采用DMA总线控制器进行跟踪信息搬移。DMA是一种不经过ARM处理器的CPU,可直接从内存中存取数据的数据交换模式。在DMA模式下,CPU只需向DMA总线控制器下达指令,就可使其处理数据的传送,接收数据传送完毕的反馈信息,从而大大降低了CPU资源占有率。传输控制单元采取DMA同步中断发送跟踪信息,每次以等长字节传输,将跟踪信息搬移至串口发送寄存器中,再通过配置串口发送寄存器,将跟踪信息发送至PC端解析显示单元。
3 优化后跟踪方案
3.1 新跟踪缓存的管理
本设计方案采用的缓存机制是利用所有跟踪函数在进入跟踪时,均能够确切知道当前跟踪信息所需存储空间长度的特点,为当前跟踪信息预留出所需要的存储空间。当低优先级任务的跟踪信息被高优先级任务跟踪信息抢占时,内存中已经为低优先级任务的跟踪信息预留了存储空间,不会导致跟踪信息丢失和错乱的情况,新缓存机制图如图4所示。
通过维护两个写索引和一个全局读索引来管理缓存,其中两个写索引分别为全局写索引和当前写索引,全局写索引用来与全局读索引进行匹配,通过这两个索引来计算缓存的剩余空间和已用空间,从而判断何时发送和写入跟踪信息;而当前写索引的作用就是为当前的跟踪信息预留空间。在本设计中摒弃了svnprintf函数,采用memcpy函数直接将跟踪信息写入缓存中,并且采用固定参数的跟踪接口,跟踪源根据跟踪信息的不同需求,调用相应变量的跟踪接口。
3.2 新跟踪控制机制
新跟踪控制机制的所有控制都由各个模块的跟踪源以函数宏定义的形式对跟踪接口进行重新封装,将跟踪信息的判断放在跟踪接口的外部。跟踪控制的场景不再进行详细的划分,考虑采用横向和纵向两个方面来对跟踪进行控制。横向的控制通过对跟踪信息的重要程度来划分,包括全开放、半开放、速率测试、用户释放和测试终端等方面;纵向的控制是系统中各个模块的跟踪信息的控制,当开发人员需要查看某个或某些模块的跟踪信息时,通过设置相应的值来输出预想模块的跟踪信息。新跟踪控制图如图5所示。
4 性能对比分析
通过原始跟踪方案与新跟踪方案的性能测试与对比分析得出,新跟踪方案提高了ARM执行效率表现在3个方面:
①在跟踪控制方面,原始跟踪方案的跟踪控制过于细致,跟踪判断过程过于复杂繁琐,多层的switch…case嵌套判断消耗了一些处理器的时间;新跟踪的控制采用跟踪接口外部控制,若当前跟踪不需要打印时,则当前任务不会进入跟踪接口,直接丢弃本条跟踪,这样避免了函数上下文切换的过程,减少了任务栈的切换,从而提高了执行效率。
②缓存管理方面,原始跟踪方案采用嵌套缓存,高优先级任务的跟踪信息写入嵌套缓存中,当需要输出跟踪信息时,需要将嵌套缓存中的数据回拷到全局跟踪信息缓存,在回拷的过程中白白地消耗了处理器的时间。而新跟踪缓存中,将所有的跟踪信息全部存储到一个缓存中,直接将跟踪信息输出,节省了回拷过程的时间,从而为处理器处理其他事件提高了效率。
③新跟踪方案在跟踪接口内部摒弃了svnprintf函数,直接将跟踪数据memcpy转移到跟踪缓存中。原始方案中,跟踪数据的原始码流通过svnprintf函数在ARM内部进行字符串的转化过程,再通过PC端的解码软件来解析原始码流,从而转化成可见字符串,省去了函数遍历参数的过程(该过程消耗了ARM的执行时间)。从变参的跟踪接口优化成定参跟踪接口,这种方式大大地提高了ARM的执行效率。
对于两种跟踪方案的测试分析,采用调用一条相同的跟踪信息所消耗的TD-LTE中一个子帧的时间片来统计时间,从而对比原始跟踪方案与新跟踪方案的效率提高程度。TD-LTE的一个无线帧长为10 ms,一个无线子帧又分为两个5 ms的半帧,每个半帧中有5个1 ms子帧,每个子帧有0x7800个时间片。
跟踪性能分析图如图6所示,在原始跟踪方案中调用5次跟踪接口打印字符串”ts_00_tra01_01tdynamicTrace01”及相应个数的变量的值,跟踪信息消耗的时间为T_old=(0x5679-0x481C)×(1/0x7800)=0.119 7 ms。在新跟踪方案中,同样调用5次新跟踪方案,跟踪接口打印同样字符串的内容及相应个数的变量的值,跟踪信息消耗的时间为T_new=(0x4809-0x4188)×(1/0x7800)=0.052 6 ms。由此可见,T_old的消耗时间大约是T_new的2倍,新跟踪方案节省了一半以上的时间,然后又多次对各种跟踪接口进行验证、测试、对比后,再次确认了新跟踪方案对ARM的执行效率有很大的提高。
结语
在多模基带的跟踪方案中,由于跟踪的传输通道只有一个,不能在不同的系统模式下采用不同的跟踪方案,并且TD_LTE多模方案中不仅要求跟踪信息的可靠性、时序性和正确性,对跟踪方案在ARM子系统中的执行效率也有所要求,不能影响TD-LTE的高速率的业务需求。综上考虑,本项目中采用新的跟踪方案可以满足TD-LTE多模基带平台下ARM子系统的执行效率要求和数据业务的速率要求。s
作者:彭涛 吕敏 来源:现代电子技术