新闻中心

EEPW首页>嵌入式系统>设计应用> 基于PCI总线的DSP系统应用程序的更新

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

作者: 时间:2013-06-15 来源:网络 收藏

2.3.2 C6416从机的启动模式设计
编写一个C6416的程序,该程序完成FLASH到片外SDRAM的数据拷贝。而拷贝的数据则是C6416具体要完成的业务任务。同时该程序包含了Bootload程序,用来完成上电后的1 KB FLASH数据搬移。见图6。

本文引用地址://m.amcfsurvey.com/article/148014.htm

d.JPG


第一步:当C6416上电后,首先自动完成A搬移操作,“Bootload程序”将被搬移到C6416片内RAM的0起始地址,后开始运行该段代码,该段代码是利用汇编语言编写,其在C语言库初始化前被执行;
第二步:“Bootload程序”的运行将会配置C6416的EMIF寄存器,使能片外SDRAM,同时使B搬移操作完成:“程序选择搬移代码”将被搬移到C6416片内RAM,并从程序入口地址开始执行该代码段;
第三步:“程序选择搬移代码”的执行将对业务代码进行选择,查看需要加载“业务代码1”还是“业务代码2”,把选择的业务代码搬移到片外SDRAM中,完成C搬移操作或D搬移操作,然后从程序入口地址开运行,从而被选中的业务代码将被执行。
其中“程序选择搬移代码”是一段由C语言编写的C6416启动辅助代码。该段代码主要完成了业务代码的选择和搬移工作。应用用户可以在C6416片外FLASH中存放多个业务代码,通过串口、总线等接口向C6416发送业务代码选择命令,在“程序选择转移代码”中,对该命令进行分析,根据协议选择所指定的业务代码。当选择了所需的业务代码,就需要完成代码的FLASH到C6416存储器的搬移。由于业务代码是利用上述的hex6x.exe和hex2aray.exe工具所生成的16进制数据,其包含了业务代码各个段的起始地址、段长和段数据,因此需要利用“程序选择搬移代码”来完成业务代码的解析,并把各个段从FLASH搬移到指定的C6416存储空间中。最后把程序指针指定到程序的入口地址,即可运行业务代码。该启动方式的设计有助于在实际应用中针对不同的设备和需求选择不同的业务应用代码,同时也有助于FLASH中的业务代码的更新。
2.3.3 利用总线更新FLASH中的业务代码
当成型的设备需要对固化在DSP外围FLASH中的业务代码进行更新时,应该在DSP上运行FLASH烧写程序,把业务代码烧写到FLASH中。本设计利用启动方式,通过上位机来启动C6416运行FLASH烧写程序,完成业务代码的FLASH烧写。利用上述的C6416从机启动模式,可以很容易的发现,当需要完成FLASH软件更新时,只需要更新“业务代码”即可,而“Bootload”和“程序选择搬移代码”不需要变更。如此业务代码更新就很方便,因为其只需要考虑程序应用上的变换,而不需要过多的考虑程序代码、数据段地址分配的问题,更不需要考虑C6416特有的仅1 KB数据上电自动搬移所带来的麻烦。具体步骤如图7所示。

e.JPG


第一步:根据C6416外围所选的FLASH特性,来编写其代码烧写程序。在该程序中把需要更新的业务代码作为常量数据包含到工程中的eonst段中。
第二步:利用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总线更新应用程序的设计,完全摆脱了JTAG口的制约,利用具有高速数据通信特性的PCI总线,针对包含外围FLASH和不包含外围FLASH的,实现了应用程序的更新。
特别对于含有外围FLASH的,本文设计的DSP启动方式和FLASH应用程序更新流程,能高效地完成应用程序的更新,同时实现了DSP启动时应用程序加载的选择。


上一页 1 2 3 下一页

评论


相关推荐

技术专区

关闭