帳號:
密碼:
最新動態
產業快訊
CTIMES / 文章 /
在嵌入式Linux硬體上執行處理器迴圈模擬
 

【作者: Lars Rosqvist等人】   2017年11月17日 星期五

瀏覽人次:【10560】


進行處理器迴圈(processor-in-the-loop,PIL)模擬時,從Simulink模型產生的程式碼可直接在目標硬體上執行,代表著可以利用與主機相同的測試案例在硬體上測試模型。PIL測試是為了要揭露在嵌入式環境上執行發生的問題而設計,比如,你的控制迴圈是否符合嵌入式處理器的可執行時間?


本文將以Raspberry Pi為例,介紹一個以Simulink支援的客製目標硬體為基礎的PIL測試工作流程,並示範如何實現一個客製的工具鏈讓編譯及連結變得更容易。(註)


PIL處理概述

PIL模擬讓人可以自動地在目標硬體下載與執行測試。圖1簡要說明了這些步驟。開始模擬時,先從模型?動程式碼生成。再從工具鏈(toolchain)中的工具鏈資料(toolchaininfo)自動編譯及連結程式碼之後,模擬便在目標硬體下載及啟動執行檔。接下來,還能在MATLAB分析測試結果。



圖1 : PIL處理概述
圖1 : PIL處理概述

開發PIL架構

Simulink內建了建立客製化PIL實現的支援。我們將進行以下幾個步驟來建立一個客製的PIL架構:


1.實現一個連接架構類別


2.註冊該連接架構


Raspberry Pi的PIL執行範例的資料夾結構是這樣的:


實現連接架構

連接架構就是用來指定所有需要在PIL上執行的動作的地方。它收集了建構器(builder)、發射器(launcher)、通訊器(communicator)的實例。


本連接架構類別進行下列幾個動作:


1.設置目標通訊

目標應用架構類別,TargetApplicationFramework,裝配了目標端的通訊驅動。它建立一個具備PIL限定檔案的BUILDINFO物件,資料夾內的main.c檔之後將被合併到PIL元件庫來建立PIL應用。


這個架構類別的第一個動作是要實現一個呼叫超類別的結構,rtw.pil.RtIOStreamApplicationFramework。在這之後,新增一個主要的檔案以及其它通訊中必要的檔案。


在這個Raspberry Pi範例,我們增加了利用TCP/IP進行通訊所需要的檔案。


2.建構器實例化

本建構器是透過呼叫超類別的rtw.connectivity.MakefileBuilder來實例化。


3.發射器實例化

在發射器的類別,Launcher,支援開始及終止與建構器物件關聯的應用程式,必須包含兩種方法:startApplication和stopApplication。


這個發射器實例化了結構中的超類別 rtw.connectivity.Launcher。


在Raspberry Pi的範例,我們已經利用第三方工具把Launcher連到硬體。為了讓範例更簡單一點,我們也下載了startApplication中的應用。


4.設置主通訊

如果通訊協定是TCP/IP或串列通訊,可以把現有的函式庫檔案用在主通訊,如果是其他的協定,可以執行自有的rtiostream。由於rtiostream函式的API設計是獨立於資料傳送目的地的實體層,它可以被客製化來管理其他的通訊。


在範例中,我們採用TCP/IP作為通訊協定,並重複利用MATLAB TCP/IP函式庫libmwrtiostreamtcpip。


5.呼叫超類別結構來註冊元件

接著到了呼叫超類別結構並將建構器、發射器及主通訊物件傳送到rtw.connectivity.Config的時候了。


6.註冊一個特定硬體的計時器

執行PIL模擬的其中一項優點,就是可以在目標取得一個執行檔。若要進行這個動作,必須在結構類別註冊一個特定硬體的計時器。以Raspberry Pi來說,計時器已經被包在rtlib函式庫。我們只需要利用程式碼替換表來替換code_profile_read_timer函式。


註冊連接

為了要使用新的PIL架構,我們已經把它註冊在一個sl_customization.m檔。


這個連接結構是透過呼叫registerTargetInfo來註冊的。一個連接結構需要具備一個獨特的名字,並且關聯到已開發好的連接實現類別,ConnectivityConfig。結構的屬性定義了系統目標檔案,toolchain,及與連接實現類別相容的硬體。


在Raspberry Pi的範例,系統目標檔案必須設定到嵌入式程式碼轉碼器(Embedded Coder),而且工具鏈(toolchain)必須為Raspberry Pi toolchain。


開發一個客製工具鏈

工具鏈收集了在編譯、連結、下載、在特定平台上執行所需要的各項工具。客製的工具鏈簡化了編譯到可執行的工作。透過工具鏈,不需要建立一個makefile的模板;makefile是藉由工具鏈中指定的資料來建立。客製工具鏈在編譯、鏈接、歸檔的整合變得更快又更簡單。


我們可以很容易地在模型結構設定選擇一個客製工具鏈(圖2)。



圖2 : 透過工具鏈選擇的模型結構設定
圖2 : 透過工具鏈選擇的模型結構設定

當程式碼已經產生並編譯到稍早提到的流程,嵌入式程式碼轉換器便可自動地利用工具鏈資料。


工具鏈資料指定了makefile如何被建立,包括除錯用的編譯器參數,像是檔案以及副檔名。


在Raspberry Pi範例所使用的是一個gcc arm-linux cross-compiler來編譯C程式碼。如同之前提到的,我們為了使用到的硬體計時器新增了rtlib 函式庫。當新增了rtlib,可把它寫成lrt。這個工具鏈讓人可以指定用來編譯的工具,並可以依使用案例設定不同的工具鏈參數。舉例來說,可以在”fast runs”或”fast builds”有不同的設定。


總結與下一步

現在有了一個PIL架構及一個支援目標硬體的工具鏈,因此可以:


*在目標硬體直接從Simulink測試演算法。


*為函式取得執行設定檔。


*比較模型層級模擬與利用編譯的物建程式碼和目標驅動進行的模擬(對許多安全標準來說是重要的驗證步驟)的結果。


有了工具鏈,不需要將makefile客製化就可以進行編譯。工具鏈在執行PIL模擬,以及在將模型佈署在嵌入式Linux硬體時都存在著優勢。如果「只要產生程式碼」不在結構設定的程式碼產生標籤,就可以直接為目標硬體建立一個執行檔。


(本文由鈦思科技提供;作者Lars Rosqvist、Roger Aarenstrup、Kristian Lindqvist任職於MathWorks公司)


註:本範例所使用的程式碼可從https://www.mathworks.com/matlabcentral/fileexchange/54172-raspberrypipil 下載。


相關文章
以3D模擬協助自動駕駛開發
無線通訊的未來--為無所不在的連接做好準備
使用深度學習進行地下電纜系統預測性維護
實用型數位轉型的最佳實踐
利用類神經網路進行ADC錯誤的後校正
comments powered by Disqus
相關討論
  相關新聞
» Embedded World 2024:德承全面展示Edge AI運算解決方案
» 帆宣與佳世達合組新創公司 啟動智慧醫療引擎
» 台灣三豐攜手SAP 轉型上雲 鞏固量測儀器市場優勢
» 助工具機業者拓展海外市場 經濟部提供融資20億元
» 海大與法國濱海大學合作 推升智慧永續海洋


刊登廣告 新聞信箱 讀者信箱 著作權聲明 隱私權聲明 本站介紹

Copyright ©1999-2024 遠播資訊股份有限公司版權所有 Powered by O3  v3.20.2048.54.225.1.66
地址:台北數位產業園區(digiBlock Taipei) 103台北市大同區承德路三段287-2號A棟204室
電話 (02)2585-5526 #0 轉接至總機 /  E-Mail: webmaster@ctimes.com.tw