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功能已经越来越丰富。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部0条评论
快来发表一下你的评论吧 !