当前位置:首页 > 作文大全 >

TMS320C64x+系列DSP软件故障检测方法研究

发布时间: 2022-03-24 09:22:15 浏览:

在DSP的嵌入式系统中,当出现软件故障时,可能造成严重后果。因此,软件故障检测手段是十分必要的。研究了如何利用C64x+ DSP内存保护功能、AET(Advanced Event Trigger)功能以及EDAC(Error Detect And Correct)功能等手段对DSP软件故障进行检测。

【关键词】特DSP 软件故障 内存保护 AET

1 引言

在各种嵌入式系统中,DSP由于在数据处理速度方面有着不可比拟的优势,已成为通讯、电力、雷达、医疗等诸多产品中的关键部件。在DSP系统软件开发中,主要以C语言为主,因C语言本身的特性、程序规模和复杂度的增加,致使程序中很多异常在程序运行中才会显现出来,这些故障往往造成系统的不稳定甚至系统瘫痪。为了解决异常,调试所占的时间越来越长,提高调试效率的一个切入点是通过不同的方法尽快的确定程序异常的原因和位置。DSP程序异常检测手段有静态检测方式也有动态检测方式,有软件检测方法也有软硬件联合检测,考虑到很多软件故障在运行时发生,同时结合TMS320C64x+ DSP的特点和常见的异常,本文主要研究DSP软硬件结合的动态检测手段。

2 C64x+ 内存保护机制

2.1 内存保护的原理

C64x+的内部存储器是可读写的,从而带来了被改写的风险。例如,当数组越界时,会对临近的空间进行操作,或者外设在进行数据传输时由于地址错误,可能改写数据或程序空间,造成程序异常。C64x+的内存保护机制允许系统设置授权谁访问内存空间,为了实现内存保护机制,内存访问权限机制将内存空间划分成页,将 L1P 分成16 页,L1D 也分成 16 页,L2 最多可以分成 64 页。每一页配置一个权限集合,可以设置的权限包括了超级用户写、超级用户读、超级用户执行、一般用户写、一般用户读和一般用户执行。对于划分的页可以规定谁可以访问该页,以及是本地访问还是全局访问。对于多核DSP,本地访问是指本核 CPU 访问自身的内存;而全局访问是指其它核或可主动发起访问的外设(如EMAC、SRIO等)访问本核存储空间。总之,内存保护机制就是通过这些页来指定谁有权限,有哪些权限来访问 L1D、L1P 或 L2。内存保护硬件将会根据每一个内存保护页属性寄存器的设置执行两个任务:阻止未经许可的访问操作发生;根据检测到的无效访问产生相应的异常中断。

2.2 内存保护的实现

DSP内存保护机制的实现分为三个方面:内存空间分配,内存保护配置和异常配置。内存保护是以页为单位来进行控制的,在进行内存保护之前,对内存空间按功能需要进行分配。通常将数据空间和程序空间区分开,程序空间只能被 CPU 执行;数据空间可以分成 CPU 访问的空间和各外设访问的空间,如 SRIO 访问空间,EMAC 访问空间等。

内存保护配置主要根据之前设计的内存分配情况,利用内存保护模块提供的寄存器按照功能设置每页的属性,包括能被谁访问(配置对应的权限 ID 号)和能进行哪些访问(执行、读或写等)。

异常配置是指获取异常事件,记录相关的异常信息 并告知用户。这也是内存保护机制的最终目的,为此,内存保护硬件模块提供了一些异常事件标志,这些事件可以被 DSP 的中断控制器识别,从而通过控制中断控制器捕获这些异常。通过中断服务程序获取内存保护相关寄存器(如寄存器MPFAR保存发生故障的地址、MPFSR保存具体的故障类型)以及其他重要的数据,然后上报给上位机用于异常分析。

3 C64x+ AET和Trace功能

3.1 利用AET功能实现外存空间的保护

AET(Advanced Event Trigger高级事件触发) 模块是DSP 芯片内的一个可编程的硬件模块,该模块的主要功能就是用于监控 DSP 芯片内部总线,从而判断 DSP 的运行情况。AET 的功能通常是在 TI 的开发工具 CCS 上使用,通过仿真器进行程序的调试。但对于复杂的系统,很多问题在实际应用时才暴露出来,因此,主要研究AET在程序运行过程中的相关功能。

AET可以完成的功能主要有程序异常检测、程序运行轨迹跟踪、计数或计时。软件实现 AET 各种功能是通过创建不同的 JOB 来实现的,表1列出了软件可以创建的六种 JOB。每种 JOB 通过触发不同类型的事件,实现不同的功能,表2列出了每种 JOB 可触发的事件类型,通过选择不同的 JOB 和不同的触发类型即可实现不同功能。

利用DSP的内存保护功能可以实现DSP 内存中的异常检测,但是由于片内空间有限,通常需要外接片外存储器。对于外部存储器同样会发生数据改写而导致的系统异常。因此,有必要对 DSP外存中的异常进行检测。此时,我们可以利用AET的异常检测功能实现对DSP外存的保护。从表2 可知,只有 DAR JOB 可以监控某一段数据空间,并在异常时可以触发中断。DAR JOB是针对数据段的,要实现代码段的保护,就必须将其作为数据段进行保护。由于AET 硬件资源有限,不能同时建立多个 DAR JOB。所以,AET 实现代码保护功能只能选用 DAR JOB 实现程序代码的写保护。因为只能建立一个 DAR JOB,只能保护某一段代码空间,所以在使用 AET机制保护片外代码之前,必须先对存储空间进行划分,尽可能的将所有的代码集中到一起,以便统一保护。

3.2 利用AET Trace功能实现程序运行轨迹跟踪

程序轨迹跟踪功能(Trace 功能)是 AET 的重要功能,它能记录DSP 已经运行的每一条指令,通过记录下来的这些指令可以整理出程序的运行轨迹。从表2可知,利用 AET 实现程序轨迹跟踪可以通过 3 种 JOB 来实现,分别是 PAP、PAR 和 EVT JOB。使用这些 JOB 来实现轨迹跟踪的基本原则是一样的,就是确定轨迹跟踪的起始点和终止点,并在起始点触发轨迹跟踪开始功能,使其开始记录程序运行的信息;在终止点触发轨迹跟踪停止功能,从而结束信息的记录,保持原有数据不变。

不管采用上述哪种方式实现程序运行轨迹的跟踪,跟踪所得到的数据都存放在 AET 专用的存储器(ETB)内。它是一个循环缓冲区,容量只有 4KB,所以记录的信息量是有限制的。当采集到的数据量超过 4KB 时,之前的数据将被覆盖。通常是进入到异常中断时,将 ETB 中的数据读出并保存,以便知道程序最后一段时间内的运行轨迹。

通过ETB内数据的保存,得到一个4KB的二进制bin文件,该文件不能直接被开发工具解析,需要将其转换为tdf格式的文件,可以通过CCS3.3安装目录下的bin2tdf.exe工具来实现数据格式转换。然后利用CCS安装目录下的TraceDisplay.exe工具,导入tdf和out文件,即可以观察程序异常前的运行轨迹。

4 C64x+ EDAC功能

在电磁环境比较恶劣的环境下,DSP会受到干扰而发生1位或多位的状态翻转,使得程序指令或数据错误,导致系统不能正常工作,对于此类异常可以通过EDAC(错误检测与纠正)功能来定位。EDAC是TI C64x+ DSP提供的用来对L1P和L2空间进行错误检测和纠正的一项功能,该功能主要用来保护程序空间和常量数据空间。当对L1P、L2空间进行读操作时,可以通过该功能来检查此次读取的数据是否发生某位错误的异常。如果发生,则该功能可以对L1P空间的1位翻转进行检测;对L2 空间的1位翻转进行检测与纠正,但多位的翻转仅能检测而无法进行纠正,但是可以通过中断事件通知CPU,CPU采取相应的策略来降低系统复位的风险。

在DSP上电时EDAC功能是未使能的。当错误检测逻辑未使能时,对L1P、L2的写操作将导致相关的有效位(valid bit)被清0。可以通过对寄存器设置来使能L1P、L2的错误检测功能,同时也可以设置检测L2空间的范围。使能后,在写操作的地址为256位对齐,且数据长度为256位时,都将更新位于L2 RAM中存储的校验位和有效位,如果写操作的数据小于256bits,则更新校验位RAM空间相应的有效位为“无效校验位”。

当在进行读取或DMA/IDMA读访问时检测到位翻转异常,则会输出相应的异常。L1P产生一种异常,L2空间能够产生两种异常,通过中断处理器交给CPU进行异常处理。

5 异常信息的保存

在软件发生异常后,上述的几种定位手段中均会产生相应的异常事件,经中断控制器可以产生一个不可屏蔽的异常中断,为了定位异常原因,需要在中断处理程序中将相关的信息保存下来,例如相关的寄存器,程序中用于记录相关统计信息的变量、堆栈空间、ETB数据等等。上述收集到的信息仍旧存放在 DSP 的内存中,但由于很多异常将导致系统复位,之前保存的信息将全部或部分丢失。因此,需要这些信息上传给上层控制器或者保存在外部存储器中,在复位后获取这些数据并进行解析和分析。信息上报可以通过DSP的EMAC接口发送给上位机,上位机接收完后,可以复位DSP。

6 小结

本文针对DSP软件系统经常出现的指针、数组越界或外设导致的程序、数据被改写的错误,利用TMS320C64x+系列DSP不同功能的硬件,采用软硬结合的方法,采用多种手段实现对软件故障的检测。通过内存保护模块设置内存保护空间范围、访问权限,实现对内存异常的检测;通过AET功能对外部存储空间的保护,实现外存的异常检测,并利用AET Trace功能记录软件故障发生前的运行轨迹;利用EDAC功能对L1P和L2空间进行位翻转异常的检测。这些异常检测手段的应用将会大大提高系统调试的效率,提高系统的稳定性。

参考文献

[1]TMS320TCI6487/8 Communications Infrastructure Digital Signal Processor.[EB/OL].Dallas,Texas: Texas Instruments Incorporated.2007.http:///.

[2]TMS320C64x+ DSP Megamodule Peripherals Reference Guide.TI corporation.[EB/OL].Dallas,Texas: Texas Instruments Incorporated.2007. http:///.

[3]Advanced Profiling with XDS560 Trace.[EB/OL].Dallas,Texas:Texas Instruments Incorporated.2002. http:///.

[4]Using Advanced Event Triggering to Find and Fix Intermittent Real-Time Bugs.[EB/OL].Dallas,Texas:Texas Instruments Incorporated.2001. http:///.

[5]郑晓东,杨润丰等.DSP错误检测与纠正功能在基站中的应用[J].现代电子技术,2014(05).

作者单位

1.东莞职业技术学院电子工程系 广东省东莞市 523808

2.东莞理工学院 广东省东莞市 523808

相关热词搜索: 检测方法 故障 系列 研究 软件

版权所有:无忧范文网 2010-2024 未经授权禁止复制或建立镜像[无忧范文网]所有资源完全免费共享

Powered by 无忧范文网 © All Rights Reserved.。冀ICP备19022856号