搜索
bottom↓
回复: 8

分享:ZYBO开发板AMP例子(双核独立运行)

[复制链接]

出0入0汤圆

发表于 2015-4-5 21:22:52 | 显示全部楼层 |阅读模式
AMP全称Asymmetric multiprocessing,说白了就是CPU0跑自己程序,CPU1也跑自己的程序。参考官方xapp1079-Simple AMP: Bare-Metal System Running on Both Cortex-A9 Processors.例子,实现了cpu0每隔5s打印CPU0: Hello World CPU 0,cpu1每隔5s打印CPU1: Hello World CPU 1。
开发板的启动,可以参考我的另一篇帖子 分享:用J-LINK把u-boot down到zybo开发板上 http://www.amobbs.com/thread-5619302-1-1.html (出处: amoBBS 阿莫电子论坛)
用SDK编译两个CPU的简单程序,程序和elf文件在附件里。
下面介绍下使用:
1、启动u-boot,然后如下图输入命令,因为本人网线比较差,有时候以太网连不上。

2、PC上需要有一个tftp服务器,我用的服务器在附件中。打开服务器。
3、然后通过tftpboot命令把amp_cpu1.elf下载到0x005000000位置(DDR3中),因为amp_cpu0的起始地址是0x00100000,amp_cpu1的起始地址是0x00200000,所以要必开这两个地址。
4、使用u-boot loadelf命令把amp_cpu1.elf文件装载到正确的位置,这个命令是本人自己修改的,就是把bootelf命令后面地址跳转的部分去掉,只把elf文件下载到对应的地址。
5、通过tftpboot命令把amp_cpu0下载到0x00500000位置,同step3。
6、启动amp_cpu0.elf文件,使用bootelf命令。

这样实现以下效果:


在这个例子中,cpu0负责运行u-boot,然后运行amp_cpu0.elf,cpu1负责运行amp_cpu1.elf。

正常情况cpu0先启动,然后唤醒cpu1,这个过程在官方Technical Reference Manual中有如下介绍:
The steps for CPU 0 to start an application on CPU 1 are as follows:
1. Write the address of the application for CPU 1 to 0xFFFFFFF0.
2. Execute the SEV instruction to cause CPU 1 to wake up and jump to the application.
The address range 0xFFFFFE00 to 0xFFFFFFF0 is reserved and not available for use until the stage 1
or above application is fully functional. Any access to these regions prior to the successful start-up
of the second CPU causes unpredictable results.

cpu1的程序起始地址放在0xFFFFFFF0中,这样cpu0通过sev指令唤醒cpu1后,就会跳转到cpu1程序的起始地址。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入0汤圆

发表于 2015-4-5 22:42:02 | 显示全部楼层
从哪分享的?

出0入0汤圆

发表于 2015-4-5 23:18:48 | 显示全部楼层
有xapp1078在zybo板子上的例子没?

出0入0汤圆

 楼主| 发表于 2015-4-6 09:54:12 | 显示全部楼层
041012js 发表于 2015-4-5 23:18
有xapp1078在zybo板子上的例子没?

目前没有,不过这个应该可以实现。

出0入0汤圆

 楼主| 发表于 2015-4-6 09:54:44 | 显示全部楼层

本人自己弄的,参考xapp1079

出0入0汤圆

发表于 2015-4-6 10:06:48 | 显示全部楼层
nfchg 发表于 2015-4-6 09:54
目前没有,不过这个应该可以实现。

期待xapp1078大作

出0入0汤圆

发表于 2016-11-29 11:20:43 | 显示全部楼层
牛。学习一下。多谢楼主。

出0入0汤圆

发表于 2018-2-9 10:19:51 | 显示全部楼层
不知道两个内核是否都能独立的操作外部外设呢,比如io

出0入0汤圆

发表于 2018-7-17 09:37:34 | 显示全部楼层
chenqi 发表于 2018-2-9 10:19
不知道两个内核是否都能独立的操作外部外设呢,比如io

可以的,但是要做好分配,不要两个CPU操作同一外设,这样会产生冲突。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-27 00:09

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表