所谓的启动,英文名叫“Boot”,任何一个系统都离不开它,无论是CPU、DSP、ARM还是FPGA,都不可跳过这个流程,其本质就是向存储器加载程序和数据并初始化寄存器文件的过程,只是不同的处理器有其各自的特点,这里只针对TI公司的C6000系列DSP进行探究。
对于C6000系列的DSP,其启动方式较多,但总的来说主要分为两类,一类是软件启动方式,另一类是硬件启动方式,对于前者,其本质是:当DSP完成复位后,存储在ROM 中的DSP 代码(片上bootloader-一级bootloader)将应用程序从外部存储(非易失性存储器)搬到内部或外部存储器,以TMS320C6455来说,这段代码永远存储在片上ROM的0x00100000h起始地址处;对于硬件启动方式,指的是不依赖软件,而是通过硬件启动配置逻辑实现DSP启动的过程,同样以TMS320C6455来说,它主要支持以下几种启动方式:
NoBOOT 启动:对于这种启动方式,上电复位后,CPU 直接从片上L2地址0x800000h地址开始执行,这种启动方式就属于硬件启动方式,通常使用仿真器调试时使用这种方式
Host Boot启动:在这种启动方式下,CPU复位后,其他外设退出了复位状态,但是CPU会“停止”在这里,此时主机设备(HPI或PCI设备)将完成DSP中存储器及寄存器的初始化工作,当主机设备完成这些初始化工作后,它将产生一个“DSPINT”中断,从而使DSP退出“停止”状态,这属于软件启动方式;
EMIFA 8-bit ROM启动:对于这种启动方式,它与NoBOOT启动方式基本一样,不同的是,CPU 退出复位状态后,将从位于EMIFA CE3空间的8-bit异步ROM中开始执行,对于EMIFA,此时使用默认配置方式,这属于软件启动方式;
Master I2C启动:在这种启动方式下,DSP作为主设备从I2C从设备获取按一定格式(Boot table)存储在I2C从设备(例如EEPROM)的数据并存储到DSP存储空间,因此这属于软件启动方式;
Slave I2C启动:在这种方式下DSP 作为从设备接收来自主设备的数据(Boot table)完成启动 ,在这种启动方式下,可以实现多片DSP的启动,此时一片DSP以Master方式启动后,作为主设备完成其它挂接在同一个I2C总线上的从DSP设备的启动。
Serial RIO启动:
这种方式比较复杂,参考TI 官方文档:
– The on-chip bootloader configures device registers, including SerDes, and EDMA3
– The on-chip bootloader resets the peripheral's state machines and registers
– RapidIO ports send idle control symbols to initialize SerDes ports
– The host explores the system with RapidIO maintenance packets
– The host identifies, enumerates, and initializes the RapidIO device
– The host controller configures DSP peripherals through maintenance packets
– The application software is sent from the host controller to DSP memory
– The DSP CPU is awakened by interrupt such as a RapidIO DOORBELL packet
– The application software is executed and normal operation follows
以上就是DSP启动方式的一点理解,其中主要参考了TI技术文档.
讲完启动方式,接下来就是需要理解DSP的中断功能,我将在接下来的文章中谈一谈自己对DSP的中断的理解
参考文档
(1)TMS320C6455 Fixed-Point Digital Signal Processor (SPRS276K)
|