您的位置 首页 方案

在Zynq SoC上完成双核非对称的多进程处理形式

在Zynq SoC上实现双核非对称的多进程处理模式-在我的上一篇博客中我介绍了利用Zynq SoC上的两个ARM Cortex-A9 MPCore处理器执行不同的任务程序,实现非对称的多进程处理模式的

在我的上一篇博客中我介绍了运用Zynq SoC上的两个ARM Cortex-A9 MPCore处理器履行不同的使命程序,完结非对称的多进程处理形式的概念。我希望你能坐得住由于这篇博客有点长,可是咱们会有收成,到最终咱们会让咱们的AMP体系发动并运转,在咱们完结AMP体系发动并运转之前会进行很多步的准备作业,可是这些都十分的简略所以不必忧虑。

Zynq SoC上树立AMP体系的关键是装备好一个发动引导加载程序,第一阶段的加载程序履行结束后处理器会寻觅这个履行文件并加载到内存中。不幸的是我运用的Vivado东西是2014.1版别(由于我最近在搬迁没有网络所以不能下载最新的版别),当咱们生成FSBL(第一阶段发动加载文件)时这个版别不支撑AMP,因而为了能够完结这个例程我将运用赛灵思运用笔记XAPP1079中供给的修正正的FSBL文件和standalone OS文件。(源文件下载链接 )

下载好压缩包文件后第一部是将文件解压到你希望的作业目录下,并给文件夹重命名为SRC。这些文件包括了修正正的FSBL和standalone OS文件。咱们需求让SDK软件能够找到这些文件,因而下一步是要设置更新一下SDK存储库目录让SDK能够找到这些文件。在SDK软件菜单来点击Xilinx tools,在下拉菜单中挑选repositories,创立一个新的存储库文件目录,途径为你的作业目录>\app1079\design\work\sdk_repo,详细如下图所示:

添加好存储库后下一步便是要生成以下文件:
AMP第一阶段发动引导加载程序
Core 0 的运用程序
Core 1 的运用程序

咱们要为每个处理器内核生成BSP(板级支撑包)文件:
第一步是创立FSBL,挑选file -> new applicaTIon -> project,这样才能够让咱们创立一个FSBL工程,完结AMP处理形式,这些过程和曾经没什么差异,可是咱们挑选Zynq FSBL for AMP 模板,替代曾经挑选的Zynq FSBL模板.

接下来咱们要为第一个处理器内核创立运用程序,这步相同很简略。曾经咱们现已做过很屡次了,这儿要保证挑选的是Core 0 和standalone OS而且创立自己的BSP文件。

一旦咱们为内核创立了运用程序,咱们需求正确的界说DDR内存的映射地址,由于程序将从这些地址开端履行。咱们需求修正链接脚本,如下图所示显现除了DDR内存的基地址和巨细。这一步很重要,假如咱们不能正确的为Core 0和 Core 1界说内存地址和巨细,在程序履行的过程中就会发生内核间的抵触,呈现段地址过错。

现在咱们就能够编写Core 0履行程序的代码了。这部分是AMP 体系的中心,它将从Core 1开端履行程序代码。咱们要在运用程序代码中包括以下部分代码。这部分代码制止了Zynq SoC片上存储的缓存功用,界说了Core 1的开端地址,这个地址是Core 1的内存映射地址规模之内的,详细能够检查从前界说的链接脚本。一旦Core 0 履行Set Event(SEV)指令,就会让Core 1开端履行它担任的程序代码。

下一步是要为Core 1创立BSP文件,咱们将运用修正正的standalone OS模板(standalone_amp),这个模板制止了PS部分的监听操控单元(SCU)的重复初始化。因而,咱们不能允许主动生成BSP文件,这与Core 0的操作是有差异的。还有便是承认在CPU的挑选项中挑选的是Core 1。

已然咱们现已为Core 1创立了BSP文件,可是在咱们编写Core 1履行的运用程序代码之前,咱们要修正BSP的一些设置,这一步十分简略,需求在驱动装备对话框中添加一个额定的编译标志—–DUSE_AMP=1,详细操作参照下图:

完结以上这些操作后,咱们就能够为Core 1创立运用程序。依照下图所示,保证处理器挑选的是Core 1,BSP挑选的是前面过程中刚刚树立的amp_core1_bsp。

相同咱们还需求界说正确的DDR内存映射地址,这个地址是Core 1程序履行的映射地址,这些映射地址能够经过修正Core 1的链接脚本文件取得。

在这个运用程序的代码中,咱们也要制止片上存储的缓存功用,由于在后面的博客中,我将介绍运用这部分内存完结两个处理器内核之间的通讯。

当咱们完结了运用程序,而且编译了整个工程,咱们应该具有以下几个文件:
AMP FSBL ELF
Core 0 ELF
Core 1 ELF
装备PL硬件部分的比特流(bit)文件

最终咱们需求生成.bin格局的文件,能够让Zynq SoC从咱们所装备的内存地址发动。咱们相同需求一个.bif格局的文件,这个文件中界说了咱们生成.bin格局文件的源文件和途径信息,一起也规则了源文件的调用次序。

在这儿咱们将不运用SDK软件中创立Zynq 发动镜像的功用,咱们将运用ISE指令和.bat批处理文件,这在XAPP 1079的design\work\bootgen目录下现已为咱们供给了。这个目录下包括了bif格局的文件和cpu1_bootvec.bin文件,这些文件用来修正操控FSBL文件,避免它寻觅并加载更多的运用程序。

在生成bin格局文件之前,咱们要将下图中所示的三个ELF格局的文件拷贝到bootgen目录下,修正BIF格局的文件保证咱们运用的elf格局的文件的姓名是正确的。

现在咱们能够翻开ISE Command Prompt,参照下图输入指令进入到bootgen目录,运转createboot.bat批处理脚本,在bootgen目录下就会生成咱们所需求的boot.bin文件:

这个文件要被下载到Zynq SoC片上非易失性的存储器材中,发动这个器材将会激活Zynq SoC片上的两个处理器内核,而且履行它们各自的运用程序。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/fangan/179627.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部