0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何实现双核的AMP启动

lhl545545 来源:ZYNQ 作者:ZYNQ 2022-09-14 09:07 次阅读

之前章节中涉及到PS端的裸机程序都是在CPU0上运行的,弄的差点就忘了ZYNQ是拥有两个A9硬核的强劲芯片,所以我们必须要学会怎么让两个CPU核心同时运行,不然就和之前开发单片机有什么区别呢?本章我们就来探索如何实现双核的AMP启动(PS:博主以前是开发单片机和FPGA过来的)。

ZYNQ双核启动方式简介

非对称多处理器启动(AMP启动)

这个模式启动可以用语使用多个CPU核的系统上,比如像ZYNQ这样的多核芯片上,在这种模式下,每个CPU核可以运行自己的操作系统,比如可以CPU0跑裸机而CPU1跑FreeRTOS系统,再比如CPU0跑FreeRTOS系统而CPU1跑LINUX系统;而CPU之间的通讯是通过共享内存的方式进行的。

对称多处理器启动(SMP启动)

在该启动模式下所有的CPU必须是完全相同的构架,并且所有CPU必须运行单个操作系统一起运行,这个操作系统把进程任务分派到各个CPU上,并且加以协调。和AMP一样,CPU之间是通过共享内存来做通信,以及任务执行的协调。所以SMP的启动方式不适合在裸机以及RTOS环境下实现。

两种启动方式的比较

下图描述了AMP和SMP的不同,以及他们在ZYNQ平台上的对应关系:0914e9b8-33c3-11ed-ba43-dac502259ad0.png其性能的不同如下所示:098285e0-33c3-11ed-ba43-dac502259ad0.png

AMP启动的实现

我们本节工程是基于 ZYNQ进阶之路7 章节的内容实现的,在ZYNQ进阶之路7 章节中我们输出了两路PWM波实现呼吸灯的功能,在本章节中我们分别使用CPU0和CPU1控制两个LED等实现两个呼吸灯的功能,我们再通过逻辑在PL端增加两个端口输出PWM控制LED,这两个LED实现和前面两个LED同步呼吸的功能。首先打开 ZYNQ进阶之路7 中的工程如下所示:099e5306-33c3-11ed-ba43-dac502259ad0.png新建verliog文件输入以下代码,代码中的50M时钟我们使用PL端的50M晶振提供,所以和PS端属于异步时钟,因为PS端提供给PL端的时钟也为50M,所以这里我们对其进行简单的跨时钟域处理,多周期同步,对两个PWM信号进行打两个时钟节拍的方式实现同步,这种方式能解决一些简单的异步时钟域问题:09cfd2be-33c3-11ed-ba43-dac502259ad0.png将PWM.v文件加入Diagram窗口中:

0a4086bc-33c3-11ed-ba43-dac502259ad0.png将信号线引出到指定接线上:0a8ee334-33c3-11ed-ba43-dac502259ad0.png对引脚进行绑定:0ab29540-33c3-11ed-ba43-dac502259ad0.png然后生成硬件bit文件,导出硬件,打开SDK进行软件编程:0b187d4c-33c3-11ed-ba43-dac502259ad0.png然后分别创建CPU0和CPU1的两个工程,在下图中选择:0b49cb36-33c3-11ed-ba43-dac502259ad0.png创建后如下图所示,其中1为CPU0的工程,2为CPU2的工程:0b890904-33c3-11ed-ba43-dac502259ad0.png在CPU0的工程中输入如下代码:0bbef50a-33c3-11ed-ba43-dac502259ad0.png在CPU1工程中输入如下代码:0be7a586-33c3-11ed-ba43-dac502259ad0.png修改CPU0的DDR3基地址:0c149f96-33c3-11ed-ba43-dac502259ad0.png修改CPU1的DDR3基地址(注意两个CPU的地址不能发生冲突):0c504b36-33c3-11ed-ba43-dac502259ad0.png右键点击CPU1工程,选择BSP setting选项:0c70370c-33c3-11ed-ba43-dac502259ad0.png在此处添加如下附加信息:0ca0d5f6-33c3-11ed-ba43-dac502259ad0.png然后就可以将两个工程编译后,在run config中设置如下选项:0d7216c0-33c3-11ed-ba43-dac502259ad0.png然后点击run即可将程序下载到芯片中了,这是可以看到4个LED一两个一对的方式实现呼吸灯功能了。在下一章节我们将讲解如何将双核程序固化到SPI flash中。  

审核编辑:彭静
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • cpu
    cpu
    +关注

    关注

    68

    文章

    10901

    浏览量

    212941
  • 操作系统
    +关注

    关注

    37

    文章

    6889

    浏览量

    123714
  • Amp
    Amp
    +关注

    关注

    0

    文章

    82

    浏览量

    47236

原文标题:ZYNQ进阶之路--AMP模式 双核同时运行

文章出处:【微信号:ZYNQ,微信公众号:ZYNQ】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    RTOS实现MCU消息通信

    之间怎么通信?其实,通信的方式和方法有很多种。本文就给大家描述一下:使用FreeRTOS消息缓冲区,实现简单的非对称多处理(AMP)核心到核心通信,结合STM32H7(M4和M7)
    发表于 06-07 14:45 1249次阅读
    RTOS<b class='flag-5'>实现</b><b class='flag-5'>双</b><b class='flag-5'>核</b>MCU消息通信

    单片机是什么

    ,而且还可以通过软件在不影响主程序的前提下实现高速PWM和UART功能。上图为该单片机的内部构架示意图,从图可见该单片机内部有两个,分别为FPP0和FPP1,每个
    发表于 11-03 13:10

    nios ii例子

    nios ii例子nios ii例子NIOS II 构建的简单例子,希望对大家有所帮
    发表于 08-12 15:18

    非对称MCU基础知识及间通信

    来源 网络本文从对比两颗分立MCU与单芯片MCU开始(以LPC4350为例),展开介绍了非对称MCU的基础知识与重要特点。接下来,重点介绍了
    发表于 05-15 14:26

    请问ccs怎样实现调试?

    TI的技术专家:你好。我用的是F28M36x系列DSP,请问如何在CCS中同步调试程序?谢谢解答!
    发表于 10-08 11:02

    基于DSP的视频解码芯片驱动研究与实现

    基于DSP的视频解码芯片驱动研究与实现
    发表于 05-28 09:11

    如何在CubeIDE中为处理器创建静态库?

    如何为处理器创建静态库?在 CubeIDE 下以“New Project”启动时,“Static Library”点不可用,例如,当使用 STM32H745 (M4 &amp;
    发表于 12-05 06:51

    什么是处理器

    什么是处理器 什么是处理器呢?处理器背后的概念蕴涵着什么意义呢?简而言之,
    发表于 10-12 09:47 1.7w次阅读

    什么是cpu

    cpu 就是2个核心,核心(Die)又称为内核,是CPU最重要
    发表于 12-17 11:01 1345次阅读

    DSP MCU,什么是SP MCU

    DSP MCU,什么是SP MCU 各种数字消费产品特别是便携式数字产品的功能已由单一走向多元化,因而原有的半导体解决方案已不能
    发表于 03-26 15:00 1032次阅读

    什么是处理器?

      简单来说,处理器就是在一个硅片上集成两个CPU。那么什么是处理器呢?处理器背后的
    发表于 10-08 18:21 993次阅读

    非对称MCU基础知识及间通信

    本文从对比两颗分立MCU与单芯片MCU开始(以LPC4350为例),展开介绍了非对称MCU的基础知识与重要特点。接下来,重点介绍了
    发表于 03-26 15:31 3729次阅读
    非对称<b class='flag-5'>双</b><b class='flag-5'>核</b>MCU基础知识及<b class='flag-5'>核</b>间通信

    非对称MCU基础知识及间通信

    本文从对比两颗分立MCU与单芯片MCU开始(以LPC4350为例),展开介绍了非对称MCU的基础知识与重要特点。接下来,重点介绍了
    的头像 发表于 03-13 15:47 5249次阅读
    非对称<b class='flag-5'>双</b><b class='flag-5'>核</b>MCU基础知识及<b class='flag-5'>核</b>间通信

    ZYNQ开发运行原理及过程

    ZYNQ是一个可扩展平台,就是有FPGA作为外设的A9处理器,它的启动流程与FPGA完全不同,而与传统的ARM处理器类似,ZYNQ的启动配置需要多个处理步骤。
    的头像 发表于 12-05 10:48 5984次阅读

    正点原子i.MX 93开发板,A55+M33+NPU,路RS485&amp;amp;FDCAN&amp;amp;千兆网,异/AI/工业开发!

    正点原子i.MX 93开发板,A55+M33+NPU,路RS485&amp;FDCAN&amp;千兆网,异
    的头像 发表于 05-08 15:00 853次阅读
    正点原子i.MX 93开发板,<b class='flag-5'>双</b><b class='flag-5'>核</b>A55+M33+NPU,<b class='flag-5'>双</b>路RS485&<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>;FDCAN&<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>;千兆网,异<b class='flag-5'>核</b>/AI/工业开发!