双核工程参考
开双核只需要建立两个分别在cpu0和cpu1上跑的工程,如果必要的话需要屏蔽cache,一般步骤是:
- Xil_SetTlbAttributes(0xFFFF0000,0x14de2);屏蔽cache
- Xil_Out32(CPU1STARTADR, MEM_BASE_ADDR_1);
dmb();等待程序写入到OCM
sev();这是一个汇编指令,触发事件唤醒CPU1
如果只是在线烧录代码进板子,就不需要建立FSBL工程(这个主要是生成BOOT.bin进行程序固化)
一般烧录代码进板子没反应,可能的问题是:
1.没有正确指定hardware platform,一般建立application时需要指定硬件平台(这个一般很少出现);
2.RUN as或者Debug as时Application处没有勾选cpu去执行对应的工程(这个很常见);
3.如果勾选了双核,但是没有正确运行,么很大程度上是代码的某些”初始化没通过“,这些还包括地址初始化。本人犯了一个很严重的错误,两个cpu对应的DDR地址冲突了(参考1,参考2),出错了很久都不知道问题所在,最后在lscript.ld中改修改地址后程序成功执行。
CPU0对应的DDR空间
CPU1对应的DDR空间