张开生 汪 慧 孟爱权
(西安电子工程研究所 西安 710100)
对于嵌入式芯片而言,Boot就是自启动,在DSP的调试阶段,可执行的代码文件(.out)存放在安装了TI开发环境CCS所在的计算机上,在线连接仿真器调试时,由仿真器将可执行代码load到DSP的内存中运行并调试。但软件成熟后,需要将用户的可执行代码存放在片外Flash或者别的设备(GMAC/PCIE/SRIO加载方式)中,系统上电后将可执行代码自动加载到内存中,实现可执行代码的上电自动运行,这一过程就是通常所说的自启动或者Boot[1]。
片外的Flash分为NAND Flash和NOR Flash两种,其中在DSP和FPGA加载过程中常用的是NOR Flash,因为NOR Flash和普通的内存访问方式类似,可以支持随机访问,这使它既具有支持XIP(eXecute In Place,即芯片内执行)的特性,又具备像普通RAM一样执行程序的能力,因此NOR Flash是自启动代码的绝佳载体。
本文将对DSP的加载过程和方式进行简要介绍,重点阐述多核器件的启动流程、启动方式选择、启动文件格式生成和文件内容,提出基于网络FTP的动态加载方式,详细阐述了多片网络动态加载的实现步骤。
对于TI的C66xx系列DSP而言,无论是单核加载还是多核加载,均是DSP上电/系统复位后所有核的PC指针指向RBL代码,RBL是在芯片出厂的时候就已固化到芯片内部NOR Flash中的一段程序,程序起始地址为0x20B0_0000。无论对于单核DSP还是多核DSP而言,在上电/系统复位后所有核同时从地址0x20B0_0000运行片内的RBL(Rom Bootloader)程序[2],但从核(多核DSP中定义Core0为主核,其余为从核)的RBL在判断核ID号不为0后进入等待状态,等待Core0发送启动地址BOOT_MAGIC_ADDRESS和核间IPC中断,从核收到核间中断后将PC指针指向启动地址并开始执行程序[3]。……