引言
TI公司C6000系列DSP具有强大的处理能力,在嵌入式系统中有着广泛的应用。由于程序在DSP内部存储器的运行速度远大于片外存储器的运行速度,通常需要将程序从外部加载到DSP内部运行。由于C6000系列DSP均没有片上非易失性存储器,而最常用的方式为采用非易失Flash存储器进行程序的存储和加载。然而,该系列DSP的推出是一个渐进的过程,其芯片内部结构随着上市时间的先后有着较大的不同,而TI公司没有给出统一的加载方式。针对该问题,本文全面研究了不同DSP芯片的加载方法与差异,并根据这些特点提出了通用的二次加载方法。
1 TI公司提供的二次加载方法
TI公司的DSP芯片二次加载的原理是一致的,加载步骤如下:
①通过一次加载将二次加载程序载入DSP片内或片外存储器;
②运行二次加载程序加载剩余的程序与数据来完成后续加载;
③跳转到主程序入口,完成加载。
但是由于芯片内部结构不同,TI公司提供了不同的加载方法。根据程序与数据空间存储映射的不同,主要分为两类:分离存储映射的加载方式和混合存储映射的加载方式。
1.1 分离存储映射的加载方式
在TI公司最初推出的C6000 DSP中,程序与数据空间采用分离的存储映射方式,代表芯片为C6201和C6701。在这种方式下,程序空间与数据空间是分离的,片内程序空间只能在第一次加载时被写入;而在二次加载的过程中,只能对片内数据空间或外部存储空间进行访问。而且运行第一次加载程序时,就要将存放在Flash中首64 KB的数据全部搬入DSP程序空间中,而数据空间就需要二次加载来完成。二次加载的流程如图1所示。
从图1中可知,采用这种加载方式存在如下问题:
①对程序大小有限制,二次加载程序与主程序总和不能大于64 KB,无法完成正确的加载。
②加载方式较不灵活,DSP内部的程序空间在第一加载后就无法更改,二次加载一般只能加载数据。