zynq无ddr使用ocm双核加载程序运行

2016-11-04 09:54 阅读 694 次 评论 0 条

前面测试了单arm核的ocm程序fsbl掉电加载运行,这次增加arm1核,即双核ocm程序fsbl掉电加载运行。

arm0和运行standalone bsp,运行hello world测试程序;arm1核运行standalone,同样运行hello world应用程序。在配置bsp时,stdout设置为ps_uart1,即两核共用一个接口,并且增加-DUSE_AMP=1编译定义,如下图

clip_image002

地址空间分配

FSBL应用程序的地址空间分配,减小了stack size,然后减小了地址空间,分配了128KB。

clip_image004

arm0核hello_ocm_0的地址空间分配,接在fsbl空间之后,空间大小为64KB。

clip_image006

arm1核hello_ocm_1的地址空间分配,在0xFFFF0000地址空间,大小约为64KB

clip_image008

arm0与arm1的elfload到ram之后的截图,两核的程序都停在了main函数的位置,选择某个核可以对单个核进行在线仿真。

clip_image010

由于arm0和地址空间的变更,在fsbl的代码中还需要修改fsbl.h文件,重定义DDR_START_ADDR宏,将其指向OCM的起始地址空间,因为在搬移PS部分代码时会判定地址空间是否有效。

clip_image012

同时arm0核程序中需要增加引导arm1运行的部分代码

clip_image014

clip_image016

xil_SetTlbAttributes()函数配置mmu,使OCM1的地址空间不缓存,sev()发现arm1核,指示arm1核开始运行。

版权声明:本文著作权归原作者所有,欢迎分享本文,谢谢支持!
转载请注明:zynq无ddr使用ocm双核加载程序运行 | 起点博客
分类:应用笔记 标签:, , , , ,

发表评论


表情