本发明涉及嵌入式计算机处理控制领域,尤其是一种DSP片外代码动态加载方法及装置。
背景技术:
DSP是电子设备中经常使用的一种嵌入式微处理器芯片,常用于系统控制和数字信号处理领域,其特点是时钟主频高、运算速度快,在典型的应用中,使用FLASH或EEPROM作为代码存储器,将执行代码烧入其中,上电后可自动加载运行。由于功能扩展,DSP芯片内部代码存储空间(DSP片内代码容量限制)有限,因此超过DSP芯片容量的代码无法正常运行的,此限制大大影响了此类DSP的应用范围。
技术实现要素:
本发明所要解决的技术问题是:针对现有技术存在的问题,提供一种DSP片外代码动态加载方法及装置。通过设置SRAM配合DSP进行 解决了代码大小超过DSP片内容量大小时,程序无法运行的问题,大大扩展了DSP的使用范围和使用场合,可以实现超长代码的混合加载和运行。
本发明采用的技术方案如下:
一种DSP片外代码动态加载方法包括:
步骤1:仿真器将预装文件通过仿真器下载到DSP及DSP外部缓存SRAM中,则DSP片内代码存储区存储代码段,DSP片内数据区存储数据;同时DSP外部缓存SRAM中存储超过DSP芯片内部代码存储空间容量限制的代码段;
步骤2:仿真器将DSP片内代码存储区存储的代码段、DSP片内数据区存储的数据以及DSP外部缓存SRAM中存储的代码段分别存储为3个文件;
步骤3:通过拼接模块将上述3个文件中进行拼接,然后仿真器将拼接后文件烧入EEPROM,去除仿真器;
步骤4:下一次上电后,通过EEPROM将拼接后的文件中DSP外部缓存SRAM中存储代码段拷贝到SRAM指定地址进行存储;通过EEPROM将拼接文件中DSP片内代码存储区存储的代码段拷贝到DSP片内代码存储区内;同时通过EEPROM将拼接文件中DSP片内数据区存储的数据段拷贝到DSP数据区内。
进一步的,步骤3中将上述3个文件中进行拼接具体是,通过任意拼接软件将DSP片内数据区存储的数据存入以DSP片内代码存储区存储的代码段结尾处为开始的地址中;DSP外部缓存SRAM中存储的代码段存入以DSP片内数据区存储的数据结尾处未开始的地址中。
进一步的,所述DSP片内代码存储区存储代码段的大小为DSP芯片容量;所述DSP片内代码存储区存储代码段包括DSP片内第一代码段和Bootloader代码段。
进一步的,所述DSP片内数据区存储数据用于进行数据存储。
一种DSP片外代码动态加载装置包括:
仿真器,用于将预装文件通过仿真器下载到DSP及DSP外部缓存SRAM中,则DSP片内代码存储区存储代码段,DSP片内数据区存储数据;同时DSP外部缓存SRAM中存储超过DSP芯片内部代码存储空间容量限制的代码段;仿真器将DSP片内代码存储区存储的第一代码段、DSP片内数据区存储的数据以及DSP外部缓存SRAM中存储的代码段分别存储为3个文件;通过拼接模块将所述3个文件中进行拼接,然后仿真器将拼接后的数据烧入EEPROM;
EEPROM,用于下一次上电后,通过EEPROM将拼接后的文件中DSP外部缓存SRAM中存储代码段拷贝到SRAM指定地址进行存储;通过EEPROM将拼接文件中DSP片内代码存储区存储的代码段拷贝到DSP芯片存储区内;同时通过EEPROM将拼接文件中DSP片内数据区存储的数据段拷贝到DSP数据区内。
进一步的,数据处理模块将所述3个文件中进行拼接具体是:通过将DSP片内数据区存储的数据存入以DSP片内代码存储区存储的代码段结尾处为开始的地址中;DSP外部缓存SRAM中存储的代码段存入以DSP片内数据区存储的数据结尾处未开始的地址中。
进一步的,所述DSP片内代码存储区存储代码段的大小为DSP芯片容量;所述DSP片内代码存储区存储代码段包括DSP片内第一代码段和Bootloader代码段。
进一步的,所述DSP片内数据区存储数据用于进行数据存储。
综上所述,由于采用了上述技术方案,本发明的有益效果是:
使用此方法及装置解决了代码大小超过DSP片内容量大小时,程序无法运行的问题,大大扩展了DSP的使用范围和使用场合,可以实现超长代码的混合加载和运行。在TI6701的DSP上实现了128KB的代码的运行。
具体实施方式
本说明书中公开的所有特征,或公开的所有方法或过程中的步骤,除了互相排斥的特征和/或步骤以外,均可以以任何方式组合。
本说明书中公开的任一特征,除非特别叙述,均可被其他等效或具有类似目的的替代特征加以替换。即,除非特别叙述,每个特征只是一系列等效或类似特征中的一个例子而已。
一、本发明相关说明:
1、预装文件是厂家预装的数据,用户的工程由编译器编译后生成的下载文件。
2、DSP外部缓存SRAM中存储代码段作用是:是整个代码的一部分,是超过DSP芯片内部代码存储空间的那一部分代码。DSP运行中,要随时去读SRAM中的这部分代码。
3、其中DSP片内第一代码段和是Bootloader代码是存满DSP芯片内部代码存储空间的两部分代码。Bootloader 是一段汇编的代码,用于将eeprom中不同段数据的拷贝到不同的存储器中。
4、拼接模块指的是任意的拼接软件。
工作过程是:
1.连接仿真器,由DSP软件开发环境(即CCS)对工程代码进行编译,生成out文件;
2.由仿真器将OUT文件通过仿真器下载到目标板上(目标板是一块电路板,上面有dsp,sram等器件和电路);
3.通过仿真器保存三个文件,分别是DSP片内代码存储区存储代码段文件/ DSP外部缓存SRAM中存储代码段文件(存储在sram中的) / DSP片内数据区存储数据文件;
4.拼接模块将这三个文件拼接为一个文件;
5. 通过仿真器将拼接的这一个文件的内容烧写到eeprom中;
6.去掉仿真器,加电后,代码加载到dsp片内和sram中,数据加载到dsp片内,程序加载成功,开始运行。
实施例一:
以TI公司的6701 DSP芯片为例,芯片容量限制为64KB,实际代码容量约为63KB,用于存放bootloader加载代码的空间设置为1KB。
首先使用数据模块(仿真器)将预装文件下载到DSP及DSP外部缓存SRAM中,此时预装文件各段的代码和数据已经装入各自分配的地址空间中(DSP片内代码存储区存储代码段,DSP片内数据区存储数据;同时DSP外部缓存SRAM中存储代码段);
然后分别将DSP片内代码存储区存储代码段(起始地址0,长度64KB),DSP外部缓存SRAM中存储代码段(起始地址0x2000000,长度0xdda0),DSP片内数据区存储数据(起始地址0x8000000,长度为0x232a)分别存为3个文件,将这3个文件拼接起来,即可作为烧入EEPROM或FLASH的二进制代码;
最后,下一次上电后,通过EEPROM将拼接后的文件中DSP外部缓存SRAM中存储代码段拷贝到SRAM指定地址进行存储;通过EEPROM将拼接文件中DSP片内代码存储区存储的代码段拷贝到DSP芯片存储区内;同时通过EEPROM将拼接文件中DSP片内数据区存储的数据段拷贝到DSP数据区内。
本发明并不局限于前述的具体实施方式。本发明扩展到任何在本说明书中披露的新特征或任何新的组合,以及披露的任一新的方法或过程的步骤或任何新的组合。