博客 / 詳情

返回

讀書筆記 XILINX ug1137-Zynq UltraScale+ MPSoC Software Developer Guide 軟件開發者指南 Chapter5&Chapter6

目錄
  • 前言
  • Chapter 5: Software Development Flow 軟件開發流程
    • 5.1 Bare Metal Application Development 裸機應用開發
    • 5.2 Application Development Using PetaLinux Tools 使用PetaLinux工具開發應用程序
    • 5.3 Linux Application Development Using Vitis 使用Vitis進行Linux應用程序開發
      • 5.3.1 創建Linux應用程序項目
    • 本章小結
  • Chapter 6: Software Design Paradigms 軟件設計範式
    • 6.1 Frameworks for Multiprocessor Development 多處理器開發框架
    • 6.2 Symmetric Multiprocessing (SMP) 對稱多處理
    • 6.3 Asymmetric Multiprocessing (AMP) 非對稱多處理
    • 6.3.1 OpenAMP
    • 6.3.2 Virtualization with Hypervisor 使用虛擬機進行虛擬化
    • 6.3.3 Use of Hypervisors 虛擬機的使用
  • 小結

前言

上一章我們講了ug1137的第3章和第4章,兩個章節説實話沒有什麼實際內容可言,主要都是些概念性的,或者介紹性的內容,我們這次講的第5章和第6章也差不多,實際內容並不多,不過我們依然還是要過一遍。

Chapter 5: Software Development Flow 軟件開發流程

這個章節主要介紹了使用VITIS對MPSOC進行裸機開發和使用PetaLinux進行Linux軟件開發的流程,我們首先介紹一下MPSOC的軟件開發架構:
image
這張圖大致示意了使用VIVADO進行硬件設計,然後導出硬件給軟件開發工具,然後合同軟件棧開發的架構圖。

5.1 Bare Metal Application Development 裸機應用開發

裸機應用開發這一小節講了比較基礎的如何使用VITIS進行裸機開發的流程,但是説實話寫的比較簡陋,幾乎沒有參考意義,如果真要學最基礎的什麼導入硬件平台,創建工程這些內容不如找一份中文教程看。這部分也就沒有什麼內容了。不夠有幾個NOTE點還是值得注意一下:

Note:
1.AMD建議您使用Managed Make flow而不是標準Make C/C++,除非您願意使用make files。
2.Cortex®-R5F和Cortex®-A53 32位的裸機軟件不支持使用DMA的64位地址進行數據傳輸。
3.默認情況下,所有獨立應用程序將僅在APU0上運行。其他APU核心將關閉。

5.2 Application Development Using PetaLinux Tools 使用PetaLinux工具開發應用程序

這個小節僅展示了一下基於PetaLinux工具的軟件開發流程的圖表,有點意義不明,這個圖表在下一小節也出現了,我們這裏就跳過這一小節。

5.3 Linux Application Development Using Vitis 使用Vitis進行Linux應用程序開發

這一小節講了如何使用VITIS進行Linux開發的步驟,內容大部分是教程類的,由於我也還沒用過VITIS開發Linux,這裏就完整把這些操作的中文版翻譯了。

AMD軟件設計工具促進了Linux用户應用程序的開發。本節概述了Linux應用程序開發的開發流程。
下圖説明了使用Vitis軟件平台開發Linux用户應用程序所涉及的典型步驟。
image

5.3.1 創建Linux應用程序項目

您可以使用“新建應用程序項目”嚮導創建C或C++ Linux應用程序項目。
要創建一個項目:

  1. 單擊File → New → Application Project。出現“新建應用程序項目”對話框。
  2. 在“Project Name”字段中輸入項目名稱。
  3. 選擇項目的位置。您可以通過選中“Use default location”複選框來使用“位置”字段中顯示的默認位置。否則,單擊複選框並輸入或瀏覽到目錄位置。
  4. 選擇下一步。
  5. 在“選擇平台”選項卡上,選擇具有Linux域的平台,然後單擊“下一步”。
  6. 在“域”窗口中,從“域”下拉列表中選擇域。
  7. 選擇您喜歡的語言:C或C++。
  8. 或者,選擇Linux系統根以指定Linux系統根路徑,並選擇Linux工具鏈以指定Linux工具鏈路徑。> 9. 單擊下一步移動到“Templates”視圖。
  9. Vitis軟件平台提供了“模板”對話框中列出的有用示例應用程序,您可以使用這些應用程序來創建項目。“描述”框顯示所選示例應用程序的簡要描述。當您為項目使用示例應用程序時,Vitis軟件平台會創建所需的源文件和頭文件以及鏈接器腳本。
  10. 選擇所需的模板。如果要創建空白項目,請選擇“空應用程序”。創建項目後,您可以將C文件添加到項目中。
  11. 單擊“完成”創建您的Linux應用程序項目。
  12. 單擊小錘子圖標以生成或生成應用程序項目。

我翻譯了第一個後就沒翻譯了,主要我發現他這裏説是創建Linux工程,但實際實際上所有步驟幾乎都和裸機開發時一樣的,只有第8步指定Linux System Root這步不一樣,但是他有沒有展開説,而且實際上vitis裏選domain時根本沒有Linux這個選項,這個章節就顯得很意義不明。後面的教程都是比較簡單的創建Hello World工程,進行調試,這些比較簡單的內容,就不再翻譯了。

本章小結

本來以為這章會真的介紹軟件工作流,結果進來看才發現怎麼全是水貨,有種上當了的感覺,不過這章也倒是隻有7頁,也就算了。

Chapter 6: Software Design Paradigms 軟件設計範式

這一章節大致是在介紹在MPSOC中使用異構計算的幾種方法,可能也就是標題所説的範式的意思,我們直接來看介紹:

MPSoC架構支持針對不同任務的異構多處理器引擎。開發針對這些處理器的軟件的主要方法是使用以下方法:

  • 多處理器開發框架:描述可用於在MPSoC上開發的框架。
  • 對稱多處理(SMP):使用PetaLinux進行SMP開發是在MPSoC上使用Linux平台開發SMP的最簡單流程。
  • 非對稱多處理(AMP):AMP是一種強大的模式,可以使用多個處理器引擎,並精確控制每個處理器上運行的內容。與SMP不同,有很多不同的使用方式可以使用AMP。本節描述了複雜程度不同的兩種使用AMP的方法。

這裏説到了很多專有名詞,我們來挨個解釋一下,第一個是異構多處理器,所謂異構多處理器就是指在一個多核處理器中在不同核心上使用不同的系統,例如在一個APU上使用Linux,在另一個上使用裸機就可以成為異構多處理器。而AMP和SMP我這裏引用一下正點原子的描述:

  • AMP 運行模式指多個內核相對獨立的運行不同的任務,每個內核相互隔離,可以運行不同的操作系統(OS)或裸機應用程序。
  • SMP 運行模式指多個處理器運行一個操作系統,這個操作系統同等的管理多個內核,如 PC 電腦。

下面就逐小節介紹這些內容。

6.1 Frameworks for Multiprocessor Development 多處理器開發框架

這一小節主要是講AMD或者説是ARM提供給多處理器用來進行開發的一些基礎框架,基於這些框架可以進行多處理器下更高安全性,或者更高性能的開發,不過還是如之前所説,我對ARM架構以及其安全性的框架不是很熟,這裏就還是多翻譯原文了:

AMD為MPSoCs提供多個框架,以促進在異構處理器和AMD 7系列FPGA上的應用程序開發。這些框架描述如下:

  • 虛擬機管理程序框架:AMD提供Xen虛擬機管理程序,這是支持MPSoC的APU上虛擬化所需的關鍵項目。“虛擬機管理程序的使用”部分涵蓋了更多詳細信息。
  • 身份驗證框架:MPSoC支持身份驗證和加密功能,作為身份驗證框架的一部分。要了解有關身份驗證框架的更多信息,請參閲引導時安全性。
  • TrustZone框架:TrustZone技術允許並維護同一系統內安全和非安全流程之間的隔離。有關更多信息,請參閲本白皮書。
  • 多處理器通信框架:AMD為MPSoCs提供OpenAMP框架,以允許不同處理單元之間的通信。有關更多詳細信息,請參閲快速模擬器用户指南:QEMU。
  • 電源管理框架:電源管理框架允許跨不同處理單元運行的軟件組件與電源管理單元通信。

AMD通過Trusted Firmware-A(TF-A)提供信任區支持,以保持安全和非安全世界之間的隔離。要了解有關TF-A的更多信息,請參閲Trusted Firmware-A。

6.2 Symmetric Multiprocessing (SMP) 對稱多處理

如之前所説,對稱多處理SMP實際上就是在一個操作系統中使用多個核心,典型的就是PC端的Windows系統,在這個模式下,操作系統會管理處理器,外設,中斷,以及負載。在MPSOC上,使用Linux系統可以同時將四個A53核納入Linux系統中管理,下面這張圖展示了MPSOC上使用四核心的SMP運行單一Linux系統:
image
這同時也提到了SMP工作在Linux系統時其實時性會比較差,不過給出解釋比較奇怪,這裏不多做解讀了,原文是:

This would not be the best mode of operation when there are hard, real-time requirements as it ignores Linux application core affinity which should be available to developers with the existing AMD software.

6.3 Asymmetric Multiprocessing (AMP) 非對稱多處理

非對稱多處理就是在多處理器上運行不同的操作系統或者不同的運行內容,這一節主要會介紹兩種不同的AMP,不過在此之前還有一些其他事項要明確。

首先在使用AMP前,開發者必須要先指定那些代碼需要在哪個處理器上運行,我記得VITSI在創建完硬件平台並指定硬件平台創建工程後,就需要確定該工程的域(domain),我這裏截了一張圖,上面能看到這個工程工作在A53-0核的裸機模式:
image
同時要指出,MPSOC的兩個R5F核只支持使用AMP而不支持SMP,所以這兩個核心也常被用於支持高實時性要求的應用。另一方面,AMP模式還可以被單獨用於PL端的MicroBlaze處理器中,並且可以單獨運行,不需要和PS端進行通信,這裏本來還有一張示意圖表但是意義不太大,所以就不貼出來了。

6.3.1 OpenAMP

openAMP是上面説到的兩種AMP模式中的一個,這裏都是介紹性的內容,我就只貼翻譯了:

OpenAMP框架提供了執行以下操作的機制:

  • 加載和卸載硬件
  • 使用標準API在應用程序之間進行通信
    下圖顯示了Openamp的示例以及使用Openamp框架的RPU的硬實時功能。
    在這種情況下,運行在APU上的Linux應用程序執行RPU應用程序的加載和卸載。這允許開發人員根據需要將不同的處理專用算法加載到RPU處理引擎,並具有非常確定的性能。
    image

6.3.2 Virtualization with Hypervisor 使用虛擬機進行虛擬化

虛擬化這個概念我理解的就是將硬件資源抽象化,使其能夠不止被單一設備使用的一種手段,可能理解比較粗淺,具體解釋可以看下這篇文章:https://www.cnblogs.com/xiugeng/p/18703305。而MPSOC中的很多資源也支持虛擬化,來看下面的原文:

Zynq MPSoCs擁有一個對於Arm CortexA53處理器、中斷控制器和Arm System MMU(SMMU)的硬件虛擬化擴展,可靈活地將各種操作系統組合(包括SMP和AMP)結合在一起。
下圖顯示了支持SMP的操作系統的示例,例如與實時操作系統(RTOS)配合使用的Linux以及使用單個虛擬機管理程序的裸機應用程序。
image

不過文檔提到,在MPSOC中使用虛擬化技術還是比較複雜的,特別是較為底層的設計會更為複雜,例如FPGA端編寫的硬件代碼也必須有着能夠被虛擬機調用的接口,所以文檔也建議要優先確定系統架構。

6.3.3 Use of Hypervisors 虛擬機的使用

這一小節説是在講虛擬機的使用,但是我看了下感覺更像是在講什麼是Xen Hypervisors,由於我也沒用過,就還是以翻譯為主了:

AMD在MPSoC中為Xen開源虛擬機管理程序分發了一個端口。Xen虛擬機管理程序提供在同一計算平台上運行多個操作系統的能力。Xen虛擬機管理程序直接在硬件上運行,負責管理中央處理器、內存和中斷。多個操作系統可以在虛擬機管理程序上運行。這些操作系統稱為域(也稱為虛擬機(VMs))。
Xen虛擬機管理程序能夠相對輕鬆地同時運行多個操作系統及其標準應用程序。然而,Xen不提供通用接口,使客户能夠通過操作系統訪問系統功能。因此,您需要遵循本節中提到的注意事項。
Xen虛擬機管理程序控制一個域(域0)以及一個或多個用户域。控制域具有特殊特權,例如以下:

  • 直接訪問硬件的能力
  • 處理對系統I/O功能的訪問的能力
  • 與其他虛擬機的交互。
    它還向外部世界暴露了一個控制界面,通過該界面控制系統。每個來賓域都運行自己的操作系統和應用程序。訪客域與硬件完全隔離。

使用Xen虛擬機管理程序運行多個操作系統涉及設置主機操作系統並添加一個或多個客户操作系統。

小結

又是兩章沒啥實際內容的章節,或者説是我不太看得懂的章節,由於都是介紹性的內容,所以感覺乾貨不多,不夠我們下一章就要準備上乾貨了,下一章講boot的相關內容,我們下次見。

user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.