精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

MBDT實現PIL測試步驟

冬至子 ? 來源:autoMBD ? 作者:autoMBD ? 2023-07-13 10:03 ? 次閱讀

1 從零新建一個MBDT工程

  • 按鍵中斷檢測S32K144 EVB上的按鍵SW2,每按下一次,紅色LED燈切換一次亮滅狀態;
  • 周期中斷 :每0.5秒(2 Hz)進入一次周期中斷服務函數,切換綠色LED燈亮滅狀態,綠色LED燈會亮滅交替閃爍。

從零開始創建MBDT工程可以分為七個步驟:

**1. **將S32K144 EVB連接到電腦上,注意檢查OpenSDA端口號和磁盤中S32K144 EVB盤號;

**2. **選擇合適的位置作為MATLAB的工作空間,新建Simulink模型,并命名保存;

**3. **在模型中添加必要模塊,包括MBD_S32K1xx_Config_Information、Digital_Input_ISR、Periodic_Interrupt_Timer和兩個Function-Call Subsystem,如下圖:

圖片

添加模塊到新建工程中 - From autoMBD

**4. **配置模塊的參數,各個模塊的配置可以參照以下截圖(未給出截圖的地方保持默認即可):

圖片

MBD_S32K1xx_Config_Information配置1 - From autoMBD

圖片

MBD_S32K1xx_Config_Information配置2 - From autoMBD

圖片

Periodic_Interrupt_Timer配置 - From autoMBD

圖片

Digital_Input_ISR配置 - From autoMBD

**5. **構建中斷中執行的功能,本示例執行的功能較為簡單,僅控制燈的亮滅。具體的模型如下(兩個模型實際上是一樣的,只不過輸出的引腳不一樣):

圖片

周期中斷的中斷函數模型 - From autoMBD

圖片

按鍵中斷的中斷函數模型 - From autoMBD

**6. **選擇固定步長,配置工程的步長為0.001 s,設置求解器為離散求解器。工程的步長根據實際需要進行配置,但也要考慮模型的運算量。如果運算量大,在設置的步長內不能完成計算,會導致錯誤結果。

圖片

工程求解器配置 - From autoMBD

**7. **至此MBDT的工程已經完成,可以生成代碼了。在“C CODE”標簽中點擊“Build”(快捷鍵ctr + B),Simulink編譯后會將代碼自動下載到S32K144 EVB中,并運行起來。一切正常的話,下載后可以看到綠色LED燈在不斷閃爍,按壓SW2按鍵,可以控制紅色LED燈的亮滅。

從零開始新建一個MBDT工程的基本步驟就是這樣的了。

使用模型來構建自己的函數,最常用到的是Simulink中的 Stateflow ,它可以高效的產生和控制各種信號(Signal)、事件(Event)和狀態(State)。后期會專門針對Stateflow開一期,歡迎關注。

2 使用S32DS下載生成的代碼

可能有讀者會疑惑,為什么需要使用S32DS下載生成的代碼,Simulink不是已經下載好了嗎?原因我總結有以下三點:

  • 最重要的一點是 ,底層驅動并不適合通過模型的方式來實現,最高效的還是使用S32DS來配置底層。一般建議將算法部分和底層驅動分開,這樣的話需要有一個集成的過程,這就避免不了使用S32DS;
  • 使用S32DS進行debug更加高效和便捷,功能也更加強大;
  • 通過S32DS還可以對生成的代碼進行擴展,擴展一些其它庫或者技術棧。

從我目前了解到的,一個完整的基于MBD的開發,還很難擺脫對IDE的依賴,所以這里給出使用S32DS下載生成的代碼的示例。同樣給出一個視頻教程時長約4 min 44 s。

使用S32DS下載生成的代碼,一共有6個步驟:

**1. **打開S32DS,新建一個空白工程,并刪去main.c文件。注意新建工程時不要選擇SDK,因為生成的代碼中已經包含了SDK,其他保持默認即可。

圖片

*新建S32DS工程(不選擇SDK) * - From autoMBD

但如果你在 模型中使用了AMMCLIB的相關模塊 ,可以在新建的時候添加相應的AMMCLIB庫:

圖片

*添加AMMCLIB工具 * - From autoMBD

當然也可以通過添加庫的方式添加AMMCLIB,添加庫的方法是:選中工程,右鍵選擇“Properties”,找到Paths and Symbols中的Library Paths和Libraries,添加S32K14x_AMMCLIB.a文件和路徑即可(其他擴展庫也是這樣的方法添加):

圖片

*添加AMMCLIB工具 * - From autoMBD

需要注意的是路徑和庫文件的格式,以我自己安裝的AMMCLIB1.1.24為例,格式如下:

  • 庫文件為 英文的冒號+文件名 ,不包含路徑

圖片

*添加庫文件 * - From autoMBD

  • 庫路徑為 路徑所在目錄 ,不包含庫文件

圖片

*添加庫路徑 * - From autoMBD

視頻展示的例程沒有使用到AMMCLIB庫,所以沒有上述過程。

**2. **將Simulink生成的代碼復制到S32DS工程中去,生成的代碼在Simulink工作空間一個標題為 “工程名”+“_mbd_rtw” 的文件夾中。生成的代碼源文件有:

  • common文件夾內所有文件
  • inc文件夾內所有文件
  • S32K144文件夾內所有文件
  • src文件夾內所有文件
  • 目錄內所有***.c和.h文件***

將上述所有源文件復制到新建的工程中去:

圖片

*復制生成的代碼到S32DS工程中 * - From autoMBD

**3. **下一步,添加編譯路徑。需要添加的具體路徑如下:

  • ${ProjDirPath}/src
  • ${ProjDirPath}/src/common
  • ${ProjDirPath}/src/inc
  • ${ProjDirPath}/src/S32K144/include
  • ${ProjDirPath}/src/src/clock/S32K1xx
  • ${ProjDirPath}/src/src/power/S32K1xx

值得注意的是, 如添加了庫,那么庫的include文件也需要包含到路徑中 。還是以AMMCLIB1.1.24為例,庫的包含路徑為:

  • C:NXPAMMCLIBS32K14x_AMMCLIB_v1.1.24include

同樣視頻中也沒有這個步驟。添加庫的方法是:選中工程,右鍵選擇“Properties”,找到Paths and Symbols中的“Includes”,依次添加上述路徑即可。如下圖所示:

圖片

*添加必要的編譯路徑 * - From autoMBD

**4. **將startup.c、system_S32K144.c從編譯路徑中移除,因為這些文件和新建的S32DS工程有重復,編譯會報錯。從編譯路徑移除的方法是:選中要移除編譯路徑的文件,右鍵選中Buidl path -> Remove from -> Debug_FLASH。

移除編譯路徑的文件并沒有被刪除,但不會被編譯,同時文件會變成灰色。如下圖所示:

圖片

*移除編譯路徑的文件 * - From autoMBD

5. 至此生成的代碼已經成功導入到S32DS中了,可以點擊編譯查看是否有錯誤。

圖片

*編譯S32DS工程 * - From autoMBD

**6. **點擊Debug蟲,開始下載代碼

圖片

下載S32DS工程* * - From autoMBD

下載成功后,即可開始Debug,下圖方框中的按鈕分別是:運行、暫停、終止、斷開連接、步入、步進、步出。

圖片

*S32DS Debug調試 * - From autoMBD

通過S32DS下載的代碼,功能和Simulink下載的是完全一樣的。

3 基于MBDT實現PIL測試

通過MBDT,實現PIL(Processor In the Loop)是比較簡單的。

PIL的基本原理是,Simulink在下載代碼的同時,會在代碼中包含一段通信協議。該通信協議可以接受Simulink發送的指令,并傳輸代碼運算的結果到Simulink。

在Simulink的每一個步長中,Simulink會將輸入信號發送到MCU,MCU計算好后,再將結果傳回Simulink,周而復始實現PIL測試。一般采用的是串口通信方式,本示例中使用的是UART通訊。

**Tips:**該通信協議被稱為rtiostream,是Simulink開發的,有興趣的可以去了解一下。

這里要提一下,在MCU的應用中,是沒必要做SIL(Software In the Loop)的,因為SIL是在電腦上跑(跑的是exe文件),而實際代碼是在MCU中跑。這樣的SIL測試結果沒什么意義。MCU的應用中,一般只需要執行PIL和HIL。

開展PIL測試需要創建兩個工程:Model工程是被測工程,會生成代碼,并下載到MCU中運行;Top工程上位機工程,用于產生Model工程的輸入信號,并與MCU進行數據交互。

本示例中對 AMMCLIB中的Sin函數進行PIL測試 ,測試其在MCU中的運行效果。開展PIL測試一共分為了四個步驟:

**1. **首先將S32K144 EVB連接到電腦上,并為MATLAB選擇合適的工作空間。前文已經提到過,這里不再贅述。

**2. **創建Model工程。Model工程比較簡單,可按以下步驟進行創建:

  • 添加MBD_S32K1xx_Config_Information模塊,并配置參數;
  • 添加GFLIB_Sin_FLT、輸入和輸出模塊;
  • 配置工程步長為0.001 s。

創建的Model工程如下圖所示:

圖片

*PIL測試的Model工程 * - From autoMBD

**3. **創建Top工程。可按以下步驟創建:

  • 添加Model模塊,并關聯到需要測試的model工程;
  • 添加對照模塊,斜坡輸入(斜率π,初始值-2π)作為輸入信號;
  • 配置工程步長為0.001 s。

值得注意的是,PIL的輸入信號要轉換為單精度數,因為MCU處理的是單精度數據。創建的Top工程如下:

圖片

*PIL測試的Top工程 * - From autoMBD

**4. **至此PIL測試的模型搭建已經完成了。將仿真總時長設為6 s,點擊Run即可開始PIL測試。測試過程中的現象可查看上面的視頻,這里給出一個測試結果的圖:

圖片

*PIL測試的結果 * - From autoMBD

由于斜坡輸入的斜率為π,初始值-2π,總仿真時長為6π,那么測試的輸入信號范圍是-2π到4π。從上圖可以看到,-2π到2π之間的曲線是吻合得較好的,當輸入信號大于2π時,MCU的Sin函數計算結果開始出現失真。

查看AMMCLIB的手冊說明,找到GFLIB_Sin_FLT的說明

圖片

*GFLIB_Sin_FLT的說明 * - From AMMCLIB手冊

可以看到這里要求的輸入范圍是-π到π。一般對于MCU來說,算力非常緊張,所以這種非線性的數學函數會有特殊的要求,如果不滿足就會出現失真,結果不正確。所以我們在使用這類函數的時候一定要注意使用要求,從而保證最佳的性能。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • led燈
    +關注

    關注

    22

    文章

    1592

    瀏覽量

    107851
  • simulink仿真
    +關注

    關注

    0

    文章

    75

    瀏覽量

    8565
  • 按鍵中斷
    +關注

    關注

    0

    文章

    15

    瀏覽量

    6438
  • MCU芯片
    +關注

    關注

    3

    文章

    248

    瀏覽量

    11394
  • S32DS
    +關注

    關注

    0

    文章

    8

    瀏覽量

    805
收藏 人收藏

    評論

    相關推薦

    MBDT實現電機控制設計

    本期也屬于MBDT(Model-Based Design Tools)上手的一部分,主要是進階一點的電機控制算法。
    發表于 07-13 09:39 ?715次閱讀
    <b class='flag-5'>MBDT</b><b class='flag-5'>實現</b>電機控制設計

    如何在集成模型級別上使用S32K114評估板執行PIL

    怎樣才能正確設置集成模型以便能夠取回探查器結果?在集成級別上完全運行 PIL 的正確步驟是什么?我應該注意哪些約束以及應該考慮的總體最佳實踐。 請注意,我使用的是特定架構,我在其中運行 MIL/SIL
    發表于 04-14 08:41

    嘗試運行集成模型時出現PIL編譯錯誤怎么解決?

    我正在使用 S32K144 和 MBDT 工具箱。我已經成功地在單個 Simulink 模型上執行 PIL,但是當擁有多個模型時,我會遇到一些我不清楚如何解決的問題。它是基于配置的還是執行 PIL 時需要考慮任何架構限制?
    發表于 04-20 06:41

    Matlab 2022b無法運行簡單的 PIL S32CT示例是怎么回事?

    我正在為 Matlab 2022b 上的 S32K3** 版本 1.3.0 使用 MBDT 嘗試一個簡單的 PIL S32CT 示例。我正在開發的電路板是 NXP S32K3x4EVB-Q257
    發表于 04-21 07:31

    NXPs32k144 evb上的PIL仿真問題如何解決?

    確信所有的設置選項都是正確的(求解器,我配置硬件實現的設置,目標塊是正確的......),但我不知道為什么我會遇到這個錯誤。 奇怪的是,如果我通過嵌入式編碼器應用程序構建代碼,我在刷新 evb 時不會遇到任何問題。 使用 harnest 和 SIL/PIL
    發表于 05-19 07:50

    為什么無法為“State_Machine”執行處理器在環 (PIL) 仿真?

    使用測試框架啟動模型的 PIL 測試時,出現以下錯誤: 無法為“State_Machine”執行處理器在環 (PIL) 仿真。修復此錯誤,更新配置參數或創建支持的連接配置。請參閱產品幫
    發表于 05-22 07:44

    如何設置PIL模擬的環境以及在哪里包含我的C代碼項目?

    我看到 MBDT 用于生成基于 Simulink 模塊的 C代碼,以減少原型設計過程。就我而言,我想 在 Simulink 中的 PIL(處理器在環)仿真中測試我自己的 C 代碼項目。我想
    發表于 06-08 08:47

    關于MIL、SIL、PIL和HIL之間的聯系和異同分析

    SIL和PIL是等效性測試測試的目的是為了驗證自動生成的代碼和模型具有相同的行為,既然如此,對于SIL和PIL測試用例就沒有功能意義上的
    的頭像 發表于 09-17 11:51 ?1.5w次閱讀
    關于MIL、SIL、<b class='flag-5'>PIL</b>和HIL之間的聯系和異同分析

    PIL硬件支持包開發指南

    在航空和汽車等安全攸關的行業,如果采用基于模型的設計方法論(MBD),需要額外引入背靠背測試的概念,具體來說,使用模型開發的過程中,背靠背測試包含 SIL(Software-in-the-Loop)和 PIL(Processor
    的頭像 發表于 02-28 09:21 ?1643次閱讀

    看直播 | 電機控制:如何使用恩智浦MBDT實現快速設計、開發和部署?

    直播預告 6月8日 ?15:15–15:45 MATLAB EXPO 2023年6月8日,恩智浦的技術專家將在MATLAB EXPO上發表題為 《電機控制:使用恩智浦 MBDT實現快速設計、開發
    的頭像 發表于 06-04 13:45 ?1093次閱讀

    PiL測試實戰(上)| 單元級代碼的PiL測試

    作者:酷兔本兔小編:吃不飽對于嵌入式代碼,為了測試軟件能否在目標芯片上實現預期的功能,通常需要進行PiL測試(Processor-in-the-Loop-Testing)。目前市面上較
    的頭像 發表于 11-22 10:19 ?989次閱讀
    <b class='flag-5'>PiL</b><b class='flag-5'>測試</b>實戰(上)| 單元級代碼的<b class='flag-5'>PiL</b><b class='flag-5'>測試</b>

    PiL測試實戰(下)| PiL階段的閉環測試

    作者:酷兔本兔小編:吃不飽上篇我們介紹了單元級軟件的PiL測試,對于集成級的PiL測試,其流程和單元階段基本一致。然而,對于一些帶有反饋控制邏輯的集成
    的頭像 發表于 12-15 10:31 ?839次閱讀
    <b class='flag-5'>PiL</b><b class='flag-5'>測試</b>實戰(下)| <b class='flag-5'>PiL</b>階段的閉環<b class='flag-5'>測試</b>

    TPT19新特性之在虛擬環境中執行PiL測試

    使用TPT 19,您可以獲得一些PiL測試(處理器在循環測試)的新特性。在C平臺上,您現在可以直接為您的PiL構建目標代碼,并在目標板上或仿真環境中執行它。
    的頭像 發表于 05-05 15:54 ?593次閱讀
    TPT19新特性之在虛擬環境中執行<b class='flag-5'>PiL</b><b class='flag-5'>測試</b>

    MBDT快速上手

    基于模型的設計(Model-Based Design,MBD)的實戰系列從MBDT開始。
    的頭像 發表于 07-13 09:34 ?1224次閱讀
    <b class='flag-5'>MBDT</b>快速上手

    如何實現PIL和OpenCV之間圖像數據的轉換呢?

    PIL圖像數據格式轉換成OpenCV圖像數據格式
    的頭像 發表于 02-25 13:43 ?1161次閱讀