前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Zynq的AMP多核处理

Zynq的AMP多核处理

作者头像
用户9736681
发布2023-09-01 13:27:59
2730
发布2023-09-01 13:27:59
举报
文章被收录于专栏:嵌入式随笔嵌入式随笔

写的是Zynq 7000系列的,arm有两个核。主要有AMP和SMP两种方式,SMP是两个核运行一个操作系统,跑LINUX的话,使能SMP,资源会自动分配给两个核运行。AMP是两个核独立运行,每个核可以运行操作系统也可以裸机运行。

两个CPU的启动方式是CPU0先运行,然后根据需要启动CPU1。

ZYNQ会先运行一个fsbl程序,再运行应用程序。因此启动CPU1的工作可以在fsbl中做,也可以在应用程序中做。

1 在FSBL中启动CPU1

FSBL程序可以在VITIS这个软件中生成。

在FSBL中添加以下程序来启动CPU1

代码语言:javascript
复制
Xil_Out32(0XFFFFFFF0, CPU1程序地址);
dmb(); 
sev(); //唤醒 CPU1

此段程序加在FSBL程序的HandoffAddress = LoadBootImage()之后,LoadBootImage()的作用的是将程序拷贝到ddr中,先将程序拷贝到ddr中,程序才能跳转运行。

1.1 CPU0运行裸机程序

fsbl启动两个CPU的应用程序

1.2 CPU0运行操作系统(Linux)

uboot就是CPU0的应用程序

2 应用程序启动CPU1

2.1 CPU0运行裸机程序

在CPU0的应用程序中唤醒CPU1,程序一样,如下:

代码语言:javascript
复制
Xil_Out32(0XFFFFFFF0, CPU1程序地址);
dmb(); 
sev(); //唤醒 CPU1

2.2 CPU0运行操作系统(Linux)

可以在UBOOT中唤醒CPU1,也可以在运行内核后唤醒CPU1。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2023-07-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 嵌入式随笔 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 在FSBL中启动CPU1
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档