TMS320C6412的PCI总线技术研究

来源 :教育科学博览 | 被引量 : 0次 | 上传用户:tangbao1006
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:本文介绍了在Windows2000/xp操作系统下,使用DriverStudio软件编写WDM模式的驱动程序,通过TMS320C6412的PCI接口,在PC机上实现了DSP信号处理程序的加载,启动,复位等功能,完成DSP系统与PC机之间控制与通讯。
  关键词:PCI总线; WDM模式; DriverStudio; TMS320C6412; DSP系统
  Research on PCI bus technology TMS320C6412
  Li Ming-ye,Zhou Jing
  (51st Research Institure of CETC,ShangHai 201802)
  Abstract:This article describes the use DriverStudio in Windows2000/xp operating system software to write the driver of the WDM model, through the PCI interface of TMS320C6412 DSP signal processing program on a PC to load, start, reset, etc., complete DSP systemcontrol and communications between the PC.
  Key words: PCIBus; WDM; DriverStudio; TMS320C6412; DSP System
  0 引 言
  在雷达领域的信号处理中,最费时间,即影响信号处理实时性的瓶颈是数据处理部分。数字信号处理器(digital signal processor简称DSP)在模拟信号变换成数字信号以后进行高速实时处理的专用处理器,是实现实时数字信号处理的有力工具。在本文描述的工程应用中,把数据处理部分从PC机的软件中分离出来,由PC机通过PCI接口把信号数据信息传输到DSP,交给DSP处理,然后把处理好的结果再传给PC机,这样不仅可以做到信号处理和数据管理并行进行,而且充分利用DSP对数字信号处理高速,并行的优势,提高了信号处理系统的实时性和稳定性。要实现以上功能,首先要解决好DSP信号处理模块与PC机之间的通讯问题。TMS320C6412提供的PCI总线接口以PCI总线特有的较高数据传输能力,通用性强等优势,大大提高了DSP信号处理机的性价比和可维护性,有利于解决信号处理机与主机间数据通讯的I0瓶颈。
  在window2000/XP系统下,为实现系统的稳定性和可靠性,只有在内核模式下,通过驱动程序对硬件进行访问。信号处理系统的用户软件要通过TMS320C6412的PCI接口实现与DSP信号处理模块的通讯,就需要编写驱动程序。由于驱动程序涉及的面比较广,加上市面上系统地描述该方面的文章较少,一度公认为是技术难点。本文从应用角度出发,通过实例详尽描述了利用DriverStudio开发工具包,开发TMS320C6412的PCI总线驱动程序的具体实现,完成PC机上的应用程序与DSP信号处理机之间的相互通讯。
  1 TMS320C6412芯片简介
  TMS320C6412是TI公司目前速度最快的第六代DSP定点系列的产品之一,采用了高性能,先进的VelociTI.2结构的DSP 核,其主频为1.1GHz,使其最大处理能力可达到9000MIPS,专门设计的Master/Slave PCI Interface 硬件外围,极大地方便了DSP与PC机之间的通讯。TMS320C6412的PCI接口支持如下主要特征:
  1)符合PCI2.2版本的规范;
  2)PCI主/从接口;
  3)以33MHz的时钟频率操作,采用32位数据总线,数据传送率可高达132MB/s;
  4)通过EMIF,PCI可访问所有片上RAM,外设和外部存储器;
  5)支持存储器读(memory read),存储器写(memory write),I/O读,I/O写;
  6)在DSP程序控制下的PCI中断请求;
  7)通过PCI I/O周期的DSP中断;
  8)PCI复位时,多个配置寄存器由来自外部的串行EEPROM初始化;
  2 驱动开发工具介绍
  Windows2000/xp对驱动程序的编写不再基于以往的Win3x和Win9x下的VxD(虚拟设备驱动程序)结构,而是基于一种新的驱动模型——WDM(Windows Driver Model)。WDM为Windows2000/XP操作系统的设备驱动程序的设计提供了统一的框架。
  在WDM驱动模型中,驱动程序是分层的,不同层上的驱动程序有不同的优先级。另外,WDM还引入了功能设备对象FDO(Function Device Object)与物理设备对象PDO(Physical Device Object)两个新类来描述硬件,一个PDO对应一个真实的硬件。一个硬件只允许有一个PDO,却可以拥有多个FDO,在驱动程序中直接操作的不是硬件而是相应的PDO和FDO。WDM不是通过驱动程序名称,而是通过一个128位的全局唯一标识符(GUID)实现驱动程序的识别。在应用程序与WDM驱动程序通信方面,系统为每一个用户请求打包形成一个I/O请求包(IRP)结构,并将其发送到驱动程序,并通过识别IRP中的PDO来区别是发送给哪一个设备的,内核通常通过发送IRP来运行驱动程序的代码。不久的将来,在Windows平台上,WDM将成为主流的驱动模式。
  开发WDM驱动程序有两种方法,一种利用微软提供的98DDK和2000DDK驱动程序开发包,另外一种是专用驱动程序开发工具,如这里选用的DriverStudio工具包. 相比之下,利用DriverStudio工具开发设备驱动程序结构清晰,效率高,比微软提供的DDK工具简单,方便,开发周期短。DriverStudio提供工具组件在对设备驱动程序的开发、除错、测试、调整和部署,改善测试性能和程序的可靠性等方面,给用户提供了极大的便利。   3 应用实例分析
  下面通过具体实例分析从主机端加载DSP信号处理程序,到启动和复位DSP应用系统,完成DSP与主机之间控制与通讯等功能的实现,并列出从驱动程序中摘录出具体的源程序代码,详尽描述了驱动程序在window2000/XP操作系统下的具体实现步骤和方法。驱动程序的总体功能框图如下:
  3. 1 通过PCI接口加载DSP信号处理程序
  在进行加载程序前,首先要形成DSP信号处理程序的COFF文件即*.out文件。如果当加载文件的起始位置加上COFF文件长度超过DSP映射空间的4MB的页边界时,特别要注意跨页的处理。源程序代码如下:
  //dwBytes表示加载out文件的总字节数;
  //DSP_PAGE_MASK表示DSP中的一页的字节数;
  //dwDspAddr表示加载文件的起始位置;
  //判断加载时是否要进行跨页处理之前,首先计算加载时第二页的字节数
  int dwSecondBytes =((dwDspAddr & DSP_PAGE_MASK)+dwBytes)
  - (DSP_PAGE_MASK + 1);
  ULONG dwFirstBytes = dwBytes - dwSecondBytes; //加载第一页的字节数;
  if ( dwSecondBytes > 0) // 第二页的字节数>0,则进行跨页处理;
  {
  ULONG f_addr=dwDspAddr >> DSP_PAGE_BIT_LEN;
  m_IoPortRange0.outd(8,f_addr);
  m_MemoryRange0.outd(f_addr,pBuf,dwFirstBytes/4);
  ULONG s_addr=(dwDspAddr >> DSP_PAGE_BIT_LEN) + 1;
  m_IoPortRange0.outd(8,s_addr);
  PULONG s_pBuf=(PULONG)((ULONG)pBuf+dwFirstBytes);
  m_MemoryRange0.outd(0,s_pBuf,dwSecondBytes/4);
  }
  else//加载COFF文件不涉及跨页;
  {
  ULONG f_addr=dwDspAddr >> DSP_PAGE_BIT_LEN;
  m_IoPortRange0.outd(8,f_addr);
  m_MemoryRange0.ind(f_addr,pBuf,dwBytes/4);
  }
  3.2 启动和复位DSP系统
  启动和复位DSP应用系统时,需要对HDCR(Host to DSP Control Register)寄存器进行操作。
  HDCR寄存器的定义如下:
  首先确保硬件上的Bootmode为主机引导模式,在驱动程序中通过HDCR寄存器的WARMRESET位,主机可以复位DSP系统中所有内部的器件和外设逻辑。同样,通过HDCR寄存器的DSPINT位,主机向DSP产生中断,使DSP系统从复位状态释放出来后,从程序起始地址开始执行,完成了DSP启动的过程。源程序代码如下:
  //复位DSP
  NTSTATUS C6412_drvDevice::C6412_DRV_IOCTL_RESETDSP_Handler(KIrp I)
  {
  m_IoPortRange0.outd(HDCR,0x1);//HDCR寄存器中的WARMRESET位置1;
  return status;//返回状态码
  }
  //启动DSP
  NTSTATUS C6412_drvDevice::C6412_DRV_IOCTL_ BOOTDSP_Handler(KIrp I)
  {
  m_IoPortRange0.outd(HDCR,0x2);// HDCR寄存器中的DSPINT位置1;
  return status;//返回状态码
  }
  3.3 利用中断方式实现DSP和主机之间的通讯
  主机向DSP系统产生中断是通过HDCR寄存器的DSPINT位,如果在PCIIEN(PCI Interrupt Enable Register)寄存器使能了HOSTSW中断,则该中断也会在PCIIS(PCI Interrupt Source Register)的HOSTSW中断位体现出来。
  HSR寄存器定义如下:
  在驱动程序的实际编程中,由于中断服务例程在DIRQL级别上运行,所以处理的时间尽可能地短,通常在中断服务例程中,只是判断该中断是否是本设备产生的,如不是本设备产生的中断服务例程立即返回,否则,其他的大部分的中断处理工作要调用一个在DISPATCH_LEVEL级别上运行的延迟过程中完成。当一个中断例程完成后,处理器一旦获得DISPATCH_LEVEL级别上的控制权,内核就调用该延迟过程。源程序代码如下:
  //中断服务例程
  BOOLEAN C6412_drvDevice::Isr_Irq(void)
  {
  ULONG value=m_IoRange0.ind(HSR);
  if((value&0x1)==0x1)//判断是否本设备产生的中断
  {   m_MemoryRange1.outd(RSTSRC,0x10); //清除中断,以便再次响应中断;
  if (!m_DpcFor_Irq.Request(NULL, NULL)) //调用延迟过程;
  {
  //根据实际硬件置标志或其他的操作;
  }
  }
  else//不是本设备产生的中断,立即返回;
  return false;
  }
  //延迟过程函数
  VOID C6412_drvDevice::DpcFor_Irq(PVOID Arg1, PVOID Arg2)
  {
  //这里用事件的方式通知主机DSP中断的发生,事件句柄事先从主机端传到DSP; m_pEvent->Set();//置事件;
  }
  4 结 语
  通过以上的驱动程序,PC机上的应用程序通过PCI总线下载信号处理程序到DSP,同时监控信号处理过程,并将DSP处理结果通过PCI总线传给PC机,利用windows2000/XP操作系统友好的图形化界面,用户可以对DSP处理结果进行存储,显示,事后分析,从而组建起完整的通用雷达信号处理平台。而且在调试和使用过程中,可以灵活方便地下载不同的DSP应用程序,克服了以往为了加载不同的DSP应用程序,需要不断反复烧写ROM等烦琐过程。另外考虑到驱动程序具有通用性,通常根据不同软件的需要对驱动程序进行不同的封装,本驱动就是利用MFC封装成动态连接库(DLL)的形式提供给用户。本文描述的TMS320C6412是TMS320C6X系列中的一款,通过它开发的PCI驱动程序对于开发其他DSP的驱动程序有很好的借鉴性。文章中的所有程序代码均在windows2000/xp的Visual C++ 6.0 环境下编译、调试通过,并已应用于实际工程中。
  参考文献
  [1] TMS320C6000 Dsp Peripheral Component Interconncet(PCI) Reference Guide [EB/OL].[2007-3].
  www.ti.com.cn/cn/lit/ug/spru581c/spru581c.pdf
  [2] TMS320C6412 Fixed-Point Digital Signal Processor Data Manual[EB/OL].[2010-10]. www.ti.com.cn/cn/lit/ds/sprs219j/sprs219j.pdf
  [3] 武安河,邰铭,于洪涛. Windows2000/XP WDM 设备驱动程序开发[M].北京:电子工业出版社.2005
  [4][美] Tom Shanley Don Anderson著,刘晖,冀然然,夏意军译.PCI系统结构[M].北京:电子工出版.2001
  作者简介:
  黎明也:男,1992年毕业于电子科技大学,学士学位,现任职上海微波设备研究所(中国电子科技集团公司第51研究所),高级工程师,长期从事系统设计及硬件开发工作。
  周静:女,1996年毕业于西安公路交通大学,学士学位,现任职上海微波设备研究所(中国电子科技集团公司第51研究所),高级工程师,长期从事设备驱动程序设计,嵌入式软件开发等工作。
其他文献
目的:探讨代谢综合征(metabolic syndrome, MetS)与急性轻型缺血性卒中(minor ischemic stroke, MIS)和高危短暂性脑缺血发作(transient ischemic attack, TIA)患者早期神经功能恶化(early neurological deterioration, END)的相关性。方法:前瞻性连续纳入2018年5月至2020年6月在徐州医科大学第二附属医院神经内科住院治疗的急性MIS或高危TIA患者。MIS定义为美国国立卫生研究院卒中量表(Nat
摘要:“晨检”工作是在幼儿园一日工作中占有极其重要的地位,晨检既预防疾病的传播,又清除可能的事故隐患,是维护孩子健康、保障其安全的一项不可缺少的保健措施。介绍了晨检的步骤及其重要性,阐述了规范晨检工作的做法及改进措施。  关键词:幼儿园 “晨检” 改进措施  0 引言  “晨检”,是当今幼儿园均在执行的一项保健措施。由于幼儿园的部分孩子是由祖辈们带领着(爸妈上班名外出),每天把孩子送进幼儿园的第一
期刊
摘要:伴随着化学新课改轰轰烈烈的进行,对化学课堂教学的改革也进入了快车道,化学教学策略和教学设计的创新也受到了每一位化学教育者的重视。本文从以下七个方面阐述了化学理论知识趣味教学的策略。  关键词:化学;趣味教学;策略  1 引言  我国基础教育始终落后于世界先进水平,为了能适应新时代的要求,紧跟教育发展的趋势,我国不断进行课程改革。新课程为我们的教学提出了新理念、新精神[1]。新课程理念中强调:
期刊
摘要:高校应坚持的办学理念是以社会需要为方向,从实际角度出发分析定位人才的本质,以大众实际需要为导向,以提高学生为国家服务的意识。“卓越计划”是我国高等教育改革的重大举措,是促进高校培养适应社会和经济发展需要的高级专门人才的一项重大举措。本文分析了地方高校动物科学类专业专业卓越人才培养的必要性,针对“卓越计划”对动物科学类专业培养提出的新要求,结合扬州大学动物科学专业的定位和特色,提出了动物科学类
期刊
摘要:热工保护系统是火力发电机组不可缺少的重要组成部分,热工保护的可靠性对提高机组主辅设备的可靠性和安全性具有十分重要的作用。特别是在电力市场竞争日益激烈的今天,发电厂的热工保护成为越来越关键的技术,需要我们不断的加以研究和完善。  关键词:电厂设备 热工保护 可靠性  中图法分类号: TP20 文献标识码: A  0 引言  热工保护作为发电厂重要核心技术之一,在近几年得到了迅速发展。热工保护为
期刊
摘要:语文是我们的母语,是中国人日常生活的工具,是基础的工具学科。听、读、说、写、思、合六种能力是我们運用语文解决实际问题必须的能力,几者相互融合,缺一不可。  关键词:听话能力;说话能力;阅读能力;写作能力;思考能力;整合能力  语文是我们的母语,是中国人日常生活的工具,是基础的工具学科。因为天天都在用,所以我们自以为不怎么学习都会运用,殊不知一用起来就犯了这样那样的问题。因此很多人都觉得学好语
期刊
摘要:我国“高铁”和“地铁”时代的到来使得轨道交通人才需求进入了高峰期。交通运输专业为适应社会发展对高质量轨道人才的需求而进行教学改革,结合专业性质和特点,构建多层次、系统化的特色专业建设框架体系,在加强基础知识技能培养、提升核心专业知识技能、培养出具备创新精神的应用型交通运输人才等方面进行探讨,为推动地方高校交通运输学科课程体系的改革与创新提供良好的借鉴作用。  关键词:教学改革;铁路特色;专业
期刊
目的探究驱动蛋白家族成员23(KIF23)在人三阴性乳腺癌(TNBC)中的表达和临床意义。方法回顾性分析74例TNBC病例的临床病理特征资料。用免疫组织化学的方法检测肿瘤组织和癌旁正常组织中KIF23的表达,分析TNBC患者的KIF23表达及与临床病理特征的关系。通过生物信息学的方法分析KIF23在TNBC组织及癌旁正常组织中的mRNA水平,并分析其表达与患者的生存率间的关系。结果生物信息学分析结
摘要:纯电动城市客车因为节能和环保,顺应了世界两大发展主题,受到了世界各国的关注,他的发展将面临一个重要的战略机遇期。我公司为了把握这个机会,决定研发纯电动城市客车。现以某型8米纯电动城市客车为例,通过对纯电动城市客车的环保节能、操纵性、舒适性、能量消耗、动力电池力储存技术及配套设施等的分析,阐述了当前纯电动城市客车的优势及缺陷。  关键词:纯电动城市客车;环保节能;操纵性;舒适性;能量消耗;储存
期刊
目的探讨丘脑室旁核(paraventricular nucleus of thalamus, PVT)谷氨酸能神经元在艾司氯胺酮麻醉中的调控作用。方法研究全部选择8~10周龄雄性Vglut2-cre转基因小鼠。取3只小鼠在PVT区立体定位注射钙信号病毒rAAV-EF1α-DIO-GCaMp6s-WPRE-hGH pA,3周后采用钙信号光纤记录技术观察艾司氯胺酮麻醉前后PVT谷氨酸能神经元的活性变化