在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Zynq上的非對稱多核處理器

OpenFPGA ? 來源:OpenFPGA ? 作者:OpenFPGA ? 2022-06-16 10:18 ? 次閱讀

ZYNQ從放棄到入門(十二)- AMP — Zynq 上的非對稱多核處理器

之前介紹的所有文章我們都只使用了一個 ARM Cortex-A9 處理器內核(Core 0)。然而,PS 端包含兩個處理器內核,對于許多應用程序,我們希望同時使用兩個 Zynq 內核以獲得最佳性能。將兩個 Zynq 處理器內核用于不同的任務可以稱為非對稱多核處理 (AMP,Asymmetric Multiprocessing),并且可以涉及以下任意組合:

Core 0 和 Core 1 上運行不同操作系統

Core 0 上運行操作系統,Core 1 上運行裸機代碼(反之亦然)

兩個Core上的裸機代碼執行不同的程序

AMP介紹

有兩種多核處理方式:對稱和非對稱。在我們定義兩者之間的區別之前,我們首先必須定義什么是多核處理:“多核處理是在系統中使用多個處理器。這可以允許同時執行多條指令。但是,它不一定非要如此。” 對稱和非對稱多核處理之間的區別是

對稱多核處理通過將處理進程分布在多個微處理器內核上來同時運行多個軟件任務

非對稱多處理使用專門的處理器來運行特定的應用程序或在相同的處理器上運行專門的應用程序

在接下來的幾篇博客中,我們將介紹 Zynq SoC 上的 AMP。首先,我們研究兩個裸機應用程序,每個應用程序都運行在不同的core上。在 Zynq SoC 上運行 AMP 時,必須考慮 Zynq 處理器core混合了私有資源和共享資源。兩個處理器都有私有的 L1 指令和數據緩存、定時器看門狗以及共享的中斷控制器(共享和私有中斷)。然而,Zynq 上的中斷并不那么簡單,因為 PS 中的每個內核都能夠使用軟件中斷來中斷自己、另一個處理器或兩個處理器,這些中斷是通過中斷控制器來分發的。

Zynq SoC 還擁有大量共享資源,常見示例包括 I/O 外設、片上存儲器、中斷控制器分配器、L2 高速緩存和位于 DDR 存儲器內的系統存儲器。下圖顯示了其中一些資源。

cf39db9c-ed0c-11ec-ba43-dac502259ad0.png

我們將從 DDR 內存運行兩個處理器內核,因此我們必須非常小心地對每個處理器使用的地址區域進行分段。地址是通過每個應用程序的鏈接描述文件確定的。如果我們對此處理不當,在不同內核上運行的應用程序可能會干擾彼此的操作。

我們還必須修改 SDK 自動生成的文件以使系統啟動并運行。第一步將根據XAPP1079(http://www.xilinx.com/support/documentation/application_notes/xapp1079-amp-bare-metal-cortex-a9.pdf)修改第一階段引導加載程序,它將檢查裸機/裸機 AMP。

我最初打算創建一個非常簡單的系統,一旦它啟動并運行,我們就可以對其進行擴展。第一個應用程序將讓 Zynq SoC 的處理器 Core 0 通過 RS232 與用戶通信,而 Core 1 在驅動連接到 ZYNQ IO 的 LEDS 。這兩個應用程序無需交互即可同時運行。

啟動和運行AMP

雖然啟動和運行 AMP 需要幾個步驟,但它實際上是非常簡單直接的過程,當然沒什么好害怕的。

讓 AMP 在 Zynq SoC 上運行的關鍵方面是引導加載程序,它在將第一個可執行文件加載到內存后查找第二個可執行文件。為了簡單化,我將使用賽靈思應用筆記 XAPP1079 中提供的修改后的 FSBL 和修改后的獨立操作系統。(源文件可在此處獲得http://www.xilinx.com/support/documentation/application_notes/xapp1079-amp-bare-metal-cortex-a9.pdf)

下載 zip 文件后,第一步是將壓縮文件解壓縮到所需的工作目錄中,并將名為 SRC 的文件夾重命名為 design。這些文件包含修改后的 FSBL 和修改后的獨立操作系統。我們需要 SDK 了解這些文件,因此下一步是更新 SDK 存儲庫(repository)以使 SDK 了解它們的存在。在 SDK的Xilinx 工具菜單下中,選擇存儲庫,然后選擇新建,導航到目錄位置 <工作目錄>app1079designworksdk_repo,如下所示:

cf550796-ed0c-11ec-ba43-dac502259ad0.png

在存儲庫中添加后,下一階段是生成以下內容:

AMP 第一階段引導加載程序

core 0 應用程序

core 1 應用程序

我們將為其中的每一個core生成一個 BSP(板級支持包)。

首先要做的是創建一個新的 FSBL。選擇file -> new application -> project,這使我們能夠創建一個支持 AMP 的 FSBL 項目。這與我們之前所做的相同,但是我們將選擇 Zynq FSBL for AMP 模板來代替 Zynq FSBL 模板。

cf7a38f4-ed0c-11ec-ba43-dac502259ad0.png

在創建 AMP FSBL 之后,我們需要為第一個內核創建應用程序。這又很簡單,我們以前做過很多次了。確保選擇 Core 0 和獨立操作系統并允許它創建自己的 BSP。

cf9e2bf6-ed0c-11ec-ba43-dac502259ad0.png

一旦我們創建了這個應用程序,我們需要在 DDR 內存中正確定義應用程序將執行的位置。為此,我們如下編輯鏈接描述文件以顯示 DDR 基地址和大小。這個很重要,如果我們沒有對 Core 0 和 Core 1 應用程序的 DDR 內存進行正確分段,我們就有可能無意中損壞另一個應用程序。

cfbaba14-ed0c-11ec-ba43-dac502259ad0.png

我們現在可以編寫我們希望在core 0 上執行的應用程序。我們需要將以下代碼部分包含在應用中。

cfd6b138-ed0c-11ec-ba43-dac502259ad0.png

此代碼禁用 Zynq SoC 片上存儲器上的緩存,并將 Core 1 程序的起始地址寫入 Core 1 將在 Core 0 執行 Set Event (SEV) 命令后訪問的地址。SEV 命令使 Core 1 開始執行其程序。

下一步是為 Core1 創建 BSP。我們想使用修改后的獨立操作系統 (standalone_amp),它可以防止重新初始化 PS Snoop 控制單元 (SCU)。因此,我們不能像為 Core 0 那樣創建項目時允許自動生成 BSP。請務必在 CPU 選擇選項中選擇 Core 1。

cfed6af4-ed0c-11ec-ba43-dac502259ad0.png

現在我們已經為 Core 1 創建了 BSP,我們需要修改 BSP 的設置,然后才能繼續創建要在 Core 1 上運行的應用程序。這非常簡單,需要添加一個額外的編譯器標志-DUSE_AMP=1 到 BSP 的驅動程序部分的配置:

d017c150-ed0c-11ec-ba43-dac502259ad0.png

完成后,我們可以自由地為 Core 1 創建應用程序。確保選擇 Core 1 作為處理器并使用我們剛剛創建的 BSP:

d02c0c14-ed0c-11ec-ba43-dac502259ad0.png

同樣,在創建新應用程序后,我們需要再次在 DDR 內存中正確定義內存位置,Core 1 程序將從該位置執行。這是通過編輯 Core 1 應用程序的鏈接器腳本來實現的:

d04a1114-ed0c-11ec-ba43-dac502259ad0.png

與此應用程序中的第一個內核一樣,我們還必須禁用片上內存上的緩存,因為我們將在以后的博客中使用此內存在兩個處理器之間進行通信. 一旦我們完成了我們的應用程序并構建了項目,我們現在應該擁有以下內容:

AMP FSBL ELF

core 0 ELF

core 1 ELF

定義設備配置的位文件。

我們現在需要一個 .bin 文件來使 Zynq SoC 從選擇的配置存儲器啟動。我們還需要一個 bif 文件,它定義了用于創建 bin 的文件,并且我們需要定義文件的順序。

我們將使用 XAPP 1079 的 directorydesignworkootgen 下提供的 bat 文件,而不是使用在 SDK 中創建的 Zynq 啟動映像。該目錄包含一個 bif 文件和一個 cpu1_bootvec.bin,該文件用作修改后的 FSBL 的一部分,以阻止它尋找更多要加載的應用程序。

為了生成bin文件,我們將生成的三個ELF文件復制到bootgen目錄并編輯BIF文件,確保bif文件中的elf名稱正確。

d060783c-ed0c-11ec-ba43-dac502259ad0.png

我們現在可以打開 ISE/Vivado 命令提示符,導航到 bootgen 目錄,然后運行 createboot.bat,將創建 boot.bin 文件:

d0737c98-ed0c-11ec-ba43-dac502259ad0.png

然后可以將該文件下載到 Zynq SoC 上的flash中。引導設備運行兩個內核啟動并執行各自的程序。

下一節我們在聊聊一些細節。

上一節文章創建了兩個core上啟動并運行簡單的軟件。它的簡單性使我能夠展示如何讓兩個 Zynq SoC 處理器內核通過 OCM(片上存儲器)進行通信。但是,兩個核上運行的軟件目前正在做一些簡單的事情,因此我們有一個可以繼續前進的基線。

Core 0 是主控并控制執行 Core 1。它還使用 UART 向終端程序打印消息。

一旦由 Core 0 啟動,Core 1 就會初始化其私有資源并驅動八個 LED 。我們需要使用 Core 1 的私有定時器并通過 GIC 啟用中斷。

這些應用程序沒有任何關聯,也不共享資源。但是,實際的應用程序希望能夠做到這一點。在 Core 0 上運行的應用程序非常簡單。它在 Core 1 上啟動軟件,然后使用 UART 0 在循環中打印出一條簡單的消息:

d0bff8fc-ed0c-11ec-ba43-dac502259ad0.png

但是,我們計劃使用 Core 1 的中斷控制器,因此我們必須首先使用以下代碼配置 GIC(通用中斷控制器):

d0d9bda0-ed0c-11ec-ba43-dac502259ad0.png

Core 1 代碼必須稍微復雜一些,因為我們使用 Zynq SoC 的 PL(可編程邏輯)端的 GPIO 模塊來驅動 ZYNQ 上的 LED。與賽靈思的所有其他接口一樣,獨立操作系統為此通過#include提供了一組簡單的驅動程序,“xgpio.h” 這個文件與我們之前用來驅動連接到 Zynq SoC 的 PS(處理系統)端的 MIO / EMIO GPIO 的 xgpio_ps.h 文件略有不同。然而,在本例中,我想展示如何在 Zynq SoC 的 PL 端使用 GPIO。為了確保我們可以看到 LED 的開關,我們將使用 Core 1 的私有計時器,這與我們過去在核心 0 上使用私有計時器相同。

d0f47ac8-ed0c-11ec-ba43-dac502259ad0.png

在 Core 1 的程序開始執行其主應用程序之前,我們需要禁用片上存儲器 (OCM) 上的緩存,初始化 GPIO,初始化私有定時器,并配置中斷控制器,以便可以使用私有定時器的中斷來切換LED。我們現在可以開始編寫相當簡單的中斷服務例程,在專用定時器結束并重新啟動時切換 LED。這個過程將永遠持續下去。

d13cb158-ed0c-11ec-ba43-dac502259ad0.png

以下是程序執行的結果,正如 Core 0 向終端窗口輸出的報告:

d16a8f4c-ed0c-11ec-ba43-dac502259ad0.png

代碼地址

https://github.com/suisuisi/zynq_guide/blob/main/core_0_main_part50.c

審核編輯 :李倩

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 處理器
    +關注

    關注

    68

    文章

    19717

    瀏覽量

    232740
  • 操作系統
    +關注

    關注

    37

    文章

    7019

    瀏覽量

    124668
  • Amp
    Amp
    +關注

    關注

    0

    文章

    85

    瀏覽量

    47529

原文標題:ZYNQ從放棄到入門(十二)- AMP — Zynq 上的非對稱多核處理器

文章出處:【微信號:Open_FPGA,微信公眾號:OpenFPGA】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    請問OpenVINO?工具套件是否支持使用非對稱卷積的支持模型?

    無法確定使用非對稱卷積的模型是否受 OpenVINO? Toolkit 的支持
    發表于 03-06 07:58

    瑞芯微RK3568正式開放RISC-V核心啦,也支持非對稱AMP雙系統!

    ,通過ARM與RISC-V的協同工作,展現出了強大的性能優勢,下面一起來看看! “非對稱AMP”雙系統 AMP(Asymmetric Multi-Processing),即非對稱多處理架構。“非對稱AMP
    的頭像 發表于 02-27 10:36 ?431次閱讀
    瑞芯微RK3568正式開放RISC-V核心啦,也支持<b class='flag-5'>非對稱</b>AMP雙系統!

    “國產雙系統”出爐!復旦微FMQL20SM非對稱AMP:Linux + 裸機

    Linux + RTOS/裸機,但需一個主核心來控制整個系統以及其它從核心。每個處理器核心相互隔離,擁有屬于自己的內存,既可各自獨立運行不同的任務,又可多個核心之間進行核間通信。 圖 1 FMQL20SM AMP異構多核框架示意圖 “
    的頭像 發表于 01-24 13:46 ?437次閱讀
    “國產雙系統”出爐!復旦微FMQL20SM<b class='flag-5'>非對稱</b>AMP:Linux + 裸機

    QorIQ?T1042多核處理器

    QorIQ?T1042多核處理器T1042 QorIQ高級多核處理器綜合了數據網絡、電信/數據通訊、無線網絡基礎設施和國防軍事/航天工程應用所需要的性能卓越數據線路加速及網絡和外圍總線
    發表于 01-10 08:48

    “雙系統”出爐!瑞芯微RK3562J非對稱AMP:Linux+RTOS/裸機

    。“非對稱AMP”雙系統是指多個核心相對獨立運行不同的操作系統或裸機應用程序,如Linux + RTOS/裸機,但需一個主核心來控制整個系統以及其它從核心。每個處理器核心相互隔離,擁有屬于自己的內存
    發表于 11-21 16:44

    旋智多核處理器助力電機控制應用

    電機控制應用軟件通常需要實時處理,以確保精確控制和快速響應。高性能、多核嵌入式處理器能夠實時處理多項復雜計算,是保持電機控制系統穩定性和準確性的關鍵。
    的頭像 發表于 10-24 16:17 ?707次閱讀
    旋智<b class='flag-5'>多核</b>心<b class='flag-5'>處理器</b>助力電機控制應用

    對稱多處理器的特點是什么

    的主要特點是處理器之間的對稱性,這意味著每個處理器都可以執行任何任務,并且它們在處理能力是等價的。 1. SMP的定義和歷史
    的頭像 發表于 10-10 16:36 ?722次閱讀

    對稱多處理器系統中的進程分配包括

    在現代計算機系統中,對稱多處理器(SMP)架構已經成為主流。這種架構允許多個處理器共享相同的內存地址空間和系統資源,從而提高了系統的處理能力和吞吐量。然而,為了充分利用SMP系統的性能,操作系統
    的頭像 發表于 10-10 16:34 ?516次閱讀

    對稱多處理器非對稱多處理器的區別

    (Symmetric Multi-Processing,簡稱SMP)和非對稱多處理器(Asymmetric Multi-Processing,簡稱AMP)。這兩種架構在設計理念、資源管理、任務分配和性能優化等方面存在顯著差異。 對稱多處理器(SMP) 定義
    的頭像 發表于 10-10 15:58 ?1816次閱讀

    為Xilinx? Zynq?UltraScale?系列多處理器中的VCCINT_VCU軌供電

    電子發燒友網站提供《為Xilinx? Zynq?UltraScale?系列多處理器中的VCCINT_VCU軌供電.pdf》資料免費下載
    發表于 09-25 10:54 ?0次下載
    為Xilinx? <b class='flag-5'>Zynq</b>?UltraScale?系列多<b class='flag-5'>處理器</b>中的VCCINT_VCU軌供電

    請問高頻放大器用非對稱電源供電會有什么影響?

    高頻放大器用非對稱電源供電會有什么影響?
    發表于 08-29 06:22

    TMS320C6474多核數字信號處理器數據表

    電子發燒友網站提供《TMS320C6474多核數字信號處理器數據表.pdf》資料免費下載
    發表于 08-01 11:09 ?0次下載
    TMS320C6474<b class='flag-5'>多核</b>數字信號<b class='flag-5'>處理器</b>數據表

    OPA828運放非對稱電源供電有什么好處嗎?

    看到一些精密儀器的電路運放好像特意設計成非對稱電源供電,比如+14v、-17v這種,請問運放非對稱電源供電有什么好處嗎?信號擺幅不超過正負7v
    發表于 08-01 06:48

    【本周六-上海】SMP對稱多處理 線下培訓

    對稱多處理(SymmetricMultiprocessing,SMP)是一種常見的并行計算架構,其中多個處理器核心共享相同的內存和總線系統。這種架構允許多個處理器核心同時運行獨立的指令流,從而
    的頭像 發表于 06-13 08:35 ?463次閱讀
    【本周六-上海】SMP<b class='flag-5'>對稱多處理</b> 線下培訓

    線下培訓 | 瑞薩電子基于RZ/G2L的OpenAMP混合部署實戰培訓

    OpenAMP一個提供用于處理非對稱多處理(AMP)系統的軟件組件,可以簡化異構多核處理器系統間的高效通信,提供跨平臺、可擴展且靈活的解決方案。通過OpenAMP,開發人員可以輕松地在
    的頭像 發表于 05-17 08:01 ?800次閱讀
    線下培訓 | 瑞薩電子基于RZ/G2L的OpenAMP混合部署實戰培訓
    主站蜘蛛池模板: 噜噜噜久久 | 亚洲一区有码 | 久草五月| 小说老卫陈红张敏陈法蓉 | 国产激烈无遮挡免费床戏视频 | 亚洲网站视频 | 国产偷啪视频一区 | 一区二区三区免费在线 | 欧美日韩一区二区不卡 | 亚洲三级成人 | 亚洲精品一线二线三线 | 圆胖肥女人性视频 | 国产激烈无遮挡免费床戏视频 | 边摸边吃奶边做视频叫床韩剧 | 欧美性69 | 国产精品乳摇在线播放 | 欧美高清激情毛片 | 久久精品高清 | 久久精品国产免费看久久精品 | 午夜噜噜噜私人影院在线播放 | 天天上天天操 | 99草在线视频 | 狠狠色狠狠色综合久久一 | 婷婷sese| 精品精品国产自在久久高清 | 亚洲欧洲国产精品你懂的 | 日本久久黄色 | 天天好比 | 就操| 天天看天天射天天碰 | 女主播扒开内衣让粉丝看个够 | 视色4setv.com| 欧美性天天 | 国产一区二区中文字幕 | 月夜免费观看高清在线完整 | 四虎永久在线精品网址 | 狠狠狠色丁香婷婷综合久久88 | 亚洲综合成人网在线观看 | 特黄一级 | 欧美大片一区 | 人人插人人爱 |