hi,ti experts!
K2开发板上面的拨码开关,可以设置TCI6638k2k从ARM启动还是DSP启动,如果设置为板子
从ARM启动,ARM四个核cotexA-15启动顺序是怎样的?ARM四个核如何启动?另外,Cotex-A15
如何引导触发DSP启动,从而让整个板子启动?好像没有看到参考资料。
谢谢!
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.
hi,ti experts!
K2开发板上面的拨码开关,可以设置TCI6638k2k从ARM启动还是DSP启动,如果设置为板子
从ARM启动,ARM四个核cotexA-15启动顺序是怎样的?ARM四个核如何启动?另外,Cotex-A15
如何引导触发DSP启动,从而让整个板子启动?好像没有看到参考资料。
谢谢!
您好:
对于Cortex-A15的4 Core Cluster,TI芯片默认只有ARM Core 0是处于上电状态,其他Core 1-3是属于掉电状态,在ARM作为Boot Master时,Boot ROM只会启动ARM Core 0 (同理DSP作为Master时,Boot ROM只会启动DSP Core 0, 只不过DSP Core 1-7 始终处于上电状态,不需要再进行额外的上电操作),剩下的Core 1-3及DSP 0-7的上电以及加载过程全是由已经Boot起来的Core(在这种场景之下是由ARM Core 0)进行加载。
对于加载剩下的DSP Core,ARM Core 0的代码需要解析DSP的out文件为boot table格式(即类似于 Entry point + 段1地址 + 段1长度 + 段1内容 + 段2地址 + 段2长度 + 段2内容 .......),然后按照这些段的地址和长度将这些段的内容拷贝到相应位置(请注意这里的地址必须都是全局地址),拷贝完成之后ARM Core 0需要将被加载Core的Image解析到的Entry Point写到对应Core的 Magic Address中(对于DSP Core 来说是每个Core的Local L2的最后一个Word,全局地址为0x1N8F_FFFC, N为核号),之后给这个Core发送IPC,这和Core就会跳出原有死循环,并将PC指针指向这个Core的Magic Address中所存的Entry Point,之后这个Core就Boot起来了
对于加载剩下的ARM Core,机制与加载DSP Core是相同的,只不过ARM Core的Magic Address与DSP的地址有所不同(请详见TCI6638K2K的Data Manual),而且加载ARM Core 1-3之前需要先对这些核做上电的操作,具体操作的过程可以参考TI在Arago上的GIT分支源码,这部分代码已经在我们TCI6638K2K的Linux Kernel和U-Boot中使用,具体链接如下:
http://arago-project.org/git/projects/?p=boot-monitor.git;a=summary
目前,我们Keystone II的ARM部分的Boot Loader User Guide已经有正式发布,您可以下载并进行参考,链接如下:
http://www.ti.com/lit/ug/spruhj3/spruhj3.pdf 'KeyStone II Architecture ARM Bootloader User Guide'