在以DSP为核心的数字信号处理系统中,通常将可执行代码存放在非易失性存储器,在系统加电或复位时通过DSP的引导加载(Boot Loader)机制将该转换到高速存储器中执行。AD公司出品的ADSP SHARC系列DSP内部的非易失性存储器因其资源有限,必须在外部加以扩展。FLASH存储器具有容量大、单电源供电和可在线编程的特点,是一种非常理想的存储器。
若采用烧录器对FLASH存储器进行编程,则在修改程序时必须拔插器件,而某些表贴封装(如PLCC封装和TSOP封装)的器件又需要专用的转接插座,这使得程序的调试和参数的修改非常繁琐,而且容易对器件造成物理损伤。采用在线编程的方式对FLASH存储器进行操作,可以克服上述问题,为调试者提供了极大的方便。本文以ADSP-21065L外部扩展的FLASH存储器AT29LV020为对象,在Visual DSP++3.5环境中通过JTAG仿真器运行一段程序,将可引导代码在线烧录到FLASH中,并实现系统的引导。
1 在线编程与引导系统
本系统以ADSP-21065L及外部的FLASH存储器AT29LV020为核心,由DSP控制FLASH存储器的擦除和读写。
AT29LV020是用单电源3.3V供电的低功耗FLASH存储器,容量是MB(256K×8),8位数据总线,18位地址总线。该芯片以扇区(SECTOR)为基本的编程单元,共有1024个扇区,每个扇区包含256个字节。芯片的存储空间中包含两个引导区,分别是最低8K(0x00000~0x01FFF)和最高8位(0x3E000~0x3FFFF)的引导区。
系统引导时,DSP将FLASH作为普通的外部数据存储器,通过DMA方式访问。ADSP-21065L的外部地址空间为0x00020000~0x03FFFFFF。FLASH的物理地址(ADD)对于DSP来说就是(0x0002000+ADD)。整片AT239LV020占据ADSP-21065L的外部地址空间范围为0x00020000~0x0005FFFF,这段空间属于Bank0。访问该段空间时,DSP引脚MS0有效。引导时,DSP引脚BMS有效。所以,使用MS0和BMS的组合作为FLASH的片选信号。DSP与FLASH的连接如图1所示。
2 DSP可引导文件的创建
在线编程的过程如下:
(1) 创建一个适合FLASH存储器的引导程序文件A;
(2) 在Visual DSP++3.5环境中编写一个FLASH的操作程序,创建一个可执行的“.DXE”文件B;
(3) 通过基于JTAG的Emulator将B下载到DSP中执行,将A文件写入FLASH中。
下面介绍如何在Visual DSP++3.5的开发环境中有建一个可以引导的文件。该文件就是通过JTAG写入FLASH中的目标文件。具体步骤如下:
(1) 创建一个将要写入FLASH的源程序,在Visual DSP++环境中直接通过Emulator下载到DSP中执行,验证程序的正确性。
(2) 打开菜单Droject→Project Ontions…, 在Project标签的页面里,选择Type为Loader File;在Load标签的页面里,选择Boot Mode为Prom,选择Boot Format为ASCII, 并为将要创建的.LDR文件指定名称。
(3) 重新编译工程,在工程目录中得 到一个载入文件*.LDR。
至此,一个可引导的文件就创建成功了。文件文件的格式如下:
该文件有n行,每行为一个双字节的16进制数。考虑到FLASH的数据总线是8位,在写入之前,必须将每行分成两个单字节的16进制数。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉