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

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

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

GPPGPPMessageQueueMessage to GPPDSPMSGVerifyMessageMSGMessage to DSPDSPMessageQueue 图16 MESSAGE 的消息流程

MESSAGE例程经过编译生成GPP端的应用程序messagegpp和DSP的应用程序message.out。如上图所示,在GPP端,messagegpp在初始化阶段打开一个消息队列,将message.out载入DSP中运行,然后一直等待接收DSP端的消息,校验后再把消息回送到DSP应用程序中;在DSP端,DSP端在初始化阶段同样打开一个消息队列,然后先发送消息到GPP应用程序,然后一直等待接收GPP端的消息。本文用MESSAGE例程在GPP和DSP端多次传递消息,测量ARM与DSP相互通信的平均延迟时间。 4.4.4 GPIO驱动程序设计

针对前面设计的任务切换时间和中断响应时间测试方案,GPIO驱动程序需要实现两个功能:GPIO电平信号输出和GPIO中断响应支持。为方便调试和测试,GPIO驱动程序并没有直接编译进内核中,而是以模块方式动态地加载到内核中。驱动模块的编写与相关知识请参考《Linux设备驱动程序》第三版和《Linux设备驱动开发详解》,这里只介绍GPIO的电平信号输出和GPIO中断响应支持两个功能在驱动程序中的设计与实现。 (1) GPIO电平信号输出

根据数据手册sprue25a,设置GPIO0信号的输入与输出,需对寄存器DIR01,OUT_DATA01,SET_DATA01,CLR_DATA01和IN_DATA01进行配置。驱动程序只需实现GPIO0电平信号输出,所以先要对DIR01的0位置0,设置GPIO0为输出模式;再对OUT_DATA01和SET_DATA01相应位置位即可控制GPIO0的高低电平输出。实际上,在驱动程序中并不需要直接操作寄存器,而是调用由gpio.c提供的接口函数即可实现。

26

gpio.c放在arch/arm/mach-davinci下,它封装了相关寄存器的操作函数,向外提供了部分接口函数。这里,驱动程序使用gpio_request() 申请GPIO0,通过gpio_direction_output()设置GPIO0为输出模式,通过gpio_set_value()来控制GPIO输出电平的高低。具体实现详见附录F。

(2) GPIO中断响应支持

DM6441的GPIO引脚共有71个,每个GPIO都可配置为中断输入模式,优先级同样可在board_evm.c中自定义或在驱动程序中直接配置优先级寄存器INTPRIn。如下表1所示[23],在DM644x平台中,除了GPIO0-GPIO7外,其他63个GPIO都共用五个GPIO bank中断线。在gpio.c中,GPIO0-GPIO7也被注册到GPIO bank中断线,但实际上他们会在irq.c中重新注册。其中,GPIO0-GPIO15共用IRQ_GPIOBNK0(56)中断线,GPIO16- GPIO31共用IRQ_GPIOBNK1(57)中断线,GPIO32-GPIO47共用IRQ_GPIOBNK2(58)中断线,GPIO48-GPIO63共用IRQ_GPIOBNK4(59)中断线,GPIO64-GPIO70共用IRQ_GPIOBNK5(60)中断线。

表1 GPIO 作为ARM和DSP的中断源

Interrupt Source

GPIO0 GPIO1 GPIO2 GPIO3 GPIO4 GPIO5 GPIO6 GPIO7 GPIO Bank 0 GPIO Bank 1 GPIO Bank 2 GPIO Bank 3 GPIO Bank 4

Acronym GPIO0 GPIO1 GPIO2 GPIO3 GPIO4 GPIO5 GPIO6 GPIO7 GPIOBNK0 GPIOBNK1 GPIOBNK2 GPIOBNK3 GPIOBNK4

ARM Interrupt Number

48 49 50 51 52 53 54 55 56 57 58 59 60

DSP Interrupt Number

64 65 66 67 68 69 70 71 72 73 74 75 76

27

根据前面GPIO中断响应时间的测试方案,配置对GPIO0的中断响应支持,GPIO0在ARM端的中断号为48。根据TI数据手册sprue25a,GPIO的中断设置流程如下图17所示(TI,2010),具体实现见附录F。

配置成GPIO,申请GPIOgpio_request()设为输入模式gpio_direction_input()设置中断触发类型gpio_irq_type()使能中断enable_irq()申请中断request_irq() 的中断设置流程 图17 GPIO

同样地,DM644x的GPIO驱动复杂的部分被gpio.c封装了,gpio.c放在arch/arm/mach- davinci下,它封装了相关寄存器的操作函数,向外提供了部分接口函数,为GPIO驱动程序设计提供了参考。其中驱动程序中使用的函数gpio_request(),gpio_direction_input()都是gpio.c提供的接口函数;中断使能函数enable_irq()和中断申请函数request_irq()是Linux内核提供的通用函数。设置中断触发方式函数gpio_irq_type()被gpio.c封装了,需在驱动程序重新编写。设置GPIO0中断触发方式对应的寄存器为SET_RIS_TRIG01(24h),CLR_RIS_TRIG01(28h),SET_FAL_TRIG01(2Ch),CLR_FAL_TRIG01(30h)。在驱动程序中通过IO_ADDRESS把寄存器物理地址映射为逻辑地址,具体实现如下: #define SET_RIS_TRIG01 IO_ADDRESS(DAVINCI_GPIO_BASE + 0x24) #define CLR_RIS_TRIG01 IO_ADDRESS(DAVINCI_GPIO_BASE + 0x28) #define SET_FAL_TRIG01 IO_ADDRESS(DAVINCI_GPIO_BASE + 0x2C)

28

#define CLR_FAL_TRIG01 IO_ADDRESS(DAVINCI_GPIO_BASE + 0x30)

其中DAVINCI_GPIO_BASE是GPIO寄存器的起始地址,其定义在include/asm/arch- davinci下的Hardware.h中,其值为0x01C66800。

本驱动需配置GPIO0为上升沿触发方式,对寄存器SET_RIS_TRIG01的0位置1即可,详见附录F的set_gpioirq_type()函数。 4.5 本章小结

本章先是介绍了Rhealstone法、进程分派延迟时间法和三维表示法等时间性能测试方法,并简单提及了Timepegs,Intlat,Schedat,Amlatt和Lmbench等测试工具。描述了具体的实验平台,设计了在一定负载下对任务切换时间和中断响应时间的分别进行软件测试和硬件辅助测试的方案,并介绍了GPIO驱动程序的设计。在任务切换时间测试方案中,设计采用管道发送令牌,利用管道读写令牌阻塞时产生任务切换。中断响应时间测试方案中设计了对GPIO中断响应时间和利用MESAGE例程对DSPLINK消息传递时间的测试。

29

5 MontaVista Linux时间性能测试

上一章设计了基于DM6441对MontaVista Linux时间性能的测试方案,下面先介绍测试平台的搭建,然后根据测试方案对MontaVista Linux的实时性能进行测试,并对测试数据进行处理和分析。 5.1 测试方案实施介绍

为了对MontaVista Linux的实时性能进行测试验证,本文工作主要分为三个阶段:开发环境搭建、Linux系统移植和实时性能分析与测试评估。

(1) 开发环境搭建

开发环境搭建的前提是已设计好实验平台,包括软硬件平台。DM6441的开发环境搭建不像三星S3C2410,S3C2440,ATMEL的AT91SAM9260之类的单核ARM那么简单,因为DM6441还有DSP端的开发环境,以及双核之间的通信和程序编译等问题,所以在DM6441上进行开发第一步就是要搭好开发环境(王丹,2007)。在开发主机上搭好Linux环境后,安装配置TI提供的DVSDK工具链、软件开发包(MontaVista Linux内核)和Code Composer Studio IDE(CCS集成开发环境)等。

(2) Linux系统移植

Linux系统移植包括UBL、UBOOT、KERNEL、ROOTFS和DEVICE DRIVERS移植。

(3) 实时性能测试与数据分析

对MontaVista Linux的实时性能测试主要是对任务切换时间和中断响应时间两个关键时间参数,分别采用软件编程和结合示波器的方式进行测试。对于任务切换时间测试,创建两个进程,并在两进程间通过管道发送和读取令牌,阻塞引起任务切换,然后通过编程读取计算系统时间和示波器观测GPIO引脚电平持续时间,从而测得任务切换时间。对于中断响应时间测试,将一个GPIO引脚置为输出,另一个置为中断输入,两引脚相连。通过控制引脚输出高电平触发中断,在中断服务程序中将输出引脚电平置低,通过用示波器观测输出引脚的高电平持续时间来测得中断响应时间。最后,对测试数据进行分析,评估MontaVista Linux的时间性能,得出结论。 5.2 测试平台搭建

5.2.1 DM6441开发环境搭建

DM6441的开发环境搭建不像三星S3C2410,S3C2440,ATMEL的AT91SAM9260

30

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

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