欢迎来到天天文库
浏览记录
ID:5597466
大小:31.00 KB
页数:8页
时间:2017-12-19
《dsp错误检测和纠正功能在基站中应用》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、DSP错误检测和纠正功能在基站中应用 摘要:通信系统要求高稳定性,但外部恶劣的电磁环境会导致基带板所使用DSP中的存储器发生单粒子翻转(SEU),从而导致系统异常复位。针对该问题,着重介绍了如何应用DSP的错误检测与纠正(EDAC)功能,以及如何解决EDAC应用与cache操作之间的冲突。通过实际应用,基站出现SEU异常的机率明显降低,系统稳定性得到提高。关键词:错误检测与纠正;单粒子翻转;基带板;高速缓存中图分类号:TN710?34;TP368.1文献标识码:A文章编号:1004?373X(2014)05?0047?030引言8目前无线通信应用极为
2、广泛,为了提高通信质量和覆盖区域,需要在不同的地区建立基站。在一些电磁环境比较恶劣的地点[1],或者受外部辐射影响[2],基站中的一些大规模集成电路常常会受到干扰,导致不能正常工作。德州仪器(TI)C64x+DSP在通信系统的基带单板上具有广泛应用,在实际使用中,基带板偶尔会出现异常复位,通过排查发现其中有些复位的原因是由于程序空间或数据空间的某个位发生了翻转,导致指令改写或是所使用的数据错误,最终导致程序跑飞或资源冲突异常而复位。为了能够对位错误的异常进行检测和处理,引入了EDAC功能来提高系统的可靠性。本文TI公司生产的C64x+系列DSP中的ED
3、AC基本原理与其他芯片EDAC的实现原理相类似,均是以汉明码为基础实现纠检错功能[2?6],但也具有其自身的特点,首先对该DSP芯片的EDAC功能做一个简要介绍。1C64x+EDAC功能说明EDAC是TIC64x+DSP提供的用来对L1P和L2空间进行错误检测和纠正的一项功能,该功能主要用来保护程序空间和不经常更新的数据空间。当对L1P、L2空间进行读操作时,可以通过该功能来检查此次读取的数据是否发生某位错误的异常。如果发生了,则该功能可以对L1P空间的1位翻转进行检测;对L2空间的1位的翻转进行检测与纠正,但多位的翻转无法进行纠正,但是可以通过中断事
4、件通知CPU,CPU采取相应的策略来降低基带单板复位的风险。在DSP上电时EDAC功能是未使能的。当错误检测逻辑未使能时,对L1P、L2的写操作将导致相关的有效位(validbit)被清0。可以通过对寄存器设置来使能L1P、L2的错误检测功能,同时也可以设置检测L2空间的范围。使能后,在写操作的地址为256b对齐,且数据长度为256b时,将更新位于L2RAM中存储的校验位和有效位,如果写操作的数据小于256b,则更新校验位RAM空间相应的有效位表明为“无效校验位”[7?8]。8DSP通过汉明码来检查256b内的多位错误和纠正单位错误。在使能了EDAC功
5、能后,CPU每次在对L1P、L2空间进行读操作时,都会进行错误检测,并且所有的读操作都是256b对齐。但在通过DMA/IDMA对L1P进行读操作时,只有当读取的数据大小为256b或256b的整数倍时,才会进行EDAC的检测。图1是错误检测的逻辑,从该逻辑图中可以看到,错误检测时先将读到的256b数据进行逐位异或计算的校验位与写操作时保存在L2RAM中的校验位进行异或比较,然后与有效位进行与操作,即最终的结果是由有效位和校验位来共同决定的。当在进行读取或DMA/IDMA读访问时检测到位翻转异常,则会输出相应的异常。L1P产生一种异常,L2空间能够产生两种
6、异常,通过中断处理器交给CPU进行异常处理。2EDAC功能实现在调试EDAC功能的过程中,发现会发生SEU错误误报的问题,通过定位和分析,确定与L2cache一致性(coherence)操作有关,通过与TI沟通,确认芯片的EDAC存在一个缺陷,最终TI发布了勘误表并给出了具体的原因和规避方法。产生该问题的原因是:当L2在进行cache一致性操作时,如果在操作完成之前,CPU的操作产生L1dcachevictim,那么L1dvictim操作会错误地将L1d8EDAC的有效位置为1,导致CPU在从L1d进行读操作时EDAC会对L1d空间进行检测,而之前L1
7、d空间并没有生成校验数据,从而使得EDAC错误的上报EDAC检测到异常(虽然EDAC文档中说其不监测L1D空间,但是EDAC相关的有效位,校验位仍存在,只是没有去使用)。如果在cache操作的过程中存在CPU的操作,或者在cache操作的时候有中断发生而进入中断响应函数,这些都会导致产生L1dcachevictim[9]。2.1EDAC缺陷的规避方法根据TI提供的解决方法和DSP使用cache的实际情况,通过以下方法来进行规避。首先在所有的cache操作之前进行中断屏蔽,其次使用cache操作的汇编函数来避免cache操作本身产生L1dvictim。在
8、使用中断屏蔽时,要注意cache操作的数据长度,如果数据长度过长的话,为了避免中断屏蔽时间过长
此文档下载收益归作者所有