TI DSP启动步骤详解
1、系统复位
2、复位完成,跳转复位中断,开始执行复位中断指向的地址,该地址是dsp内部原厂固化初始BOOT代码,无法修改。
3、初始BOOT代码检查BOOTMODE相关的I/O输入电平,从而得知DSP BOOTLOAD方式,比如SPI,I2C,EMIF,UHPI等。并初始化相应的接口,并从该接口读取BOOTLOAD程序代码到DSP的程序空间,完成读取后,程序指针跳转到BOOTLOAD程序代码起始位置。DSP内部是没有ROM来存放代码的,所以必须使用外部扩展的ROM,现在常用的是NOR FLASH(EEPROM也有用,但因为EEPROM容量太小,无法存放所有的程序代码,所以现在已经很少在嵌入式平台使用)
4、开始执行BOOTLOAD程序,因为初始BOOT并不会初始化和BOOTMODE无关的设备,所以读取的BOOTLOAD程序代码一般都很小,这个取决于DSP的内部SRAM空间大小。而用户程序一般都很少有这么小的。当然小规模的代码如果够小,DSP本身的Sarm就足够的话,完全可以不用另外编写BOOTLOAD程序,直接让初始BOOT程序读入SRAM中执行即可。如果用户程序代码规模超过SARM的程序空间大小,就必须使用BOOTLOAD程序进行二次BOOT。在BOOTLOAD程序里要做的事情有2点,1是初始化外部扩展RAM空间的接口,比如SDRAM,DDR控制器EMIF等,然后从外部FLASH空间读取程序代码到外部扩展RAM空间。2是初始化各种外设。现在也有很多二次BOOT是通过以太网接口来获取用户程序代码,嵌入式领域的无盘工作站就是这类应用。现在的BOOTLOAD功能已经越来越丰富。
5、完成二次BOOT后,程序指针跳转到用户程序代码的起始地址,开始执行。
以上就是我理解的DSP启动流程,因为各种DSP千变万化,所以在这里就抽象的说下DSP的启动过程,不涉及跳转地址等具体参数了。另外再说下,其实DSP的BOOT启动过程也是大多数ARM的BOOT启动过程,原理上都是差不多的。
多核DSP的BOOT流程我还在看资料。以上过程仅仅是我自己的看法
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
学习一下
一周热门 更多>