<rt id="m4md3"></rt>
  • <bdo id="m4md3"><meter id="m4md3"></meter></bdo>
  • <label id="m4md3"></label>
      <center id="m4md3"><optgroup id="m4md3"></optgroup></center>
      產(chǎn)品分類

      當(dāng)前位置: 首頁 > 傳感測量產(chǎn)品 > 工業(yè)傳感器 > 溫濕度傳感器

      類型分類:
      科普知識
      數(shù)據(jù)分類:
      溫濕度傳感器

      在應(yīng)用處理器上開發(fā)實時任務(wù)系統(tǒng)

      發(fā)布日期:2022-04-26 點擊率:52

      • 關(guān)鍵詞:                                                                arm                                                                linux                                                                real-time

      • 摘要:本文概括介紹了在應(yīng)用處理器上使用 Linux作為操作系統(tǒng)開發(fā)實時系統(tǒng)的解決方案。對于想要使用微處理器并且關(guān)注實時控制和決策的開發(fā)者,這可以作為入門。我們展示了使用異構(gòu)多核處理的 SoC 硬件方案,以及兩個基于軟件的方法:Linux-RT Patch 和Xenomai。演示的結(jié)果并不是為了對比操作系統(tǒng)或者實時技術(shù)。每一種方法都具有優(yōu)勢和劣勢,最終還是取決于應(yīng)用場景。


        應(yīng)用處理器的應(yīng)用范圍越來越廣泛。系統(tǒng)芯片都是采用ARM?Cortex-A 正在搶占部分原來由 ARM? Cortex-M和其他微處理器設(shè)備統(tǒng)治的市場。這種趨勢由幾個因素造成:

      • 通常和 IoT 相關(guān)的強烈互聯(lián)需求,不僅從硬件上,也有軟件、協(xié)議以及安全相關(guān)方面

      • 深度互動界面的要求,例如多點觸控、高分辨率顯示以及豐富的圖形界面

      • 隨著SoC的量產(chǎn)以及新產(chǎn)品功能提高,SoC 的價格在下降

        作為支持上面論述的典型案例是我們消費者每天都看到產(chǎn)品的重新設(shè)計,從微控制器升級到微處理器。這種遷移伴隨著新的挑戰(zhàn),例如設(shè)計變得越來越復(fù)雜,操作系統(tǒng)的抽象層也更加繁雜。使用應(yīng)用處理器所帶來的復(fù)雜硬件設(shè)計的難題可以被公版參考設(shè)計以及使用現(xiàn)成的計算機模塊/系統(tǒng)模塊或者單板電腦所克服。在操作系統(tǒng)層面,嵌入式Linux系統(tǒng)已經(jīng)在行業(yè)中得到廣泛應(yīng)用。大量的開源工具簡化功能豐富的復(fù)雜嵌入式系統(tǒng)開發(fā)。如果使用微控制器,類似的開發(fā)工作將變得復(fù)雜和耗時。盡管有著諸多的好處,使用類似Linux 操作系統(tǒng)仍舊產(chǎn)生了不少的質(zhì)疑和缺乏信心,熱別是針對實時控制應(yīng)用。

        開發(fā)人員通常的做法是將實時任務(wù)和一般任務(wù)分?jǐn)偟讲煌奶幚砥魃稀R虼耍愃婆c Cortex-A的處理器主要用于多媒體和聯(lián)網(wǎng)功能,而微控制器則仍然被用作處理實時、關(guān)鍵性任務(wù)。本文旨在為開發(fā)人員提供一些建議,當(dāng)他們需要使用應(yīng)用處理器完成實時系統(tǒng)的時候。

        測試實時性能

        現(xiàn)在有許多 benchmark工具可以用于評估軟件系統(tǒng)的實時性能,然而我們想要快速地測試下面提到的方法是否可以真的提高系統(tǒng)性能。為了看到結(jié)果,我們測量由嵌入系統(tǒng)的標(biāo)準(zhǔn)GPIO 產(chǎn)生的方波抖動。用這種方法,我們可以簡單、快速地分析實時性能,并提供初步的優(yōu)化建議。我們開發(fā)了一個以2.5KHz(200μsHigh / 200μs Low) 頻率翻轉(zhuǎn) GPIO的應(yīng)用。用示波器連接 GPIO,測試方波和輸出時序。

      Jitter Measurement

      圖1:抖動測試

        標(biāo)準(zhǔn) Linux 測試結(jié)果如圖2所示。翻轉(zhuǎn) GPIO的應(yīng)用配置為實時任務(wù)(SCHED_RR),內(nèi)核配置了Voluntary Kernel Preemption(CONFIG_PREEMPT_VOLUNTARY)。

      Histogram of the square wave generated using the Standard Linux Kernel Configuration

      圖2:使用標(biāo)準(zhǔn) Linuxe內(nèi)核配置的方波抖動分布圖

        測試結(jié)果表面只有 92% 的波形在 ±10%的誤差以內(nèi)。最差的測量結(jié)果顯示延時超過 15ms,逾 3700% 的誤差。

        Real-Time Linux

        本文中我們采用第一個方式是軟件相關(guān)的。Linux 并不是一個實時操作系統(tǒng),但是許多項目在很大程度上提高了 Linux 的決策能力和實時性。其中一個項目是Real-Time Linux project。Real-Time Linux是一系列的補丁(PREEMPT_RT),為 Linux 內(nèi)核提供新的強占機制,以及其他的功能和工具,使其更加適合于實時任務(wù)。你可以在其官方 Real-Time Linux Wiki (之前在這里)上找到應(yīng)用 PREEMPT_RT 補丁和應(yīng)用開發(fā)的文檔。

        我們在 ColibriiMX6DL 上使用PREEMPT_RT 來驗證實時性能的改進。在 Toradex Linux 鏡像中部署PREEMPT_RT 補丁的說明可以在 ToradexDeveloper Center 上找到。

        下面的圖表(圖3)展示了使用 PREEMPT_RT 補丁的 Linux 的實時強占測試結(jié)果。結(jié)果表明只有0,002%的波形超過±10% 的誤差。最差的結(jié)果(0,106us)也只有 25% 的誤差,相比于標(biāo)準(zhǔn) Linux(圖2)這是一個很大的提高。

      Histogram of the square wave generated using the Preempt-RT kernel

      圖3:使用 Preempt-RT內(nèi)核配置方波抖動分布圖

        使用 PREEMPT_RT 補丁的軟件方案 CodesysSolutions。其依靠 Real-Time Linux 內(nèi)核以及 OSADL,部署軟件 PLC方案,這已經(jīng)在自動化產(chǎn)業(yè)中得到廣泛的使用。你可以在這里找到更多關(guān)于在Toradex 計算機模塊上運行 Codesys 的信息,包括演示 demo。

        Xenomai

        Xenomai 是另外一個實現(xiàn) Linux 實時系統(tǒng)的框架。Xenomai 通過提在 Linux 內(nèi)核提供一個co-kernel 而實現(xiàn)。co-kernel 處理實時任務(wù),并擁有比標(biāo)準(zhǔn) Linux 更高的優(yōu)先級。在這里你可以了解更多信息。為了使用 Xenomai 的實時特性,你必須使用實時 APIs(libcobalt)來連接用戶應(yīng)用和 Cobalt 內(nèi)核,后者確保任務(wù)的實時性能。

      Dual Core Xenomai Configuration

      圖4:Dual Core Xenomai配置

        關(guān)于安裝Xenomai 到你的設(shè)備的相關(guān)文檔可以在 Xenomai 網(wǎng)站找到:www.xenomai.org。除此之外,還有許多嵌入式硬件可以使用,詳見: 參考硬件列表(包括NXP? i.MX SoC 系列)

      我們再次使用方波測試 Xenomai 在 i.MX6 SoC 的性能。使用 Toradex 的 Colibri iMX6DL作為測試設(shè)備。我們采用和上面提到的 Real-Time Linux 同樣的方式來測試。測試所用的部分代碼如下所示,使用 XenomaiAPI。

      void blink(void *arg __attribute__((__unused__)))
      {
        int iomask = 0;
        rt_task_set_periodic(NULL, TM_NOW, TIMESLEEP);
        while(1)
      {
                rt_task_wait_period(NULL);
        if(iomask) SET_G35;
        else CLR_G35;
                iomask = 1 - iomask;
              }
      }
      int main(void)
      {  
      
          rt_task_create(&blink_task, "blinkLed", 0, 99, 0);  
          rt_task_start(&blink_task, &blink, NULL);
          
          getchar();
          rt_task_delete(&blink_task);
      
          return 0;
      }

        下圖(圖5)是 Xenomai 的測試性能。同樣,實時解決方案相比于標(biāo)準(zhǔn) Linux有著巨大的優(yōu)勢。值得注意的是,最差的結(jié)果也在 ±10% 的誤差以內(nèi)。

      Histogram of the square wave generated using the Xenomai

      圖5:使用 Xenomai的方波抖動分布圖

        異構(gòu)多核處理

        異構(gòu)多核處理(HMP)是硬件解決方案。諸如 NXP i.MX7 系列、 NXP i.MX6SoloX 和即將面市的 NXPi.MX8 系列 提供了不同功能的內(nèi)核。例如我們看 i.MX7S,你會發(fā)現(xiàn)一個具有Cortex-A7@800MHz 和 Cortex-M4@200MHz 的雙核處理器。基本的目的是用戶界面和高速互聯(lián)由類似 Linux的操作系統(tǒng)在 Cortex-A 運行,與此同時,控制任務(wù)由類似 FreeRTOS 的實時操作系統(tǒng)在 Cortex-M上執(zhí)行。兩個核都能夠訪問內(nèi)存和外設(shè),在定義每個核上運行的任務(wù)時保持靈活性。參考圖6。

      Histogram of the square wave generated using the Standard Linux Kernel Configuration

      圖6:i.MX7 框圖,來源技術(shù)手冊

        使用 HMP 的優(yōu)勢:

      • 原來在微控制器上的軟件可以被方便地重新使用

      • 簡化固件(M4 核)更新,固件在 Cortex-A OS 的文件系統(tǒng)作文一個普通文件

      • 提高內(nèi)核選擇外設(shè)的靈活性。因為這是軟件定義的,后續(xù)的更改無需硬件設(shè)計修改

        更多關(guān)于基于 HMP 處理器應(yīng)用開發(fā)的信息請參考下面的內(nèi)容:

      • 文章: A Balancing Robot Leveraging the Heterogeneous AsymmetricArchitecture of i.MX 7 with FreeRTOS and Qt

      • 文章:FreeRTOSon the Cortex-M4 of a Colibri iMX7

      • 網(wǎng)絡(luò)研討會議:Introducingthe i.MX7 System on Chip

        Toradex、Antimicro 和 The Qt Company 聯(lián)合開發(fā)了一個機器人來展示這個概念。機器人的名字是 TAQ,采用Toradex計算機模塊 ColibriiMX7 的自平衡機器人。用戶界面在 Linux 中使用 Qt 構(gòu)建,運行在 Cortex-A7 上,平衡和電機控制則由Cortex-M4 完成。雙核之間的通信實現(xiàn)了遠程控制和面部動畫,正如視頻中演示的一樣.

        圖7 是 Colibri iMX7 的測試結(jié)果。方波由運行在 i.MX7M4 上的 FreeRTOS 生成。和預(yù)計的一樣,測試結(jié)果好于上面其他所有的方法。

      Histogram of the square wave generated using the Heterogeneous Multicore Architecture

      圖7:使用異構(gòu)多核架構(gòu)的方波抖動分布圖
      方波由運行在 M4 上的 FreeRTOS 生成。

        總結(jié)

        本文概括介紹了在應(yīng)用處理器上使用 Linux作為操作系統(tǒng)開發(fā)實時系統(tǒng)的解決方案。對于想要使用微處理器并且關(guān)注實時控制和決策的開發(fā)者,這可以作為入門。我們展示了使用異構(gòu)多核處理的 SoC 硬件方案,以及兩個基于軟件的方法:Linux-RT Patch 和Xenomai。演示的結(jié)果并不是為了對比操作系統(tǒng)或者實時技術(shù)。每一種方法都具有優(yōu)勢和劣勢,最終還是取決于應(yīng)用場景。

        文章主要為了說明幾種現(xiàn)成的解決方案可以在應(yīng)用處理器上使用 Linux 實現(xiàn)可靠的實時應(yīng)用。


      下一篇: PLC、DCS、FCS三大控

      上一篇: 索爾維全系列Solef?PV

      推薦產(chǎn)品

      更多
      主站蜘蛛池模板: 91精品国产色综合久久| 国产成人精品综合在线观看| 国产综合在线观看| 日韩人妻无码一区二区三区综合部| 综合久久一区二区三区| 91精品国产综合久久四虎久久无码一级| 国产精品天干天干综合网| 亚洲成综合人影院在院播放| 色悠久久久久综合网香蕉| 激情综合色五月六月婷婷| 婷婷五月综合激情| 久久综合中文字幕| 国产精品亚洲综合一区在线观看| 激情综合色综合久久综合| 色噜噜成人综合网站| 激情综合色五月丁香六月亚洲| 亚洲综合校园春色| 久久一日本道色综合久久m| 小说区图片区综合久久88| AV色综合久久天堂AV色综合在| 激情97综合亚洲色婷婷五| 国产色综合一二三四| 国产精品国产色综合色| 亚洲欧美日韩综合久久久| 五月天婷五月天综合网站| 91精品国产色综合久久不卡蜜| 精品久久人人做人人爽综合| 日本久久综合久久综合| 好了av第四综合无码久久| 久久桃花综合桃花七七网| 色综合久久中文字幕网| 亚洲av无码兔费综合| 色天使亚洲综合一区二区| 亚洲av永久中文无码精品综合| 久久综合偷偷噜噜噜色| 天天综合天天做天天综合| 婷婷亚洲综合一区二区| segui久久综合精品| 亚洲AV综合色区无码一区| 五月婷婷激情综合| 色天使久久综合网天天|