本文主要是介绍vivado SDK 双核运行,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
双核工程参考
开双核只需要建立两个分别在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空间
这篇关于vivado SDK 双核运行的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!