<li id="wkceg"></li>
<rt id="wkceg"><delect id="wkceg"></delect></rt>
<bdo id="wkceg"></bdo>
<strike id="wkceg"><acronym id="wkceg"></acronym></strike>

  • 帳號(hào):
    密碼:
    智動(dòng)化 / 文章 /

    在嵌入式Linux硬體上執(zhí)行處理器迴圈模擬
    [作者 Lars Rosqvist等人]   2017年11月17日 星期五 瀏覽人次: [11341]


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


    本文將以Raspberry Pi為例,介紹一個(gè)以Simulink支援的客製目標(biāo)硬體為基礎(chǔ)的PIL測(cè)試工作流程,並示範(fàn)如何實(shí)現(xiàn)一個(gè)客製的工具鏈讓編譯及連結(jié)變得更容易。(註)


    PIL處理概述

    PIL模擬讓人可以自動(dòng)地在目標(biāo)硬體下載與執(zhí)行測(cè)試。圖1簡(jiǎn)要說(shuō)明了這些步驟。開(kāi)始模擬時(shí),先從模型?動(dòng)程式碼生成。再?gòu)墓ぞ哝湥╰oolchain)中的工具鏈資料(toolchaininfo)自動(dòng)編譯及連結(jié)程式碼之後,模擬便在目標(biāo)硬體下載及啟動(dòng)執(zhí)行檔。接下來(lái),還能在MATLAB分析測(cè)試結(jié)果。



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

    開(kāi)發(fā)PIL架構(gòu)

    Simulink內(nèi)建了建立客製化PIL實(shí)現(xiàn)的支援。我們將進(jìn)行以下幾個(gè)步驟來(lái)建立一個(gè)客製的PIL架構(gòu):


    1.實(shí)現(xiàn)一個(gè)連接架構(gòu)類別


    2.註冊(cè)該連接架構(gòu)


    Raspberry Pi的PIL執(zhí)行範(fàn)例的資料夾結(jié)構(gòu)是這樣的:


    實(shí)現(xiàn)連接架構(gòu)

    連接架構(gòu)就是用來(lái)指定所有需要在PIL上執(zhí)行的動(dòng)作的地方。它收集了建構(gòu)器(builder)、發(fā)射器(launcher)、通訊器(communicator)的實(shí)例。


    本連接架構(gòu)類別進(jìn)行下列幾個(gè)動(dòng)作:


    1.設(shè)置目標(biāo)通訊

    目標(biāo)應(yīng)用架構(gòu)類別,TargetApplicationFramework,裝配了目標(biāo)端的通訊驅(qū)動(dòng)。它建立一個(gè)具備PIL限定檔案的BUILDINFO物件,資料夾內(nèi)的main.c檔之後將被合併到PIL元件庫(kù)來(lái)建立PIL應(yīng)用。


    這個(gè)架構(gòu)類別的第一個(gè)動(dòng)作是要實(shí)現(xiàn)一個(gè)呼叫超類別的結(jié)構(gòu),rtw.pil.RtIOStreamApplicationFramework。在這之後,新增一個(gè)主要的檔案以及其它通訊中必要的檔案。


    在這個(gè)Raspberry Pi範(fàn)例,我們?cè)黾恿死肨CP/IP進(jìn)行通訊所需要的檔案。


    2.建構(gòu)器實(shí)例化

    本建構(gòu)器是透過(guò)呼叫超類別的rtw.connectivity.MakefileBuilder來(lái)實(shí)例化。


    3.發(fā)射器實(shí)例化

    在發(fā)射器的類別,Launcher,支援開(kāi)始及終止與建構(gòu)器物件關(guān)聯(lián)的應(yīng)用程式,必須包含兩種方法:startApplication和stopApplication。


    這個(gè)發(fā)射器實(shí)例化了結(jié)構(gòu)中的超類別 rtw.connectivity.Launcher。


    在Raspberry Pi的範(fàn)例,我們已經(jīng)利用第三方工具把Launcher連到硬體。為了讓範(fàn)例更簡(jiǎn)單一點(diǎn),我們也下載了startApplication中的應(yīng)用。


    4.設(shè)置主通訊

    如果通訊協(xié)定是TCP/IP或串列通訊,可以把現(xiàn)有的函式庫(kù)檔案用在主通訊,如果是其他的協(xié)定,可以執(zhí)行自有的rtiostream。由於rtiostream函式的API設(shè)計(jì)是獨(dú)立於資料傳送目的地的實(shí)體層,它可以被客製化來(lái)管理其他的通訊。


    在範(fàn)例中,我們採(cǎi)用TCP/IP作為通訊協(xié)定,並重複利用MATLAB TCP/IP函式庫(kù)libmwrtiostreamtcpip。


    5.呼叫超類別結(jié)構(gòu)來(lái)註冊(cè)元件

    接著到了呼叫超類別結(jié)構(gòu)並將建構(gòu)器、發(fā)射器及主通訊物件傳送到rtw.connectivity.Config的時(shí)候了。


    6.註冊(cè)一個(gè)特定硬體的計(jì)時(shí)器

    執(zhí)行PIL模擬的其中一項(xiàng)優(yōu)點(diǎn),就是可以在目標(biāo)取得一個(gè)執(zhí)行檔。若要進(jìn)行這個(gè)動(dòng)作,必須在結(jié)構(gòu)類別註冊(cè)一個(gè)特定硬體的計(jì)時(shí)器。以Raspberry Pi來(lái)說(shuō),計(jì)時(shí)器已經(jīng)被包在rtlib函式庫(kù)。我們只需要利用程式碼替換表來(lái)替換code_profile_read_timer函式。


    註冊(cè)連接

    為了要使用新的PIL架構(gòu),我們已經(jīng)把它註冊(cè)在一個(gè)sl_customization.m檔。


    這個(gè)連接結(jié)構(gòu)是透過(guò)呼叫registerTargetInfo來(lái)註冊(cè)的。一個(gè)連接結(jié)構(gòu)需要具備一個(gè)獨(dú)特的名字,並且關(guān)聯(lián)到已開(kāi)發(fā)好的連接實(shí)現(xiàn)類別,ConnectivityConfig。結(jié)構(gòu)的屬性定義了系統(tǒng)目標(biāo)檔案,toolchain,及與連接實(shí)現(xiàn)類別相容的硬體。


    在Raspberry Pi的範(fàn)例,系統(tǒng)目標(biāo)檔案必須設(shè)定到嵌入式程式碼轉(zhuǎn)碼器(Embedded Coder),而且工具鏈(toolchain)必須為Raspberry Pi toolchain。


    開(kāi)發(fā)一個(gè)客製工具鏈

    工具鏈?zhǔn)占嗽诰幾g、連結(jié)、下載、在特定平臺(tái)上執(zhí)行所需要的各項(xiàng)工具。客製的工具鏈簡(jiǎn)化了編譯到可執(zhí)行的工作。透過(guò)工具鏈,不需要建立一個(gè)makefile的模板;makefile是藉由工具鏈中指定的資料來(lái)建立。客製工具鏈在編譯、鏈接、歸檔的整合變得更快又更簡(jiǎn)單。


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



    圖2 : 透過(guò)工具鏈選擇的模型結(jié)構(gòu)設(shè)定
    圖2 : 透過(guò)工具鏈選擇的模型結(jié)構(gòu)設(shè)定

    當(dāng)程式碼已經(jīng)產(chǎn)生並編譯到稍早提到的流程,嵌入式程式碼轉(zhuǎn)換器便可自動(dòng)地利用工具鏈資料。


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


    在Raspberry Pi範(fàn)例所使用的是一個(gè)gcc arm-linux cross-compiler來(lái)編譯C程式碼。如同之前提到的,我們?yōu)榱耸褂玫降挠搀w計(jì)時(shí)器新增了rtlib 函式庫(kù)。當(dāng)新增了rtlib,可把它寫(xiě)成lrt。這個(gè)工具鏈讓人可以指定用來(lái)編譯的工具,並可以依使用案例設(shè)定不同的工具鏈參數(shù)。舉例來(lái)說(shuō),可以在”fast runs”或”fast builds”有不同的設(shè)定。


    總結(jié)與下一步

    現(xiàn)在有了一個(gè)PIL架構(gòu)及一個(gè)支援目標(biāo)硬體的工具鏈,因此可以:


    *在目標(biāo)硬體直接從Simulink測(cè)試演算法。


    *為函式取得執(zhí)行設(shè)定檔。


    *比較模型層級(jí)模擬與利用編譯的物建程式碼和目標(biāo)驅(qū)動(dòng)進(jìn)行的模擬(對(duì)許多安全標(biāo)準(zhǔn)來(lái)說(shuō)是重要的驗(yàn)證步驟)的結(jié)果。


    有了工具鏈,不需要將makefile客製化就可以進(jìn)行編譯。工具鏈在執(zhí)行PIL模擬,以及在將模型佈署在嵌入式Linux硬體時(shí)都存在著優(yōu)勢(shì)。如果「只要產(chǎn)生程式碼」不在結(jié)構(gòu)設(shè)定的程式碼產(chǎn)生標(biāo)籤,就可以直接為目標(biāo)硬體建立一個(gè)執(zhí)行檔。


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


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


    相關(guān)文章
    ? 以3D模擬協(xié)助自動(dòng)駕駛開(kāi)發(fā)
    ? 無(wú)線通訊的未來(lái)--為無(wú)所不在的連接做好準(zhǔn)備
    ? 使用深度學(xué)習(xí)進(jìn)行地下電纜系統(tǒng)預(yù)測(cè)性維護(hù)
    ? 實(shí)用型數(shù)位轉(zhuǎn)型的最佳實(shí)踐
    ? 利用類神經(jīng)網(wǎng)路進(jìn)行ADC錯(cuò)誤的後校正
    comments powered by Disqus
      相關(guān)新聞
    » 臺(tái)達(dá)攜手珍古德協(xié)會(huì)與海科館 三方合作推動(dòng)珊瑚復(fù)育教育
    » 嘉義縣以空品監(jiān)測(cè)即時(shí)掌控工廠火災(zāi)應(yīng)變措施
    » 裕民航運(yùn)聚焦於淨(jìng)零轉(zhuǎn)型與全球布局 以營(yíng)運(yùn)韌性拓展綠色未來(lái)
    » 臺(tái)達(dá)於COMPUTEX 2025聚焦人工智慧與節(jié)能永續(xù)
    » 臺(tái)達(dá)電子公佈一百一十四年四月份營(yíng)收 單月合併營(yíng)收新臺(tái)幣407.82億元
      相關(guān)產(chǎn)品
    » 泓格iSN-811C-MTCP紅外線感測(cè)模組 從溫度掌握工業(yè)製造的安全與先機(jī)
    » 凌華科技透過(guò) NVIDIA JetPack 6.1 增強(qiáng)邊緣 AI 解決方案
    » 安勤推出搭載NVIDIA Jetson平臺(tái)邊緣AI方案新系列
    » 臺(tái)達(dá)全新溫度控制器 DTDM系列實(shí)現(xiàn)導(dǎo)體加工精準(zhǔn)控溫
    » 西門(mén)子推出下一代AI增強(qiáng)型電子系統(tǒng)設(shè)計(jì)軟體 提升使用者體驗(yàn)

    ?
    刊登廣告 新聞信箱 讀者信箱 著作權(quán)聲明 隱私權(quán)聲明 本站介紹

    Copyright ©1999-2025 遠(yuǎn)播資訊股份有限公司版權(quán)所有 Powered by O3
    地址:臺(tái)北數(shù)位產(chǎn)業(yè)園區(qū)(digiBlock Taipei) 103臺(tái)北市大同區(qū)承德路三段287-2號(hào)A棟204室
    電話 (02)2585-5526 #0 轉(zhuǎn)接至總機(jī) / E-Mail: webmaster@hope.com.tw
    主站蜘蛛池模板: 内丘县| 淮南市| 晋中市| 从江县| 乐都县| 河北区| 汝阳县| 泰和县| 祥云县| 闻喜县| 遵化市| 碌曲县| 华宁县| 安平县| 蒲江县| 大厂| 历史| 青海省| 黎川县| 安西县| 康保县| 玛沁县| 京山县| 阳曲县| 琼结县| 凯里市| 光山县| 慈溪市| 伊宁市| 南皮县| 黎川县| 介休市| 灵川县| 庄河市| 松溪县| 黄冈市| 西充县| 比如县| 饶平县| 平南县| 收藏|