zynq双核AMP在QSPI中XIP加载运行

2016-12-22 23:15 阅读 1,015 次 评论 8 条

第三阶段主要完成的是arm0与arm1双核的加载运行,主要是修改arm1核的程序,与arm0核的fsbl和helloworld基本无关。对于arm0核的fsbl及xip加载运行查看前面的第二阶段zynq无ddr在QSPI XIP运行

修改代码文件

xparameters.h文件,使其在无ddr的情况下可以正常编译。这个与zynq无ddr使用ocm双核加载程序运行一样。

clip_image002

下面的修改boot.S文件在xilinx官网的AMP Solution without External Memory Tech Tip文档中并没有提及,不知是否是vivado版本由2013.4升级到2015.1的原因。

在boot.S文件中,注释掉下图中画圈中部分内容

clip_image004

修改translation_table.S文件与arm1_hello工程demo中的相应部分的内容保持一致就可以了。

在arm1核的bsp包中增加-DUSE_AMP=1编译定义,使其支持双核AMP工作方式,如下图

clip_image006

arm0核程序修改,增加arm1核的启动指令。

clip_image008

在进行arm0与arm1双核amp运行,需要将arm0与arm1占用的ocm空间分开分配。

arm0核的地址空间分配

clip_image010

arm1核的地址空间分配

clip_image012

在分配QSPI Flash空间时,需要将FSBL程序的空间预留,还需保留PL部分bit文件空间。根据zynq芯片的型号不同,bit文件占用的空间不同。本例中使用zynq7010芯片,生成bit文件占用空间约为2MB。如果选择其它zynq芯片,这个空间需要放大。

clip_image014

生成bin文件的bif文件也需进行相应的修改,如上图所示。

最后生成bin文件时,必须使用批处理生成,参见zynq soc无外部存储器在QSPI Flash下XIP模式加载运行的中说明。此处又是一个神坑,vivado2015.1的bootgen生成的.bin文件就是不能加载,而使用vivado2016.2版本与vivado2014.2版本均可以正常加载。

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

发表评论


表情

  1. xiaoche18
    xiaoche18 【农民】

    请问这种方式还能对两个核进行在线debug吗?是不是把程序放到L2 cache里运行就不能在线debug了?因为看不到L2 cache 的空间啊~

  2. xiaoche18
    xiaoche18 【农民】

    请问对boot.s和translation_table.s的修改是指cpu1工程的文件吗?我用的2016.2版软件,boot.s中没有您这段代码啊,不知道需不需要修改?另外translation_table.s应该修改成什么样啊?

  3. will
    will【站长】

    这种方式基本没有办法在线调试了。
    毕竟L2也只有512KB,空间有限,还是放在DDR或SRAM中比较实际

  4. xiaoche18
    xiaoche18 【农民】

    博主,请问用外部ddr的时候,运行程序是怎样在调动在L2cache里工作的?或者哪个资料里有讲嘛?

  5. will
    will【站长】

    boot.S和translation_table.s都是修改cpu1的
    boot.S按我说的修改
    translation_table.s按xilinx的例程代码中的修改;

  6. will
    will【站长】

    这个工程里是把ddr去掉的,不存在到ddr中运行的问题
    其他包含ddr的工程,ddr通过translation_table.s由arm自己控制运行,可以看一下ug585

  7. 李须弥
    李须弥 【农民】

    博主最近没更新吗?还是转换阵地了?求告知

  8. will
    will【站长】

    还在,最近出差太多,不方便