This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
你好,我不是很理解你这里的一级boot和二级boot。我来解释一下boot的基本流程:
1.系统解复位后会根据bootmode管脚的设定进入到对应的boot模式
2.根据对应的boot模式初始化硬件,例如I2C boot需要初始化I2C总线,EMAC boot需要初始化EMAC相关外设
3. 如果是DSP为master模式的boot方式,例如I2c, SPI, EMIF等模式,DSP会主动从对应的EEROM或Flash中读取数据,并将数据放置到指定的位置. 如果是slave 模式, EMAC/SRIO/HPI等, 需要host 按照boot的要求加载boottable.
4. bootloader在完成代码加载后,会跳转到boottable中entry point指定的地址, 通常该地址就是c_int00, 如果是纯汇编的程序, 在生成boottable时要把中断向量表的地址指定过去.
Zhan Xiang ,你好:
我指的一级boot是适用小程序的启动方式,即上电后,DMA控制器自动去FLASH拷贝一定大小的程序(比如6455是1KB)到片内程序区执行,二级boot是用于应用程序大于1KB的时候,需要编写bootload程序,根据boottable去flash拷贝应用程序到片内. 对于一级boot,我们只需要将应用程序烧写到flash中即可,上电后,DMA会将应用程序拷贝到片内执行,这个过程中,没有用到boottable. 我的疑问是,没有用到boottable,就不知道c_int00地址,那么对于用c编写的应用程序,DSP启动后,如何初始化C环境啊?因为c环境初始化是在c_int00中实现的!谢谢!