0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

大大簡化AMP配置與使用的Linux

電子工程師 ? 來源:網(wǎng)絡(luò)整理 ? 作者:工程師黃明星 ? 2018-06-06 12:56 ? 次閱讀

嵌入式系統(tǒng)一般分為兩大類:需要硬實(shí)時(shí)性能的;和不需要硬實(shí)時(shí)性能的。過去,我們不得不做出艱 抉擇,即選擇實(shí)時(shí)操作系統(tǒng)的性能還是我們鐘愛的 Linux 系統(tǒng)的豐富特性,然后努力彌補(bǔ)不足之處。

典型的 AMP配置在很多方面類似于基于 PCI 的系統(tǒng),即 Linux 域起到主機(jī)作用,RTOS 域起到適配器作用,并有一個(gè)或多個(gè)共享存儲器域用來實(shí)現(xiàn)兩個(gè)域之間的通信。不過與 PCI 不同,AMP 配置能更方便、動態(tài)地為一個(gè)或另一個(gè)域分配資源(標(biāo)準(zhǔn)外設(shè)和自定義邏輯)。此外,Linux/RTOS AMP 系統(tǒng)能根據(jù)運(yùn)行時(shí)間要求——例如各種外部設(shè)備的有無——?jiǎng)討B(tài)地重新配置可編程邏輯。

靈活程度通常會與建立 AMP 系統(tǒng)所涉及的復(fù)雜性和難度息息相關(guān)。不過請放心,Linux開發(fā)社區(qū)已經(jīng)將很多功能引入到核心,能大大簡化AMP配置與使用。

LINUX 多處理簡介

就多處理而言,Linux 核心分為兩種:單處理器 (UP) 核心和對稱多處理器 (SMP) 核心。無論有多少個(gè)內(nèi)核,UP 核心只能在單個(gè)內(nèi)核上運(yùn)行。AMP 系統(tǒng)可包含兩個(gè)或更多個(gè)單處理器內(nèi)核的實(shí)例。

SMP 核心可在一個(gè)內(nèi)核或同時(shí)在多個(gè)內(nèi)核上運(yùn)行(圖 1)??蛇x的核心命令行參數(shù)控制系統(tǒng)初始化之后 SMP 核心所使用的內(nèi)核數(shù)量。核心運(yùn)行時(shí),各種命令行實(shí)用程序會控制分配給核心的內(nèi)核數(shù)量。能夠動態(tài)地控制內(nèi)核所使用的內(nèi)核數(shù)量,這是 SMP 核心比 UP 核心更受 AMP 開發(fā)人員青睞的主要原因。

大大簡化AMP配置與使用的Linux

圖 1 — 對稱多處理。SMP 核心可在多個(gè)內(nèi)核上同時(shí)運(yùn)行。

遠(yuǎn)程處理器 (remoteproc) 框架是一種 Linux 組件,負(fù)責(zé)啟動和停止各個(gè)內(nèi)核(遠(yuǎn)程處理器),以及在 AMP 系統(tǒng)中加載內(nèi)核的軟件。例如,我們可以將圖 1 所示的 SMP 系統(tǒng)動態(tài)地重新配置為圖 2 所示的 AMP 系統(tǒng),然后再使用 remoteproc 的功能配置回 SMP。

我們可以通過用戶空間應(yīng)用程序或系統(tǒng)初始化腳本完全控制重配置。重配置控制功能使用戶應(yīng)用可以根據(jù)系統(tǒng)的動態(tài)需求停止、重新加載和運(yùn)行多種 RTOS 應(yīng)用程序。

大大簡化AMP配置與使用的Linux

圖 2 — 具有 Linux SMP 核心的 AMP

內(nèi)核的軟件(本例中是指 RTOS 和用戶應(yīng)用程序)從標(biāo)準(zhǔn)的可執(zhí)行和可鏈接格式 (ELF) 文件中加載,該文件包含一個(gè)資源表的特殊段。資源表類似于 PCI 配置空間,用來描述 RTOS 需要的資源。這些資源中包括 RTOS 代碼和數(shù)據(jù)所需的存儲器。

追蹤緩沖區(qū)

追蹤緩沖區(qū)是自動在 Linux 文件系統(tǒng)中作為文件出現(xiàn)的存儲器區(qū)域。顧名思義,追蹤緩沖區(qū)向遠(yuǎn)程處理器提供基本追蹤功能。遠(yuǎn)程處理器向緩沖區(qū)寫入追蹤、調(diào)試和狀態(tài)消息,以便通過 Linux 命令行或定制應(yīng)用進(jìn)行檢查。

能夠動態(tài)地控制核心所使用的內(nèi)核數(shù)量,這是 SMP 核心比 UP 核心更受 AMP 開發(fā)人員青睞的主要原因。

在資源表中輸入條目,以請求一個(gè)或多個(gè)追蹤緩沖區(qū)。盡管一般包含純文本,但追蹤緩沖區(qū)也會包含二進(jìn)制數(shù)據(jù),例如應(yīng)用狀態(tài)信息或警報(bào)指示。

虛擬 I/O 設(shè)備

我們還可使用資源表定義虛擬輸入/輸出設(shè)備 (VDEV),這種設(shè)備主要是支持 Linux 核心與遠(yuǎn)程處理器之間消息傳送的幾對共享存儲器隊(duì)列。VDEV 定義包括用來設(shè)定隊(duì)列大小的字段,以及用來在處理器之間發(fā)信號的中斷。

Linux 核心可處理虛擬 I/O 隊(duì)列的初始化。遠(yuǎn)程處理器上運(yùn)行的軟件只需要在其資源表中包含一個(gè) VDEV 描述,然后在開始執(zhí)行時(shí)使用隊(duì)列;剩下的都由核心來處理。

遠(yuǎn)程處理器消息框架

遠(yuǎn)程處理器消息 (rpmsg) 框架是基于 Linux 核心的虛擬 I/O 系統(tǒng)的軟件消息總線。該消息總線類似于局部區(qū)域子網(wǎng)絡(luò),單個(gè)處理器可在其中通過共享存儲器創(chuàng)建可尋址端點(diǎn)和交換信息。

核心的 rpmsg 框架起到開關(guān)的作用,根據(jù)消息中包含的目的地址將消息傳送到相應(yīng)端點(diǎn)。由于消息報(bào)頭包含源地址,因此可在不同處理器之間建立專用連接。

命名服務(wù)

處理器可通過向 rpmsg 框架的命名服務(wù)發(fā)送消息,以動態(tài)宣布特定服務(wù)。命名服務(wù)功能本身用途不是很大。不過,rpmsg 框架允許將服務(wù)名稱關(guān)聯(lián)到設(shè)備驅(qū)動程序,以支持驅(qū)動程序的自動加載和初始化。

例如,如果遠(yuǎn)程處理器宣布 dlinx-h323-v1.0 服務(wù),那么核心可以搜索、加載和初始化與該名稱關(guān)聯(lián)的驅(qū)動程序。如果系統(tǒng)中服務(wù)被動態(tài)安裝在遠(yuǎn)程處理器上,那么這樣可大大簡化驅(qū)動程序管理。

管理中斷

中斷管理有些棘手,尤其在啟動和停止內(nèi)核時(shí)更是如此。最終,系統(tǒng)需要在遠(yuǎn)程處理器啟動時(shí)動態(tài)地將特定中斷重定向至遠(yuǎn)程處理器域,然后當(dāng)遠(yuǎn)程處理器停止時(shí)收回中斷。此外,系統(tǒng)必須保護(hù)中斷,防止其被錯(cuò)誤配置的驅(qū)動程序誤分配。簡言之,必須在系統(tǒng)層面管理中斷。

對于 Linux SMP 核心而言,這是一個(gè)常規(guī)事件,而且是 SMP 核心在 AMP 配置中更受青睞的另一個(gè)原因。遠(yuǎn)程處理器框架能方便地管理中斷,只需來自設(shè)備驅(qū)動程序的最小支持。

設(shè)備驅(qū)動程序

設(shè)備驅(qū)動開發(fā)是個(gè)始終需要關(guān)注的問題,因?yàn)樗璧募寄芙M合可能無法立刻提供。幸運(yùn)的是,Linux 核心的 remoteproc 和 rpmsg 框架完成大部分重活;驅(qū)動程序只需要實(shí)現(xiàn)幾個(gè)標(biāo)準(zhǔn)驅(qū)動程序例程。功能完整的驅(qū)動程序可能只需要幾百行代碼。核心源代碼樹包含嵌入式開發(fā)人員可根據(jù)自身要求進(jìn)行調(diào)整的驅(qū)動程序范例。

廠商還提供通用的開源設(shè)備驅(qū)動程序。DesignLinx Hardware Solutions 提供針對 Linux 和 FreeRTOS 的通用 rpmsg 驅(qū)動程序。由于通用驅(qū)動程序沒有假定所交換消息的格式,因此嵌入式開發(fā)人員可將其用于多種 AMP 應(yīng)用,無需做任何修改。

大大簡化AMP配置與使用的Linux

引腳內(nèi)移動

新型 SoC 產(chǎn)品使設(shè)計(jì)人員能夠方便地將各種硬件設(shè)計(jì)從印刷電路板移植到片上系統(tǒng)(圖 3)。過去在 PCB 上作為分立處理器和組件的部分可以完全在 SoC 的引腳內(nèi)實(shí)現(xiàn)。

例如,我們可以使用賽靈思 Zynq-7000 系列 SoC 實(shí)現(xiàn)圖 3 中的初始 PCB 硬件架構(gòu),將其中一個(gè) ARM 處理器作為可編程邏輯中的控制 CPU 和軟處理器(例如賽靈思 MicroBlaze? 處理器),以替代分立處理器。我們可以使用剩余的 ARM 處理器運(yùn)行 Linux SMP 核心(圖 4)。

將 Linux 添加到初始設(shè)計(jì)中能夠?yàn)?ARM 內(nèi)核和軟核處理器提供以上描述的所有標(biāo)準(zhǔn)多處理功能(例如啟動、停止、重載、追蹤緩沖區(qū)和遠(yuǎn)程消息)。而且,還帶來豐富的 Linux 功能集,可支持多種網(wǎng)絡(luò)接口以太網(wǎng)、Wi-Fi藍(lán)牙)、網(wǎng)絡(luò)服務(wù)(Web 服務(wù)器、FTP、SSH、SNMP)、文件系統(tǒng)(DOS、NFS、cramfs、閃存存儲器)以及其他接口(PCIe、SPI、USB、MMC、視頻)等。這些特性能方便地實(shí)現(xiàn)新功能,無需對經(jīng)過檢驗(yàn)的架構(gòu)做太大改動。

大大簡化AMP配置與使用的Linux

新型 SoC 產(chǎn)品使設(shè)計(jì)人員能夠方便地將各種硬件設(shè)計(jì)從印刷電路板移植到片上系統(tǒng)。

內(nèi)核不斷涌現(xiàn)

過去幾年中,針對嵌入式市場的多核 SoC 產(chǎn)品不斷增加,而且很適合用于 AMP配置。

例如,賽靈思 UltraScale+? MPSoC 架構(gòu)包含一個(gè) 64 位四核 ARM Cortex-A53、一個(gè) 32 位雙核 ARM Cortex-R5、一個(gè)圖形處理單元 (GPU) 以及多種其他外設(shè),當(dāng)然還包括有用的可編程邏輯。這為那些清楚如何駕馭實(shí)時(shí)操作系統(tǒng)的性能以及 Linux 核心的豐富特性集的設(shè)計(jì)人員提供了沃土。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • ARM
    ARM
    +關(guān)注

    關(guān)注

    134

    文章

    8967

    瀏覽量

    365042
  • 嵌入式系統(tǒng)
    +關(guān)注

    關(guān)注

    40

    文章

    3520

    瀏覽量

    128805
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11123

    瀏覽量

    207917
收藏 人收藏

    評論

    相關(guān)推薦

    基于Linux內(nèi)核的透明代理配置方案

    本內(nèi)容提供了基于Linux內(nèi)核的透明代理配置方案,先解釋為什么要配置透明代理,如何利用Linux內(nèi)核來實(shí)現(xiàn)
    發(fā)表于 11-03 16:47 ?816次閱讀

    Linux內(nèi)核配置系統(tǒng)的組成

    Linux內(nèi)核源碼很多,有上千條配置選項(xiàng),配置相當(dāng)復(fù)雜。
    發(fā)表于 07-14 15:17 ?565次閱讀
    <b class='flag-5'>Linux</b>內(nèi)核<b class='flag-5'>配置</b>系統(tǒng)的組成

    Linux環(huán)境下USB的原理、驅(qū)動和配置

    本文對 Linux 環(huán)境下USB 的原理、驅(qū)動和配置進(jìn)行詳細(xì)介紹。隨著生活水平的提高,人們對 USB 設(shè)備的使用也越來越多,鑒于Linux 在硬件配置上尚不能全部即插即用,因此關(guān)于
    發(fā)表于 01-16 16:57 ?33次下載

    ADI寬帶RFIC實(shí)現(xiàn)重大技術(shù)突破,大大簡化設(shè)計(jì)

    ADI寬帶RFIC實(shí)現(xiàn)重大技術(shù)突破,大大簡化設(shè)計(jì) 隨著多種標(biāo)準(zhǔn)在中國的共存,射頻器件需要滿足多種頻段的需求。目前的情況是移動終端的射頻已開始走向部分集成,支持
    發(fā)表于 01-04 14:10 ?723次閱讀

    實(shí)用的Linux網(wǎng)絡(luò)配置工具netconf

    實(shí)用的Linux網(wǎng)絡(luò)配置工具netconf 很多用戶不使用Linux網(wǎng)絡(luò)的原因是配置的復(fù)雜性與困難性,下面的內(nèi)容介紹使用Linux下的GU
    發(fā)表于 01-29 11:24 ?897次閱讀

    簡化FPGA配置設(shè)計(jì)過程

    本文著重介紹了 Xilinx Platform Flash PROM 如何幫助系統(tǒng)和電路板設(shè)計(jì)人員簡化 FPGA 配置設(shè)計(jì)。用于配置 FPGA 的可選解決方案有很多,但它們通常都需要大量的前期設(shè)計(jì)工作和時(shí)間。Platform
    發(fā)表于 03-14 15:18 ?64次下載

    Linux主機(jī)IP配置

    Linux如何進(jìn)行靜態(tài)IP的設(shè)置,在主機(jī)下運(yùn)行IP配置的指令
    發(fā)表于 06-03 14:30 ?0次下載

    linux下網(wǎng)卡配置詳解

    linux下網(wǎng)卡配置詳解
    發(fā)表于 12-15 22:38 ?0次下載

    第8章 Linux軟件開發(fā)平臺及軟件配置

    Linux軟件開發(fā)平臺及軟件配置 8.1 Linux 體系結(jié)構(gòu) 8.2 Linux開發(fā)基礎(chǔ) 8.2 Linux嵌入式系統(tǒng)開發(fā)平臺
    發(fā)表于 04-11 14:38 ?3次下載

    Linux內(nèi)核配置系統(tǒng)詳解

    ,都將面臨著同樣的問題,即如何將源代碼融入到 Linux 內(nèi)核中,增加相應(yīng)的 Linux 配置選項(xiàng),并最終被編譯進(jìn) Linux 內(nèi)核。這就需要了解
    發(fā)表于 11-01 15:45 ?4次下載

    Linux中如何配置DNS

    ----DNS的功用是把計(jì)算機(jī)的名稱轉(zhuǎn)換為 IP地址。DNS的使用簡化了系統(tǒng)管理員及客戶對主機(jī)文件的操作和維護(hù)。 Intranet服務(wù)器的系統(tǒng)配置 ----硬件配置:Pentium 133 CPU
    發(fā)表于 11-07 10:44 ?3次下載

    基于Linux 簡化 AMP 配置使其更方便更動態(tài)地分配資源

    )以及龐大的可編程邏輯陣列。我們可將這些 SoC 產(chǎn)品作為 Linux/RTOS AMP 系統(tǒng)的基礎(chǔ),助其實(shí)現(xiàn)高度的靈活性。 典型的 AMP 配置在很多方面類似于基于 PCI 的
    發(fā)表于 11-17 01:41 ?2480次閱讀
    基于<b class='flag-5'>Linux</b> <b class='flag-5'>簡化</b> <b class='flag-5'>AMP</b> <b class='flag-5'>配置</b>使其更方便更動態(tài)地分配資源

    Linux網(wǎng)絡(luò)概念和IP怎樣合理的配置

    Linux網(wǎng)絡(luò)概念和IP配置教程
    發(fā)表于 11-06 14:08 ?1034次閱讀
    <b class='flag-5'>Linux</b>網(wǎng)絡(luò)概念和IP怎樣合理的<b class='flag-5'>配置</b>

    Linux下網(wǎng)絡(luò)怎樣來配置總結(jié)

    Linux下網(wǎng)絡(luò)配置總結(jié)
    發(fā)表于 11-07 11:35 ?832次閱讀

    Linux網(wǎng)絡(luò)基本配置與管理

    Linux是一種開源操作系統(tǒng),被廣泛用于服務(wù)器和網(wǎng)絡(luò)設(shè)備中。在Linux中,網(wǎng)絡(luò)配置和管理是一個(gè)重要且復(fù)雜的任務(wù)。本篇文章將詳細(xì)介紹Linux網(wǎng)絡(luò)基本
    的頭像 發(fā)表于 11-27 16:51 ?692次閱讀