图2.2 boot loader的执行过程
在多核DSP的自加载过程中,core0是主核,除了完成自身程序的加载外还需要加载其他核的程序。各个核的用户程序按一定规律存放在外部存储器中,上电复位之后,首先bootloader通过接口访问外部存储器先将core0的用户程序加载到DSP core0的L2 SRAM内存中执行,其次core0通过执行其主程序将其他核的用户程序从外部存储器搬移到各核的L2 SRAM内存中,将各核的入口地址写到各核的BOOT_MAGIC_ADDRESS,向各核发送核间通信中断,最后各核跳至各自的BOOT_MAGIC_ADDRESS地址执行各自的主程序。在上电复位之前需要将拨码开关拨至相应位置进行模式配置[21]。其中,DSP自加载方式不同时,core0的程序加载过程也有些不同,在后面章节将详细介绍。
2.2.2 TMS320C6678 DSP自加载方式的分类
C6678的自加载过程主要依赖于各种接口实现,于是就有了多种boot mode,具体分类如图2.3所示,具体使用哪种模式主要取决于boot mode[2:0]管脚。DSP在上电脱离复位以后会对这几个引脚采样,bootloader根据引脚采样来的值来选择相应的代码加载程序,初始化芯片等等。例如boot mode[2:0]= b l01时,选择了主 I2C启动模式。Bootloader在对DSP进行一系列初始化之后,利用I2C接口从外部带电可擦可编程只读存储器(Electrically Erasable Programmable Read Only Memory ,EEPROM)中搬移代码到内部RAM中,搬移完毕就自动跳转到代码的入口地址处开始运行程序. 基于C6000系列DSP BOOT的研究与实现(4):http://www.youerw.com/tongxin/lunwen_23265.html