77范文网 - 专业文章范例文档资料分享平台

Linux系统实时响应特性分析与实验验证——基于Ti达芬奇DSP系列TM(6)

来源:网络收集 时间:2018-12-20 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

即可得出系统的任务切换时间。 (2) 计时方式

DM6441没有提供时间印记计数器( time stamp counter, TSC),不支持用RDTSC指令直接获取CPU时间戳来精确计时。因此考虑通过系统调用和测量GPIO引脚电平持续时间的硬件辅助测试方式。

① 系统调用方式

嵌入式实时操作系统一般都有用于计时的系统调用,如gettimeofday()和clock_gettime()等。其中gettimeofday()精确度可达微秒级,clock_gettime()更是达到纳秒级的精确度,可以满足大部分测量要求。经测量,进程切换时间也是微秒级的,用clock_gettime()更为合适。另外,由于系统调用时有一个压栈、出栈的过程,以及从用户态到内核态的转换,这个过程对计时会产生一定的影响,可通过测量多次进程切换的时间求平均值来消减误差。clock_gettime()是从用户空间取得时间的接口,在内核中对应系统调用为sys_clock_gettime(),其函数原型如下:

long sys_clock_gettime(clockid_t clk_id, struct timespec *tp);

clockid_t clk_id用于指定计时时钟的类型,有以下四种比较常用类型:

? CLOCK_REALTIME:系统实时时间,随系统实时时间改变而改变,即从UTC1970-1-1 0:0:0开始计时,中间时刻如果系统时间被用户该成其他,则对应的时间相应改变; ? CLOCK_MONOTONIC:从系统启动起开始计时,不受系统时间被用户改变影响; ? CLOCK_PROCESS_CPUTIME_ID:本进程到当前代码系统CPU花费的时间; ? CLOCK_THREAD_CPUTIME_ID:本线程到当前代码系统CPU花费的时间。 struct timespec *tp用来存储当前的时间,timespec数据结构定义在文件中,形式如下: struct timespec {

};

任务切换时间测试程序流程图下图13所示,具体实现程序见附录C。

time_t tv_sec; long

tv_nsec;

/* seconds */ /* nanoseconds */

21

开始父进程初始化sched_setscheduler()设置调度策略和优先级fork()创建子进程sched_setscheduler()设置调度策略和优先级clock_gettime()记录开始时间pipe管道读写阻塞相互切换pipe管道读写clock_gettime()记录结束时间结束子进程计算切换时间并输出结束父进程 图13 任务切换时间软件测试流程图

② 硬件辅助测试方式

通过clock_gettime()系统调用方式计时,纳秒级的精确度已经可以满足要求。但系统调用用的是内部时间,对具体实验环境有很强的依赖性。为提高测试结果的有效性和可信度,采用外部硬件设备辅助测试。在相同的系统硬件环境下, 分别通过软件编程和硬件辅助设备测试系统的实时性能,并比较分析其结果, 以达到互相验证、互相支持的目的。

测试采用的示波器是Tektronix的TDS 1012型号,采样频率为100MHz,计时精确度也可以达到10ns。采用示波器测量引脚信号前,需移植GPIO驱动以支持测试程序对测量引脚的控制。为了方便调试,测量引脚驱动程序采用内核模块动态加载方式(Jonatban

22

Corbet,et al,2006;朱宝华,2008)。GPIO驱动程序具体实现见附录F。硬件辅助测试程序大部分和软件编程测试程序相同,只是计时方式改为用示波器测量GPIO引脚信号。硬件辅助测试程序流程如下图14所示,具体实现见附录D。

开始父进程初始化Test_Pin=0fork()创建子进程sched_setscheduler()设置调度策略和优先级sched_setscheduler()设置调度策略和优先级Test_Pin=1pipe管道读写阻塞相互切换pipe管道读写Test_Pin=0结束子进程计算切换时间并输出结束父进程 图14 任务切换时间硬件辅助测试流程图

4.4.3 中断响应时间测试方案设计

从TI提供的DM6441数据手册和文档sprue25a可知,DM6441的ARM端中断控制器支持64个中断源,每个中断源可分别使能。每个中断源可通过设置优先级成为FIQ或IRQ两种中断类型。中断优先级可由用户自定义。中断优先级共有8级,若中断优先级

23

为(0x2-0x7),则ARM核将进入IRQ模式;中断优先级为(0x0-0x1),则ARM核将进入FIQ模式。中断优先级可根据实际需要在board_evm.c中修改。为评估Linux系统的中断响应性能,下面针对DM6441的GPIO中断以及ARM与DSP双核间中断设计测试方案。 (1) GPIO中断响应时间测试

GPIO的选择与功能分配:在参考文献中,王蕾等人在测中断响应时间时,外部中断触发信号是由外接信号源来提供的。这种方式需要用示波器同时测试信号源和另一个输出引脚两路信号,操作麻烦,而且误差较大。为此,本测试方案由测试程序控制一个GPIO产生中断触发信号。DM6441的GPIO引脚共有71个,每个GPIO都可配置为中断输入模式,优先级同样可在board_evm.c中自定义或在驱动程序中直接操作相应寄存器。本实验的目标板向外提供GPIO19和GPIO21两个引脚,GPIO19和GPIO21共用中断线IRQ_GPIOBNK1,中断号为57。然而,若使用GPIO19或GPIO21中一个GPIO作为中断输入引脚,另一个作为中断触发信号产生引脚,驱动程序中能共享中断方式申请中断,两个引脚电平变化都会触发中断,需在中断服务程序中判断是中断源。这给驱动程序的设计带来难度,并使计时误差增大。因此,在目标板另外引出一个独立中断源GPIO0作为中断输入引脚,GPIO19作为中断触发信号产生引脚。

计时方式的选择:如同任务切换时间测试,计时方式也有两种:系统调用和示波器测试。系统调用的方法是在测试程序中调用clock_gettime()函数获取GPIO19输出高电平前的时间,在驱动程序的中断服务程序中调用getnstimeofday()函数获取进入中断服务程序的时间,两时间之差即近似认为是中断响应时间。示波器测试的方法给GPIO19一个高电平,触发GPIO0中断,中断服务程序马上将GPIO19置低,通过示波器测量GPIO19高电平的持续时间,即为GPIO中断响应时间。这里是对每一次中断响应时间进行测试,若采用系统调用方式计时误差很大,故采用示波器测量的方式。

测试方案的确定:综上所述,本测试方案中,将GPIO19作为中断触发信号产生引脚,GPIO0作为中断输入,采用上升沿触发类型。两引脚相连,给GPIO19一个高电平,触发GPIO0中断并进入驱动程序中的中断服务程序,中断服务程序再将GPIO19置低,通过示波器测量GPIO19高电平的持续时间,即为GPIO中断响应时间。 (2) DSPLINK消息传递时间测试

既然本论文结合的平台是基于DaVinci技术的DM6441,实际产品开发应用中也是基于ARM和DSP的双核架构,通过双核通信机制(DSPLINK)实现协同工作,因此测试评估在Linux系统下的ARM-DSP双核通信延迟时间显得非常有必要。把DSPLINK消息传

24

递时间归类为中断响应时间的原因是在物理连接上看,不管哪种通信机制都是基于ARM与DSP间的相互中断。

DSPLINK即DSP/BIOSTM LINK,是基于DaVinci 架构处理器的ARM 与DSP 端进行通信,DSPLINK提供了一套通用的API,从应用层抽象出ARM 与DSP 的物理连接特性,从而降低用户开发程序的复杂度(TI,2010)。DSPLINK 可以为用户提供以下API服务:

? 基本的处理器控制; ? 基于逻辑通道的数据传输;

? 基于DSP/BIOS的MSGQ模块的消息传递机制,支持Zero Copy和Processor Copy两

种物理机制的消息传递。

如图15(TI,2010)所示,DSPLINK分别将ARM处理器和DSP处理器抽象成GPP和DSP两部分。在GPP端,一般运行一个操作系统;在DSP端的LINK DRIVER是DSP/BIOS的驱动的一部分,负责基于物理连接上与GPP的交互。

DSP/BIOS TM LINK API PROCESSER MANAGERGPPOSOSADAPTATIONLAYERGPPDSP/BIOS LINKDRVERDSPOTHERDRIVERSLINKDRIVER

图15 DSPLINK的软件架构

为加快产品开发速度,TI在DSPLINK源码包提供了LOOP、MESSAGE、SCALE和READWRITE四个例程,详见参考文献。MESSAGE例程阐明DSPLINK 的基本的消息传输概念,演示GPP 端任务与DSP端任务间消息的传递,并自动计算消息从DSP到GPP,再从GPP回传到DSP所花时间(TI,2010)。本文正是利用MESSAGE这个功能来测试DSPLINK消息传递时间。MESSAGE 例程的消息流图如下图16所示:

25

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库Linux系统实时响应特性分析与实验验证——基于Ti达芬奇DSP系列TM(6)在线全文阅读。

Linux系统实时响应特性分析与实验验证——基于Ti达芬奇DSP系列TM(6).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/378763.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: