• <dd id="z4l84"><pre id="z4l84"></pre></dd>
  • <dd id="z4l84"><center id="z4l84"></center></dd><li id="z4l84"></li>
    <dd id="z4l84"><pre id="z4l84"></pre></dd>
    <li id="z4l84"></li>
  • <button id="z4l84"><object id="z4l84"><menuitem id="z4l84"></menuitem></object></button>

    <button id="z4l84"><object id="z4l84"><u id="z4l84"></u></object></button>

    ESM7000異構CPU架構實時應用簡介

     2021-5-7     作者:劉乾坤    

      ESM7000是英創基于i.MX7D處理器開發的低功耗高性能工控主板,支持雙網口、6串口、雙CAN總線接口、PCIe、ISA總線等豐富的通訊接口,支持18-bit并行RGB或LVDS顯示接口。主CPU i.MX7D是NXP推出的異構多核處理器,配置了主頻高達1GHz的ARM Cortex-A7雙核和一顆運行速度240MHz、帶硬件浮點運算的ARM Cotex-M4內核。下圖是ESM7000的原理框圖:


    基于ESM7000異構CPU架構的實時應用.png


      ESM7000可預裝正版WEC7或RT Linux操作系統,但對于一些實時性要求極高的應用,無論是WEC還是RT Linux操作系統都無法滿足對中斷事件的及時響應,而且頻繁的中斷響應也會大大的降低操作系統性能。對這類應用場合就可充分利用i.MX7D的異構多核結構,由高性能的Cortex-A7雙核完成人機交互、數據處理、通訊管理等復雜運算,而對于實時的數據采集、高速的中斷事件響應等實時任務交由i.MX7D的Cotex-M4完成。


      基于異構多核處理器的應用軟件開發分為兩個部分:一是基于RT Linux的用戶應用程序User APP,另一個是在Cortex-M4內核上運行的實時控制程序。User APP與M4有兩種數據交互方式:一是在Linux內核中已經實現的針對異構多核處理器 (AMP-Asymmetric Multiprocessing)的多核通訊的協議RPMsg(Remote Processor Messaging),RPMsg提供了User APP與M4之間的雙向數據通道,適合小數據的傳輸。另一種方式是基于共享內存,用于實現批量數據的單向高速傳輸,使用共享內存的同時,也還需要利用RPMsg實現User APP與M4之間的數據同步。下圖是User APP、Linux Kernel、M4程序以及通訊的邏輯框圖:


    基于ESM7000異構CPU架構的實時應用.png


      上圖中的us timer是一個硬件微秒計時器,用于實現User APP與M4之間的時間同步。Cortex-M4程序可以直接基于裸機編程,也可以基于FreeRTOS實時操作系統,Cortex-M4軟件開發的詳細說明可參考《ESM7000 Cortex-M4技術開發參考手冊》。


      傳統的實時控制方案通常是前端使用單片機或CPLD/FPGA實現數據采集、實時控制,后端再利用一個嵌入式系統進行數據存儲、通訊管理、人機交互等操作,硬件和軟件設計都很復雜,成本很高。而基于異構多核處理器的ESM7000,可同時實現實時數據采集與控制、數據分析運算存儲、網絡通訊、人機交互等工作。


      此外傳統方案的前端單片機/FGPA與后端嵌入式系統的數據通訊,如果使用串口或SPI,最多能實現每秒幾兆字節的數據傳輸,如果要獲得更高的數據傳輸速率就需要使用千兆網口、PCIe等高速通訊接口,系統復雜程度和成本都會顯著提高。而我們在ESM7000上實際測試,不用增加任何硬件成本,用戶應用程序與M4之間基于共享內存方式輕松就能實現50MB/s的數據交互傳輸。


      基于ESM7000異構CPU架構的實時應用方案可以以更低的成本、更簡潔可靠的設計實現復雜的實時控制應用,可廣泛應用于電網監控、多通道數據采集、電機控制、工業自動化與控制等多種領域。

    蜜芽188.coo免费永不失连_波多野结衣中文字幕免费视频_精品国产第一福利网站_亚洲AV片不卡无码久久

  • <dd id="z4l84"><pre id="z4l84"></pre></dd>
  • <dd id="z4l84"><center id="z4l84"></center></dd><li id="z4l84"></li>
    <dd id="z4l84"><pre id="z4l84"></pre></dd>
    <li id="z4l84"></li>
  • <button id="z4l84"><object id="z4l84"><menuitem id="z4l84"></menuitem></object></button>

    <button id="z4l84"><object id="z4l84"><u id="z4l84"></u></object></button>