微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于PCI 总线的DSP 系统应用程序的更新

基于PCI 总线的DSP 系统应用程序的更新

时间:07-31 来源:互联网 点击:

逻辑选择PCI引导模式。

  2 利用PCI 总线来更新系统软件的设计

  2.1 应用程序的数据格式生成

  通过DSP的开发平台CCS,可以把编写的应用程序编译、链接成。out文件。该文件包含了应用程序的各个段的数据,如text段,cinit段,const段,switch段等。这些段是CCS的编译器把所写的C语言编译成汇编语言,然后生成COFF目标文件,再链接实时动态库和静态库生成DSP 核可执行的COFF 文件,提供给C6416 使用。

  但是该文件不可直接被FLASH 识别,同时也不可被C语言所识别。

  CCS 提供了一个实用工具hex6x.exe 来完成。out 文件的转换[7-8].该工具可以把。out文件的COFF数据格式转换成16 进制的ASCII 码数据格式文件。hex.然后利用TI 公司提供的hex2aray.exe 工具,把生成的。hex 文件转换成C语言能够识别的数据数组格式文件。h.

  hex6x.exe 工具的使用可以直接在Windows 的cmd中调用命令。如下:

  hex6x -a -o firm.hex filename.out

  也可以创建一个命令文件来存放命令行操作和输入、输出文件命,以被hex6x.exe所调用。

  filename.out.

  -a

  -o firm.hex

  生成的。hex 文件都是以ASCII 格式所保存。利用hex2aray.exe工具则可以完成ASCII码到16进制数据的转换。利用该工具生成的。h文件把所有数据段的数据顺次存放在一个数组中,这样则可以被C语言所访问。

  本设计中在CCS生成。out的文件夹中,加入了上述两个工具,然后创建了一个命令文件c6416_test.cmd,来输入hex6x.exe 所需要的命令行;创建了一个批处理文件c6416_test.bat,来综合调用两个工具,代码如下:

  hex6x c6416_test.cmd

  hex2aray -i c6416_test.hex -o c6416_test.h

  2.2 PCI上电直接加载应用程序到DSP存储空间

  对于PCI总线上的从DSP设备,如果没有片内或片外FLASH,则PCI主机在上电时可以直接把从DSP设备的应用程序数据写到DSP的片内RAM 或片外RAM,然后指定DSP PC指针运行的起始地址。而从DSP设备应用程序的数据应当存放在PCI主机的系统存储设备中(如片外FLASH,电子盘等)。

  首先通过调试编译DSP的应用程序,完成所有功能需求,生成C6416 可执行的。out 文件;然后利用上述工具,生成。out 文件所对应的。h 文件,该文件中数组的内容,则是应用程序的二进制代码数据;接着通过硬件管脚电平控制,来使DSP 处于PCI 引导方式,并利用DSPPCI从写模式,在系统上电后,主机把。h中的数据传输到指定的C6416程序存储空间;最后向I/O 寄存器HDCR.

  DSPINT位写1,使DSP核退出复位,C6416则从0地址开始运行。

  上述流程中有一个关键问题,就是在进行PCI数据传输时,存放数据的地址如何确定。这些地址表示的是应用程序各个数据段、代码段在C6416中运行时所存放的位置,其由应用程序中的。cmd 文件指明。在应用程序。out生成后,可以查看。map文件来清楚的获知各个段的存放地址。可以用。map 文件来明确主机PCI数据发送的具体地址,手动输入各个段存放的起始地址。然而,此方法主要用于程序调试和测试,当应用程序发生变化,主机的PCI传输程序也需要变化;此外如果使用了DSP/BIOS,.out文件会包含很多的代码段、数据段,手动输入将是一个很繁琐的工作。hex6x.exe工具有一个命令boot,利用该命令生成的数据包含了系统程序的入口地址c_int00 和各个段的起始地址、段的长度。利用这些信息,可以很方便的使用程序把各个段的数据写入到指定的C6416存储空间中,避免了繁琐的手动输入操作。由于当DSP退出复位后,PC指针是从0地址开始运行,如果数据段和代码段是存放在片外RAM时,则需要在0 地址存放一段指针跳转语句,使PC 指针跳转到片外RAM,继续运行。

  2.3 利用PCI总线完成从DSP设备外围FLASH应用程序的更新

  更多的嵌入式设备中,从DSP 设备都接有外围的FLASH 等ROM 设备,用来存放DSP 运行的应用程序。

  这样一方面可以减少PCI主机存储空间的压力,同时可以提高从机的启动速度。

  2.3.1 C6416的FLASH启动方式

  C6416 的启动方式是由硬件逻辑来决定,通过EMIFB 地址总线上的BEA[19:18]两个管脚的上拉、下拉来决定引导配置。[0,1]:主机引导(HPI 或PCI);[1,0]:EMIFB 8bit 宽FLASH引导。

当选择FLASH 启动时,C6416的引导逻辑决定了,从FLASH 的0 地址开始,将会拷贝1 KB 的数据到C6416 片内RAM 的0~1 KB 位置,然后C6416 的PC 指针将从片内RAM的0地址开始运行。那么对于所要启动的应用程序的大小一般都是大于1 KB,因此可以利用二级引导来完成C6416 的程序加载。所谓二级引导,是指在应用程序的工程中,写一段bootload程序,该程序主要完成EMIF接口的配置,和应用程序从FLASH向

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top