基于PCI 总线的DSP 系统应用程序的更新
C6416存储器搬移的工作。程序应当利用。cmd文件,来为bootload代码分配存储空间,其空间地址范围应该是0~1 KB.同时烧写bootload 到FLASH 时,应当烧写到0~1 KB的空间范围内。当系统上电,FLASH 中的0~1 KB数据自动搬移到C6416片内RAM 0~1 KB,然后PC指针从0开始运行,此时EMIFA 和EMIFB将被配置,允许C6416可以访问片外RAM和片外FLASH;然后完成从FLASH 到存储器(片内或片外RAM)的代码段、数据段数据搬移;最后设置PC指针跳转到应用程序的入口地址c_int00 来初始化C 语言环境,从而开始运行应用程序。Bootload程序应该用汇编来完成,因为它是在C语言环境初始化之前被执行,此时C6416是不识别C语言的语言符号的。
2.3.2 C6416从机的启动模式设计
编写一个C6416的程序,该程序完成FLASH到片外SDRAM的数据拷贝。而拷贝的数据则是C6416具体要完成的业务任务。同时该程序包含了Bootload程序,用来完成上电后的1 KB FLASH数据搬移。见图6.
第一步:当C6416 上电后,首先自动完成A 搬移操作,“Bootload程序”将被搬移到C6416片内RAM 的0起始地址,后开始运行该段代码,该段代码是利用汇编语言编写,其在C语言库初始化前被执行;第二步:“Bootload 程序”的运行将会配置C6416 的EMIF 寄存器,使能片外SDRAM,同时使B 搬移操作完成:“程序选择搬移代码”将被搬移到C6416片内RAM,并从程序入口地址开始执行该代码段;第三步:“程序选择搬移代码”的执行将对业务代码进行选择,查看需要加载“ 业务代码1”还是“ 业务代码2”,把选择的业务代码搬移到片外SDRAM中,完成C搬移操作或D搬移操作,然后从程序入口地址开运行,从而被选中的业务代码将被执行。
其中“程序选择搬移代码”是一段由C 语言编写的C6416 启动辅助代码。该段代码主要完成了业务代码的选择和搬移工作。应用用户可以在C6416 片外FLASH 中存放多个业务代码,通过串口、PCI总线等接口向C6416发送业务代码选择命令,在“程序选择转移代码”中,对该命令进行分析,根据协议选择所指定的业务代码。当选择了所需的业务代码,就需要完成代码的FLASH 到C6416存储器的搬移。由于业务代码是利用上述的hex6x.exe 和hex2aray.exe 工具所生成的16 进制数据,其包含了业务代码各个段的起始地址、段长和段数据,因此需要利用“程序选择搬移代码”来完成业务代码的解析,并把各个段从FLASH 搬移到指定的C6416存储空间中。最后把程序指针指定到程序的入口地址,即可运行业务代码。该启动方式的设计有助于在实际应用中针对不同的设备和需求选择不同的业务应用代码,同时也有助于FLASH中的业务代码的更新。
2.3.3 利用PCI总线更新FLASH中的业务代码
当成型的设备需要对固化在DSP外围FLASH中的业务代码进行更新时,应该在DSP 上运行FLASH 烧写程序,把业务代码烧写到FLASH中。本设计利用PCI启动方式,通过上位机来启动C6416 运行FLASH 烧写程序,完成业务代码的FLASH 烧写。利用上述的C6416从机启动模式,可以很容易的发现,当需要完成FLASH软件更新时,只需要更新“业务代码”即可,而“Bootload”
和“程序选择搬移代码”不需要变更。如此业务代码更新就很方便,因为其只需要考虑程序应用上的变换,而不需要过多的考虑程序代码、数据段地址分配的问题,更不需要考虑C6416特有的仅1 KB数据上电自动搬移所带来的麻烦。具体步骤如图7所示。
@7
第一步:根据C6416外围所选的FLASH 特性,来编写其代码烧写程序。在该程序中把需要更新的业务代码作为常量数据包含到工程中的const段中。
第二步:利用hex6x.exe 和hex2aray.exe 工具来将FLASH烧写程序转换成C语言可以识别的16进制数组数据;第三步:选择C6416 为PCI 主机启动模式,主机利用PCI 总线将转换为16 进制的烧写程序数据搬移到C6416片内存储器;第四步:主机把C6416 I/O空间寄存器HDCR.DSPINT位置1,使C6416退出复位,开始运行。
当C6416 运行了烧写程序,便把const 段中的待更新业务软件数据烧写到FLASH指定的地址上。如此便完成了FLASH的业务软件的更新。
3 结语
本文介绍的利用PCI 总线更新DSP 业务系统应用程序的设计,完全摆脱了JTAG口的制约,利用具有高速数据通信特性的PCI总线,针对包含外围FLASH和不包含外围FLASH 的DSP 业务系统,实现了应用程序的更新。
特别对于含有外围FLASH 的DSP 业务系统,本文设计的DSP 启动方式和FLASH 应用程序更新流程,能高效地完成应用程序的更新,同时实现了DSP启动时应用程序加载的选择。
- 用双端口RAM实现与PCI总线接口的数据通讯(05-06)
- 基于PCI总线和DSP芯片的图像处理平台的硬件设计(07-06)
- 基于DSP和PCI总线的通用数字信号处理系统(11-13)
- 一种基于PCI总线和DSP技术的虚拟仪器设计(03-16)
- 基于Linux平台的天气雷达高速数据采集系统设计(03-13)
- 基于DSP与PC机的PCI总线高速数据传输 (07-08)