化開發(fā)實(shí)戰(zhàn))
1. 從“公告”到“工具箱”XMC Simulink Library v2.0的工程價(jià)值再審視看到“公告”兩個(gè)字很多工程師的第一反應(yīng)可能是“哦又發(fā)新版本了”然后順手關(guān)掉。但這次我想從一個(gè)不同的角度來聊聊這個(gè)XMC Simulink Library v2.0。它遠(yuǎn)不止是一份更新日志而更像是一個(gè)為嵌入式控制開發(fā)者量身定制的“生產(chǎn)力工具箱”的全面升級(jí)。如果你正在或即將使用英飛凌的XMC系列微控制器進(jìn)行電機(jī)控制、數(shù)字電源、工業(yè)自動(dòng)化等領(lǐng)域的開發(fā)那么這個(gè)庫的發(fā)布意味著你通往“模型化設(shè)計(jì)”和“自動(dòng)代碼生成”這條路路況被大幅改善了。簡(jiǎn)單來說這個(gè)庫是連接MATLAB/Simulink仿真世界與XMC硬件現(xiàn)實(shí)世界的橋梁。Simulink本身是一個(gè)強(qiáng)大的圖形化建模和仿真環(huán)境你可以用拖拽模塊的方式搭建算法模型并觀察仿真波形。但仿真是仿真的最終代碼要跑在真實(shí)的芯片上。XMC Simulink Library的作用就是提供一系列針對(duì)XMC微控制器硬件外設(shè)如PWM定時(shí)器CCU8/CCU4、ADC、POSIF位置接口、CAN等進(jìn)行過深度適配和優(yōu)化的Simulink模塊。使用這些模塊搭建的模型可以直接通過MATLAB Coder/Embedded Coder工具鏈生成高質(zhì)量、可直接編譯、甚至能直接下載到XMC芯片中運(yùn)行的C代碼。這解決了兩個(gè)核心痛點(diǎn)一是避免了手寫底層驅(qū)動(dòng)代碼的繁瑣和潛在錯(cuò)誤二是實(shí)現(xiàn)了從算法設(shè)計(jì)、仿真驗(yàn)證到產(chǎn)品實(shí)現(xiàn)的無縫銜接也就是常說的MBDModel-Based Design。為什么v2.0版本值得專門拿出來說因?yàn)閺臒嵩~“simulink模型 c代碼生成”、“simulink仿真逆變器pwm generator 怎么設(shè)置”這些高頻搜索可以看出工程師們正卡在從“會(huì)仿真”到“能生成可用代碼”的關(guān)鍵環(huán)節(jié)。新版本的庫往往意味著對(duì)更多芯片型號(hào)的支持、更豐富的模塊功能、更穩(wěn)定的代碼生成、以及修復(fù)了舊版本中那些讓人頭疼的“坑”。對(duì)于項(xiàng)目而言這可能直接決定了原型開發(fā)的周期是兩周還是兩個(gè)月。所以這不是一個(gè)簡(jiǎn)單的版本號(hào)迭代而是一個(gè)需要你花時(shí)間評(píng)估、測(cè)試并可能改變你工作流的工具更新。2. 核心模塊解析你的算法如何“住進(jìn)”XMC芯片要理解這個(gè)庫的價(jià)值必須深入到它的核心模塊。這些模塊不是通用的Simulink模塊而是被打上了深深的“XMC”烙印。我們可以把它們分為幾個(gè)大類每一類都對(duì)應(yīng)著硬件開發(fā)中的一個(gè)關(guān)鍵環(huán)節(jié)。2.1 脈寬調(diào)制PWM與定時(shí)器模塊電力電子的心臟幾乎所有與功率轉(zhuǎn)換相關(guān)的應(yīng)用如電機(jī)驅(qū)動(dòng)FOC控制、逆變器、DC-DC變換器其核心都是PWM信號(hào)的生成。熱詞中“simulink仿真逆變器pwm generator 怎么設(shè)置”的困惑正是源于此。在XMC Simulink Library中PWM生成通常通過CCU4或CCU8定時(shí)器模塊實(shí)現(xiàn)。以常見的三相逆變器為例你需要生成六路互補(bǔ)帶死區(qū)的PWM信號(hào)來控制三個(gè)半橋。在v2.0庫中你可能會(huì)找到一個(gè)名為XMC_CCU8_SL的模塊組。使用它你不再需要去翻閱數(shù)百頁的數(shù)據(jù)手冊(cè)計(jì)算寄存器值來配置死區(qū)時(shí)間、對(duì)齊方式邊沿對(duì)齊或中心對(duì)齊、時(shí)鐘預(yù)分頻等。你只需要在模塊的圖形化參數(shù)對(duì)話框中像填表單一樣設(shè)置載波頻率比如20kHz。死區(qū)時(shí)間根據(jù)你的IGBT/MOSFET開關(guān)特性設(shè)置例如500納秒。計(jì)數(shù)模式選擇“中心對(duì)齊”以獲得更好的諧波特性。互補(bǔ)通道對(duì)指定哪兩個(gè)輸出通道是一對(duì)互補(bǔ)信號(hào)。模塊內(nèi)部已經(jīng)封裝了所有底層寄存器的配置邏輯。更重要的是當(dāng)你用Simulink的“比較”模塊產(chǎn)生占空比信號(hào)通常范圍0-1輸入給這個(gè)PWM模塊時(shí)它自動(dòng)完成了占空比到定時(shí)器比較寄存器值的映射。代碼生成時(shí)它會(huì)生成初始化CCU8外設(shè)的CCU8_Init()函數(shù)和實(shí)時(shí)更新占空比的CCU8_SetCompareShadowRegister()函數(shù)調(diào)用。這解決了手動(dòng)編寫PWM驅(qū)動(dòng)時(shí)極易出現(xiàn)的相位錯(cuò)誤、死區(qū)保護(hù)失效等致命問題。注意在設(shè)置PWM時(shí)務(wù)必確認(rèn)硬件板上的實(shí)際引腳分配與Simulink模塊中配置的輸出引腳一致。庫模塊通常與XMC系列芯片的引腳復(fù)用功能ALT映射表是綁定的如果隨意更改生成的代碼可能無法控制預(yù)期的物理引腳。2.2 模數(shù)轉(zhuǎn)換器ADC模塊感知世界的窗口無論是電機(jī)相電流采樣、直流母線電壓檢測(cè)還是溫度傳感器讀取都離不開ADC。Simulink庫中的ADC模塊將復(fù)雜的ADC序列掃描、觸發(fā)源選擇、結(jié)果對(duì)齊等操作進(jìn)行了抽象。例如在永磁同步電機(jī)PMSM的FOC控制中我們需要在同一時(shí)刻采樣三相電流中的兩相第三相可通過計(jì)算得出。這要求ADC必須由PWM的中心點(diǎn)或特定點(diǎn)觸發(fā)進(jìn)行同步采樣以保證控制算法的準(zhǔn)確性。在庫中你可能會(huì)使用一個(gè)XMC_ADC_Group模塊。你需要配置觸發(fā)源選擇由哪個(gè)CCU8的特定事件如周期匹配來觸發(fā)ADC采樣。采樣通道指定具體是哪幾個(gè)ADC通道如AN0, AN1。采樣結(jié)果處理選擇是12位右對(duì)齊還是左對(duì)齊結(jié)果是否自動(dòng)累加平均。模型仿真時(shí)這個(gè)模塊從工作區(qū)或某個(gè)信號(hào)源讀取模擬值但在為XMC生成代碼時(shí)它會(huì)被替換為對(duì)ADC_MEASUREMENT_GetResult()等底層API的調(diào)用并自動(dòng)配置好整個(gè)ADC序列和觸發(fā)邏輯。這避免了工程師陷入ADC中斷服務(wù)程序ISR的編寫和優(yōu)化能將精力集中在核心控制算法上。2.3 位置與速度接口POSIF與編碼器模塊運(yùn)動(dòng)控制的耳目對(duì)于電機(jī)控制獲取精確的轉(zhuǎn)子位置和速度是關(guān)鍵。XMC芯片內(nèi)置了POSIF模塊專門用于處理增量式編碼器ABZ信號(hào)、霍爾傳感器等信號(hào)。手動(dòng)解碼這些信號(hào)特別是處理四倍頻、索引脈沖Z信號(hào)和方向判斷需要精細(xì)的定時(shí)和中斷處理。XMC Simulink Library中的編碼器接口模塊如XMC_POSIF_QD用于正交編碼器直接完成了所有這些臟活累活。你只需要指定POSIF模塊號(hào)、輸入引腳它就會(huì)在模型內(nèi)部輸出一個(gè)連續(xù)的角度值通常范圍0-2π和速度值。在生成的代碼中它會(huì)利用POSIF的硬件計(jì)數(shù)功能自動(dòng)累加脈沖并通過定時(shí)器或直接計(jì)算得到速度和位置精度和實(shí)時(shí)性遠(yuǎn)高于軟件模擬。2.4 通信接口模塊CAN, UART等系統(tǒng)的神經(jīng)在復(fù)雜的工業(yè)系統(tǒng)中控制器需要與上位機(jī)、其他節(jié)點(diǎn)或驅(qū)動(dòng)器通信。庫中的CAN模塊如XMC_CAN_Transmit/Receive允許你在Simulink模型中定義CAN報(bào)文ID、數(shù)據(jù)長(zhǎng)度、數(shù)據(jù)并連接到算法邏輯。代碼生成后這些模塊會(huì)轉(zhuǎn)化為對(duì)CAN_NODE_MO_UpdateData()等DAPICED英飛凌底層驅(qū)動(dòng)庫函數(shù)的調(diào)用實(shí)現(xiàn)了應(yīng)用層邏輯與通信協(xié)議棧的隔離開發(fā)。3. 從Simulink模型到可執(zhí)行代碼完整工作流實(shí)戰(zhàn)理解了核心模塊我們來看如何將它們串聯(lián)起來完成一個(gè)從仿真到硬件的完整項(xiàng)目。這里以一個(gè)簡(jiǎn)單的永磁同步電機(jī)PMSM開環(huán)V/F控制為例演示v2.0庫可能帶來的流程優(yōu)化。3.1 模型搭建與算法仿真首先在Simulink中搭建你的控制算法模型。算法部分使用Simulink標(biāo)準(zhǔn)庫的數(shù)學(xué)運(yùn)算、查表、PID控制器等模塊搭建V/F曲線生成器、Park/Clarke變換如果需要、SVPWM調(diào)制算法等。此時(shí)你完全在連續(xù)時(shí)間域或離散時(shí)間域進(jìn)行純算法仿真可以方便地調(diào)整參數(shù)、觀察波形。硬件接口部分從XMC Simulink Library v2.0中拖入對(duì)應(yīng)的硬件模塊。用ADC模塊讀取模擬的電流/電壓信號(hào)仿真時(shí)可用常數(shù)或信號(hào)發(fā)生器代替。用Encoder模塊獲取模擬的位置信號(hào)仿真時(shí)可用斜坡信號(hào)代替。將SVPWM算法輸出的三相占空比信號(hào)連接到CCU8_PWM模塊的輸入。用CAN_Send模塊將電機(jī)狀態(tài)如速度、電流打包發(fā)送出去。在這個(gè)階段你可以利用Simulink強(qiáng)大的示波器和數(shù)據(jù)記錄功能徹底驗(yàn)證你的控制邏輯是否正確動(dòng)態(tài)響應(yīng)是否滿足要求。這也是回答“simulink仿真逆變器教程”這類問題的核心——先確保算法在理想仿真環(huán)境下是work的。3.2 模型配置與代碼生成設(shè)置算法仿真通過后需要為代碼生成做準(zhǔn)備。這是關(guān)鍵一步很多“simulink代碼生成”相關(guān)的問題都出在這里。求解器Solver配置在Model Configuration Parameters中將求解器類型改為固定步長(zhǎng)Fixed-step并選擇一個(gè)離散求解器如discrete。步長(zhǎng)Sample time必須設(shè)置它決定了你整個(gè)控制循環(huán)的周期如100us。這個(gè)步長(zhǎng)需要與你的PWM頻率、ADC采樣率等硬件時(shí)序匹配。系統(tǒng)目標(biāo)文件System Target File選擇ert.tlcEmbedded Coder或grt.tlcGeneric Real-Time。對(duì)于XMC通常使用ert因?yàn)樗苌筛咝?、更易于集成的代碼。你需要確保已安裝Embedded Coder。硬件實(shí)現(xiàn)Hardware Implementation在Hardware Board中選擇“None”或自定義但關(guān)鍵是在Device vendor/type中正確選擇ARM Cortex-M因?yàn)閄MC內(nèi)核是Cortex-M。這會(huì)影響數(shù)據(jù)類型如int32_T和對(duì)齊方式。代碼生成選項(xiàng)勾選“Generate code only”除非你需要立即編譯。在Interface中禁用浮點(diǎn)數(shù)學(xué)庫如果芯片有FPU則啟用硬件支持選擇緊湊的存儲(chǔ)類型。非常重要的一點(diǎn)檢查XMC_Simulink_Library的安裝路徑是否已添加到Simulink的“Code Generation Custom Code Include directories”中以確保生成代碼時(shí)能找到對(duì)應(yīng)的頭文件和源文件。3.3 生成代碼與集成編譯點(diǎn)擊“Build Model”Simulink會(huì)開始生成代碼。這個(gè)過程會(huì)自動(dòng)進(jìn)行模塊化代碼生成每個(gè)XMC硬件模塊都會(huì)生成對(duì)應(yīng)的初始化函數(shù)_Init和執(zhí)行函數(shù)_Step。主程序框架生成一個(gè)model.c和model.h其中包含model_initialize()和model_step()函數(shù)。model_step()函數(shù)包含了你在一個(gè)采樣周期內(nèi)所有算法和硬件接口調(diào)用的順序邏輯。數(shù)據(jù)接口生成清晰的輸入/輸出結(jié)構(gòu)體方便與外部代碼交互。生成的代碼是一個(gè)完整的、可移植的ANSI C項(xiàng)目。接下來你需要將其集成到你的IDE如DAVE? Keil MDK或IAR Embedded Workbench中將生成的代碼文件夾通常名為model_ert_rtw復(fù)制到你的IDE工程目錄。在IDE工程中添加這些.c和.h文件。添加必要的XMC外設(shè)庫文件如DAPICED和啟動(dòng)文件。編寫一個(gè)簡(jiǎn)單的main.c在其中調(diào)用model_initialize()然后在一個(gè)由硬件定時(shí)器觸發(fā)的無限循環(huán)中調(diào)用model_step()。這個(gè)定時(shí)器的周期必須與Simulink模型中設(shè)置的固定步長(zhǎng)嚴(yán)格一致。配置編譯器的包含路徑Include Paths指向生成代碼的目錄和XMC庫目錄。編譯、下載、調(diào)試。實(shí)操心得第一次集成時(shí)最容易出錯(cuò)的是堆棧Stack大小設(shè)置。Simulink生成的代碼可能會(huì)使用較大的局部數(shù)組尤其是矩陣運(yùn)算時(shí)如果默認(rèn)的堆棧設(shè)置太小會(huì)導(dǎo)致運(yùn)行時(shí)硬件錯(cuò)誤HardFault。建議在IDE中將堆棧大小適當(dāng)調(diào)大例如從1K調(diào)到2K并通過調(diào)試器觀察堆棧使用情況。4. 深度避坑指南那些官方手冊(cè)可能沒提的事使用模型設(shè)計(jì)和自動(dòng)代碼生成工具鏈效率提升巨大但“坑”也往往更隱蔽。結(jié)合常見的熱詞搜索和實(shí)際項(xiàng)目經(jīng)驗(yàn)我總結(jié)了幾類典型問題及其排查思路。4.1 代碼生成失敗或編譯錯(cuò)誤“nmake”不是內(nèi)部命令熱詞中“simulink編譯時(shí)nmake 不是內(nèi)部或外部命令”是一個(gè)經(jīng)典環(huán)境配置問題。這通常發(fā)生在Windows系統(tǒng)上當(dāng)你點(diǎn)擊“Build”時(shí)Simulink試圖調(diào)用Microsoft Visual C的編譯器鏈但系統(tǒng)找不到nmake.exe。根因與解決方案 這與你選擇的“工具鏈Toolchain”有關(guān)。在Model Configuration Parameters Code Generation Build process Toolchain settings中Simulink可能默認(rèn)選擇了“Visual C”。對(duì)于嵌入式ARM開發(fā)這通常不正確。方案一推薦將Toolchain改為“Automatically locate an installed toolchain”或“GNU Tools for ARM Embedded Processors”。前提是你已經(jīng)安裝了ARM GCC工具鏈如gcc-arm-none-eabi并將其路徑添加到了系統(tǒng)環(huán)境變量PATH中。方案二如果你堅(jiān)持使用特定的IDE如Keil可能需要安裝對(duì)應(yīng)的Simulink硬件支持包Hardware Support Package并選擇對(duì)應(yīng)的工具鏈如“Keil ARM Compiler”。方案三如果只是需要生成代碼而不需要立即編譯務(wù)必勾選“Generate code only”這樣會(huì)跳過調(diào)用編譯器的步驟。4.2 模型仿真正常生成代碼后運(yùn)行異常這是最令人頭疼的一類問題?,F(xiàn)象可能包括電機(jī)不轉(zhuǎn)、PWM輸出異常、ADC采樣值全零或全滿、程序跑飛等。系統(tǒng)性排查鏈路第一步檢查硬件初始化順序。Simulink生成的model_initialize()函數(shù)會(huì)調(diào)用所有模塊的初始化子函數(shù)。你需要確認(rèn)這個(gè)順序是否符合硬件依賴關(guān)系。例如通常需要先初始化系統(tǒng)時(shí)鐘SystemCoreClock再初始化外設(shè)如GPIO、CCU8、ADC。有時(shí)庫的初始化順序是固定的但如果你的模型中有自定義的初始化邏輯可能需要手動(dòng)調(diào)整。第二步驗(yàn)證定時(shí)器中斷與model_step()的同步。確保你的硬件定時(shí)器中斷服務(wù)程序ISR正確調(diào)用了model_step()函數(shù)并且中斷周期與模型固定步長(zhǎng)絕對(duì)一致。哪怕有微小的偏差如100us vs 101us長(zhǎng)期累積也會(huì)導(dǎo)致控制時(shí)序混亂。使用調(diào)試器在model_step()入口打一個(gè)斷點(diǎn)觀察是否被周期性調(diào)用。第三步檢查外設(shè)時(shí)鐘是否使能。生成的代碼可能依賴于底層庫如DAPICED來使能外設(shè)時(shí)鐘。但有時(shí)在芯片的時(shí)鐘配置單元SCU中某些外設(shè)模塊的時(shí)鐘門控默認(rèn)是關(guān)閉的。你需要檢查你的系統(tǒng)初始化代碼可能在main.c或system_XMC.c中是否使能了所有用到的外設(shè)時(shí)鐘如SCU_CLK-CCUCLKCR寄存器。第四步使用調(diào)試器監(jiān)控關(guān)鍵變量。在IDE中在線調(diào)試觀察model_step()函數(shù)內(nèi)的關(guān)鍵變量如計(jì)算出的PWM占空比、ADC采樣值。與Simulink仿真時(shí)的數(shù)據(jù)對(duì)比。如果ADC值讀回來全是0或4095滿量程檢查ADC的參考電壓配置、輸入引腳配置以及觸發(fā)信號(hào)是否真的到達(dá)了ADC模塊。第五步審查生成的代碼。仔細(xì)閱讀生成的model.c中與你問題模塊相關(guān)的代碼段。例如查看PWM更新部分的代碼看它是在更新影子寄存器還是直接寄存器更新時(shí)機(jī)是否正確。有時(shí)庫的版本差異會(huì)導(dǎo)致生成代碼的邏輯變化。4.3 模型與GUI聯(lián)合調(diào)試的困境熱詞“simulink模型與gui聯(lián)合生成展示輸入與輸出 不脫離matlab環(huán)境”反映了一個(gè)高級(jí)需求如何在PC上實(shí)時(shí)調(diào)整模型參數(shù)并觀察硬件運(yùn)行狀態(tài)。這可以通過Simulink的外部模式External Mode實(shí)現(xiàn)。原理與設(shè)置 外部模式允許Simulink作為上位機(jī)通過JTAG/SWD或串口、CAN等物理鏈路與運(yùn)行在目標(biāo)硬件XMC上的生成代碼進(jìn)行通信。你可以實(shí)時(shí)修改模型中的調(diào)參模塊如Gain的值并上傳到硬件同時(shí)硬件可以將內(nèi)部變量如電流、速度實(shí)時(shí)發(fā)送回Simulink在示波器中顯示。關(guān)鍵配置點(diǎn)在Model Configuration Parameters中啟用External Mode。選擇正確的通信接口Transport Layer對(duì)于XMC和J-Link調(diào)試器通常選擇“TCP/IP”或“串口”。在生成的代碼中會(huì)包含一個(gè)用于通信的后臺(tái)任務(wù)。你需要確保這個(gè)任務(wù)的執(zhí)行頻率足夠高不影響主控制循環(huán)的實(shí)時(shí)性。硬件上需要預(yù)留出通信接口如調(diào)試接口復(fù)用為串口。注意事項(xiàng)外部模式會(huì)占用一定的CPU資源和通信帶寬。在簡(jiǎn)單應(yīng)用或調(diào)試初期非常有用但在最終產(chǎn)品中應(yīng)移除相關(guān)代碼以優(yōu)化性能。此外通信不穩(wěn)定可能導(dǎo)致Simulink卡死或數(shù)據(jù)丟失建議在關(guān)鍵測(cè)試階段使用而非長(zhǎng)期運(yùn)行。5. 性能優(yōu)化與高級(jí)技巧讓生成的代碼更專業(yè)自動(dòng)生成的代碼為了通用性和安全性有時(shí)會(huì)比較“臃腫”。對(duì)于資源緊張的XMC微控制器進(jìn)行適當(dāng)?shù)膬?yōu)化是必要的。5.1 優(yōu)化代碼效率與內(nèi)存占用啟用編譯器優(yōu)化在IDE的編譯器選項(xiàng)中開啟優(yōu)化等級(jí)如-O2。Simulink代碼生成時(shí)也可以選擇“Optimization”等級(jí)但要注意高優(yōu)化等級(jí)可能會(huì)給調(diào)試帶來困難變量被優(yōu)化掉。精簡(jiǎn)數(shù)據(jù)類型在Simulink模型中盡量使用單精度浮點(diǎn)single甚至定點(diǎn)數(shù)fixdt來代替雙精度浮點(diǎn)double。XMC的Cortex-M4F內(nèi)核支持單精度浮點(diǎn)硬件運(yùn)算速度遠(yuǎn)快于雙精度軟件模擬。在模型配置中可以將默認(rèn)的浮點(diǎn)數(shù)據(jù)類型設(shè)置為single。審查生成的函數(shù)關(guān)注那些被頻繁調(diào)用的函數(shù)特別是數(shù)學(xué)運(yùn)算如三角函數(shù)、開方??紤]是否可以用查表法Look-up Table替代實(shí)時(shí)計(jì)算或者利用XMC的數(shù)學(xué)協(xié)處理器如果芯片支持。靜態(tài)內(nèi)存分配確保模型配置中未錯(cuò)誤地啟用動(dòng)態(tài)內(nèi)存分配malloc/free嵌入式系統(tǒng)應(yīng)盡量避免動(dòng)態(tài)內(nèi)存。5.2 集成自定義代碼與中斷服務(wù)程序自動(dòng)生成代碼并非要取代所有手寫代碼。你需要將手寫的底層驅(qū)動(dòng)、狀態(tài)機(jī)、安全邏輯等與生成的代碼融合。使用Simulink的“C Caller”或“MATLAB Function”模塊你可以在模型中插入“C Caller”模塊直接調(diào)用你自己編寫的、經(jīng)過優(yōu)化的C函數(shù)。這非常適合封裝一些復(fù)雜的、但生成代碼效率不高的算法。在生成代碼的框架中插入鉤子HooksSimulink允許你在生成的model.c文件中的特定位置如初始化開始/結(jié)束、步進(jìn)函數(shù)開始/結(jié)束插入自定義代碼。這可以在不修改生成代碼的前提下添加你自己的初始化或后處理邏輯。中斷服務(wù)程序ISR的處理對(duì)于高實(shí)時(shí)性要求的中斷如過流保護(hù)、編碼器索引脈沖最好還是用手寫ISR。你可以在手寫的ISR中設(shè)置標(biāo)志位然后在model_step()函數(shù)中查詢這些標(biāo)志位并做出響應(yīng)。確保中斷與主循環(huán)之間的數(shù)據(jù)共享使用 volatile 關(guān)鍵字或臨界區(qū)保護(hù)。5.3 版本管理與團(tuán)隊(duì)協(xié)作當(dāng)模型成為設(shè)計(jì)的核心資產(chǎn)時(shí)版本管理變得至關(guān)重要。不同于純代碼可以用Git進(jìn)行diffSimulink的.slx文件是二進(jìn)制格式。使用Simulink項(xiàng)目管理器盡量將模型、庫、數(shù)據(jù)文件、配置腳本等組織在一個(gè)Simulink Project中。這有助于管理路徑依賴和團(tuán)隊(duì)共享。配合Git的最佳實(shí)踐啟用模型的“文本格式保存”選項(xiàng)Save as .slx in Format 9.3 or later這樣.slx文件內(nèi)部實(shí)際上是壓縮的XMLGit可以一定程度上進(jìn)行版本比較。對(duì)于重要的模型版本在Git提交前使用Simulink的“Export to Previous Version”或“Archive”功能生成一個(gè)快照。將模型的固定配置如求解器設(shè)置、代碼生成選項(xiàng)通過腳本.m文件來設(shè)置和保存并將腳本納入版本管理。這樣能確保團(tuán)隊(duì)成員的模型配置一致。生成的代碼ert_rtw文件夾通常不建議納入版本庫因?yàn)樗桥缮募?。?yīng)該納入的是能重新生成它的模型和腳本。XMC Simulink Library v2.0的發(fā)布標(biāo)志著英飛凌在推動(dòng)其微控制器開發(fā)生態(tài)向模型化、自動(dòng)化方向又邁進(jìn)了堅(jiān)實(shí)的一步。對(duì)于工程師而言擁抱這類工具并非放棄對(duì)底層的理解而是將精力從重復(fù)性的、易錯(cuò)的底層驅(qū)動(dòng)編寫中解放出來更聚焦于核心算法創(chuàng)新、系統(tǒng)架構(gòu)和性能優(yōu)化。開始試用v2.0時(shí)建議從一個(gè)你最熟悉的簡(jiǎn)單例程比如點(diǎn)亮一個(gè)LED并用PWM調(diào)光開始走通全流程再逐步應(yīng)用到復(fù)雜的電機(jī)或電源項(xiàng)目中。這個(gè)過程里踩的每一個(gè)坑都會(huì)讓你對(duì)“模型到芯片”的映射關(guān)系有更深刻的認(rèn)識(shí)最終真正駕馭這把利器。