dSPACE MCAL 模組整合說明
概念 · 內建模組 · SystemDesk 整合流程
MCAL(微控制器抽象層)是 AUTOSAR Classic 中最貼近硬體的一層。dSPACE SIL / V-ECU 的核心動作,就是把綁死硬體的 MCAL/OS 替換成可在模擬平台執行的相容實作。本頁說明其原理、dSPACE 內建模組,以及在 SystemDesk 中的完整整合流程。
本文內容整理自 dSPACE 原廠文件:SystemDesk Manual(機制:模組設定、名稱比對/自訂轉換腳本、參數定義 ViVa/FMI)、VEOS Manual(SAB/DAP、模擬平台)與 SIL Starter Kit Demo(具體操作序列與示範數值)。文中以 機制 標示通用做法、範例 標示隨 BSW/MCAL 而異的示範數值——範例數值不可直接照抄。
目錄
01. MCAL 是什麼與分層定位
MCAL(Microcontroller Abstraction Layer,微控制器抽象層)是 AUTOSAR Classic Platform 軟體堆疊中最貼近硬體的一層。它直接操作微控制器的暫存器與周邊(Port、ADC、CAN、SPI、Timer 等),向上層基礎軟體(BSW)提供標準化、與晶片無關的驅動介面——因此它是「軟體」與「矽晶片」之間的翻譯層,也是整個堆疊中最不可攜的一層。
下表標示建立 dSPACE V-ECU 時,各分層的處置方式——保留表示沿用量產程式碼,替換/虛擬化表示由 dSPACE 產生的實作取代:
02. dSPACE 為何替換 MCAL / OS
ASW + 大部分 BSW
原封不動保留——這才是 SIL 真正要驗證的量產程式碼(與硬體無關)。
MCAL + OS
替換成 dSPACE 專屬、AUTOSAR 相容的實作,由 SystemDesk 依第三方參數定義自動產生,模擬出與真實硬體相同的介面行為。
03. 參數定義來源:ViVa / FMI2 / FMI3
在 SystemDesk 的 New Module Configuration → Definition sources 中,可從 <InstallationDir>\Bsw\ModuleDefs\ 選擇 dSPACE 自帶的三個參數定義檔——選擇即決定 V-ECU 的產出格式與可執行平台:
dSPACE 原生,產出 .vecu,功能最完整。
於 VEOS / SCALEXIO 執行。
完整支援 CAN / LIN / Ethernet 與診斷。
產出 FMI 2.0 標準 FMU,供第三方 FMI 模擬器使用。
CAN 靠 Sfc 對映訊號值。
不支援 LIN / Ethernet。
產出 FMI 3.0 FMU,新增 fmi-ls-bus 原生支援 CAN / FlexRay。
仍不支援 LIN / Ethernet。
交換 V-ECU 的首選 FMU 版本。
| 情境 | 建議 |
|---|---|
| 全程使用 dSPACE 工具鏈 | 選 ViVa——功能最完整,含 LIN/Ethernet 與完整診斷。 |
| 交給用其他 FMI 模擬器的夥伴 | 選 FMI3(優先)或 FMI2;FMI3 匯流排支援較好。 |
| 需要 LIN 或 Ethernet | 只能選 ViVa(FMU 兩版皆不支援)。 |
04. dSPACE 內建模組總覽
選定參數定義來源後,Definitions 頁會列出 dSPACE 自帶模組,分三大類。平台標記:共用 VEOS。
4.1 標準 AUTOSAR MCAL / BSW 模組
| 模組 | 功能說明 | 平台 |
|---|---|---|
| 微控制器 / 記憶體 | ||
| Mcu | 時脈、重置、電源模式、RAM 初始化。 | 共用 |
| Gpt | 通用計時器(週期中斷、時間量測)。 | 共用 |
| Wdg | 看門狗驅動(以相容行為實作)。 | 共用 |
| Fls / Eep | Flash / EEPROM 驅動(供 NVRAM 管理)。 | 共用 |
| I/O 週邊 | ||
| Port / Dio | 腳位方向與多工設定;數位輸入輸出驅動。 | 共用 |
| Adc / Pwm / Icu | 類比讀取;PWM 輸出;輸入捕捉(邊緣/週期/占空比)。 | 共用 |
| Spi | SPI Handler/Driver:SPI 匯流排通訊。 | 共用 |
| 通訊 | ||
| Can | CAN / CAN FD 驅動(FMU 上產碼特化)。 | 共用 |
| Lin | LIN 匯流排通訊驅動。 | VEOS |
| Eth | Ethernet 驅動:車載乙太網路通訊。 | VEOS |
| Fr | FlexRay 驅動(FMU 透過 fmi-ls-bus)。 | 共用 |
4.2 dSPACE 專屬模擬模組(虛擬世界專屬)
| 模組 | 全名 | 功能說明 |
|---|---|---|
| Sab | Simulation Abstraction | 模擬器抽象:提供與模擬器介面,定義 V-ECU 啟動/關機行為。 |
| Dap | Data Access Points | 資料存取點:設定虛擬 IO 埠(VPU ports),把內部 IO 對映到模擬平台。 |
| dsCan / dsLin / dsEth | dSPACE Bus Drivers | 把 Can/Lin/Eth 通訊接到模擬平台的 BUS Ports(VEOS 原生通道)。 |
| Sfc | Signal-to-Frame Converter | (FMU)把 CAN 通訊對映成訊號值,讓無原生匯流排介面的 FMI 環境交換 CAN 資料。 |
| fmi-ls-bus | FMI Layered Standard | (FMI 3.0)匯流排通訊標準化分層,讓 CAN 與 FlexRay 以標準方式接到 FMI 3.0 模擬器。 |
| XCP service | — | (FMU 選用)內建 XCP 服務供 ControlDesk 等量測校正工具存取;獨立執行緒運行。 |
4.3 dSPACE 硬體模擬工具模組(Utility)
| 模組 | 功能說明 |
|---|---|
| Ocu | Output Compare Unit 模擬:依計時器比較值產生輸出事件。 |
| SpiDev | Serial Peripheral Device 模擬:模擬掛在 SPI 上的外接裝置。 |
| Apu · Edge · Shu | dSPACE 專屬硬體模擬工具模組:供使用 ECU 硬體特性的 BSW 使用,讓量產碼在模擬平台上取得等效硬體行為。 |
05. V-ECU 三種等級(Level 1 / 2 / 3)
dSPACE 依整合範圍把 V-ECU 分三級。等級越高,納入的量產程式碼與 dSPACE 模組越完整,能測試的行為也越接近真實 ECU。MCAL 的完整整合屬於 Level 3。
| 等級 | 測試目標 | dSPACE 提供的主要模組 |
|---|---|---|
| Level 1 SWC 測試 | 單一/少數 SWC 的功能 | RTE、OS 及 dSPACE 專屬模組(Sab、Dap 等)。 |
| Level 2 通訊/診斷 | ECU 網路的匯流排通訊與診斷 | 加上通訊堆疊(Com、PDU Router、CanIf、LinIf)、MCAL 的 CAN/LIN 驅動、NVRAM manager、DET。 |
| Level 3 量產軟體 | 開發後期整 ECU 完整行為(前移 HIL) | 再加上完整 MCAL(I/O、記憶體、微控制器驅動)與 dSPACE 硬體模擬工具模組。 |
06. dSPACE 獨有模組詳解(用途 · 配置 · 使用場景)
dSPACE_Sim/* 命名空間,是「量產 ECU 軟體」與「dSPACE 模擬平台」之間的黏合層。它們可像一般 AUTOSAR 模組一樣設定;其中 Sab / Dap 不產生程式碼(屬 V-ECU 實作的一部分),多數硬體模擬工具模組則可用 Update <Module> Configuration 指令自動建立並參照對應的 DAP 訊號。| 類別 | 模組 | 職責一句話 |
|---|---|---|
| 模擬生命週期 | Sab | 設定模擬器、驅動 V-ECU 啟動/關機與上電時序 |
| I/O 邊界抽象 | Dap | 把 V-ECU 內部 I/O 對映成對外的 VPU ports |
| 通訊介接 | dsCan / dsLin / dsEth | 把匯流排通訊接到 VEOS 原生 BUS Ports |
| 通訊轉換 | Sfc | 匯流排 ↔ 訊號,供 SIC/FMU/不支援匯流排交換 |
| 硬體模擬工具 | Apu / Edge / Shu / Ocu / SpiDev | 模擬角度 / 邊緣 / 取樣保持 / 輸出比較 / SPI 裝置 |
| 記憶體持久化 | Rfm | EEPROM / Flash / NVRAM 以資源檔載入/儲存 |
| 快速原型(虛擬 Bypass) | RptAccess / RptSi | 選擇 runnable bypass、對接 RP 硬體介面 |
| FMU 匯出專屬 | FmiAd / Xcp / fmi-ls-bus | FMU 變數命名、XCP 服務、匯流排分層標準 |
6.1 Sab / Dap — 生命週期與 I/O 邊界
SabSimulation Abstraction
提供「模擬器 ↔ V-ECU」抽象介面,以軟體驅動 V-ECU 的啟動與關機生命週期(真實 ECU 由 KL30/KL15 硬體事件觸發)。
可設定項:
SabStartupFunction:啟動進入點(常為EcuM_Init)SabPreStartupFunctions/SabPostShutdownFunctionsSab_PowerOn(KL30)/Sab_Ignition(KL15)延遲啟動
DapData Access Points
定義 V-ECU 對模擬系統的 I/O 介面,把 MCAL 內部 I/O(如 DIO 通道)對映成模擬系統中可連接的訊號。
- 產生 VPU ports 作為 VPU 間通訊接點
- 等同於 SIC / BSC 的 model ports,可與環境模型/restbus 對接
- 用到 DIO 必須有 DAP;以
Update Dap Configuration依 Dio 設定自動產生 - VEOS 中以 Autoconnect(名稱比對)自動連接同名埠
SAB 生命週期(模擬器如何驅動 V-ECU):
設定用於 SIL 測試的模擬平台,並在模擬中啟動 ECU State Manager。模擬每顆 V-ECU 皆必需。真實 ECU 由硬體事件(KL30 上電、KL15 點火)觸發開機,模擬環境沒有這些事件,Sab 提供軟體驅動的生命週期抽象。
SabStateManagement:SabStartupFunction / SabShutdownFunction(啟動/關機函式名,啟動通常為 EcuM_Init(),亦支援自訂);SabAutostart(預設 True 隨模擬立即啟動;設 False 以準備延遲啟動)。另有 SabPreStartupFunctions / SabPostShutdownFunctions,以及 A2L 校正變數 Sab_PowerOn(KL30)/ Sab_Ignition(KL15)控制延遲上電。Sab API(含 Sab.h,建置時產生):顯示訊息、量測模擬時間、取得版本資訊。所有 V-ECU 的必備啟動控制;模擬「先讓環境模型跑、延遲上電 V-ECU」的上電時序測試(延遲期間校正服務仍可先改參數值)。
把 V-ECU 對外通訊與底層通訊機制解耦:描述「資料存取點」,讓 V-ECU 內部訊號連接到 V-ECU 外部訊號。在 VEOS 中以 VPU ports 實作,與環境 VPU 交換資料(步階間傳遞),等同於 SIC / BSC 的 model ports。
DapContext 三種 context kind:IoPoints(與 IoHwAb 訊號同步,限 1 個)、TestPoints(與 RTE interventions 同步,供測試操控 RTE 通訊,限 1 個)、RawDataAccessPoints(對應其他需要 DAP 的 BSW 模組,以 Short name 指定)。階層:DapGroup → DapBlock → DapSignal(同組一次讀寫、以 DapEntryFunctionName/DapExitFunctionName 包夾;同一 DapBlock 訊號需同一存取法 ReadByReference/WriteByReference)。每個 DapSignal 對映一個 VPU port。以 Update Dap Configuration 自動為 DIO/ADC/PWM/ICU 建立;複雜裝置驅動須手動設定。A2L 提供刺激變數:Model_Input = TA_Input × TA_Factor + TA_Offset(TA_Factor=0 停用 inport、=1 且 Offset=0 用原訊號)。把 DIO/ADC 等 I/O 接到環境模型;open-loop 開路刺激未連接的 inport;以 TestPoints 在測試中操控 RTE 通訊。用到 DIO 驅動時必須有 Dap。
6.2 通訊介接與轉換:dsCan / dsLin / dsEth、Sfc
把 V-ECU 的 Can / Lin / Eth 匯流排通訊接到 dSPACE 模擬平台的原生 BUS Ports(VEOS 原生通道),保有真實的匯流排時序行為。
隨對應匯流排 MCAL(Can/Lin/Eth)一併納入;在 VEOS System Builder 中把控制器連到對應的 communication cluster。
全 dSPACE 工具鏈、需與 restbus(BSC)整合並保留匯流排時序時的首選(相對於 Sfc 的訊號式交換)。
連接「有建模匯流排通訊的 V-ECU」與「使用訊號式通訊的環境模型或其他 V-ECU(如 SIC、FMU)」或不支援的匯流排;也用於把有建模匯流排通訊的 V-ECU 匯出為 V-ECU FMU。可傳輸匯流排訊號,但無法模擬匯流排時序。
SfcBswModeModule:連 PDU router 選 SFC_PDUR_BSW_MODE、連底層 MCAL(如 CAN 驅動)選 SFC_GENERIC_BSW_MODE;SfcTargetPduR:SFC_DSPACE_PDUR / SFC_NO_PDUR;SfcTimeBase(接收取樣時間、起始 offset);SfcPdu/SfcSignal(連 PDU router 時自動配置)。以 Select Sfc PDUs 挑選 PDU(FMU 建議減少變數數)。UpdateIndication bit 以計數器方式傳遞,讓接收端偵測訊號變化並觸發匯流排事件。CAN 建模的 V-ECU 要與 FMU/SIC 環境模型交換;匯出成 FMU 給第三方 FMI 模擬器;或連到 VEOS 不支援的匯流排。
6.3 硬體模擬工具:Apu / Edge / Shu / Ocu / SpiDev
模擬「量測旋轉軸角度」的硬體(真實 ECU 以感應式霍爾感測器偵測角位置);在模擬中由轉速訊號計算角位置。
ApuConfigSet 下:ApuPhysicalChannel(ApuDapSamplingPeriod 取樣週期、ApuSimulationRate 每週期積分步數、ApuDapInputSignalRef 讀轉速 DAP、ApuDapOutputSignalRef 寫角度 DAP);ApuVirtualChannel(ApuScalingFactor 實體/虛擬通道比、drift DAP);ApuScheduleTable(ApuEventTriggerAngle 觸發角度);ApuAction(ApuCallback 或 ApuIcuChannel)。Update Apu Configuration 自動建 DAP。引擎曲軸/凸輪軸角度為基礎的噴油/點火正時——在特定角度觸發 ISR(透過 ICU 通道或複雜裝置驅動回呼)。
模擬偵測數位訊號邊緣的硬體(如 clamp 15/點火鎖切換的電壓)。
EdgeChannel:EdgeDapSignalRef 讀 Boolean 訊號、EdgeDapSamplingPeriod;EdgeAction:EdgeRisingCallbackFcnName(0→1)與 EdgeFallingCallbackFcnName(1→0),簽章 void fn(void);或 EdgeIcuChannel 連 ICU。Update Edge Configuration 自動建 DAP。偵測點火開/關等開關訊號邊緣以觸發回呼;與 ICU 通道搭配做邊緣偵測。
在特定時間點讀取實體輸入並保持,供稍後(例如由 OCU 事件觸發後)由 ADC 模組讀取——模擬 ADC 於特定時點轉換實體輸入的事件。
ShuChannel:ShuHwRegisterRef(參照提供特定時點實體輸入的 DAP 訊號)、ShuDataExtractFcnName / ShuDataCaptureFcnName(函式名自動配置、可產碼)。與 Ocu 搭配:OCU 事件觸發取樣、保持後轉為 ADC 訊號(例如在精確曲軸角同步取樣馬達相電流)。
比較門檻值與計數器,相符時自動觸發動作。真實 ECU 比較的是硬體時脈;dSPACE 模擬改用全域模擬時間取代硬體時脈。
dSPACE 的 OCU 驅動提供設定門檻值的 API;可指定時脈頻率、設定回呼通知;相符時可切換輸出腳位的 DAP 訊號。不支援 DMA 事件,改以回呼函式替代;可連 Shu 儲存取樣值。
在精確時間點產生輸出事件(切換腳位)或觸發取樣保持(Shu)→ ADC 的量測鏈。
模擬掛在 SPI 匯流排上的外接裝置(EEPROM、watchdog、ASIC)的軟體行為,供 Spi handler/driver 呼叫。
須自行提供裝置的軟體實作與 API 函式;把裝置程式碼檔加入 V-ECU 實作於 SpiDev 模組設定的資料夾;SpiDevGeneral.SpiDevModuleName 指定 Spi 呼叫用的模組名。SpiDev25x 提供 EEPROM SPI 裝置的範例實作。
ECU 透過 SPI 讀寫外接 EEPROM/watchdog,需在 SIL 中模擬該裝置回應。
6.4 記憶體持久化:Rfm
以資源檔持久化 EEPROM / Flash / NVRAM:模擬開始時載入、停止時儲存,讓記憶體行為在多回合間延續。
RfmLoadConfig / RfmSaveConfig:RfmResourceFileName(資源檔名)、RfmMemoryModuleRef(選 NvM / Eep / Fls)。建議載入與儲存指定同一個資源檔,以取得真實的記憶體行為。載入若指定不存在的檔,記憶體以該模組的 erase value 初始化;儲存若指定不存在的檔則會建立之。
跨模擬回合保留學習值、DTC、里程或校正資料(關機再開機記憶體不歸零)。
6.5 快速原型(虛擬 Bypass):RptAccess / RptSi
RptAccess:選擇要 bypass 的 ASW runnable 並產生 bypass service 程式碼。RptSi:設定 V-ECU 對快速原型(RP)硬體的介面。合稱「虛擬 bypassing」——不改量產碼即以外部演算法替換特定 runnable。
BypassEnabled(全域啟用/停用)、BypassAll(對所有 runnable 產生 bypass),以 Configure RptAccess Module 設定。RptSi:RptSiInternalBypassTcpServicePort(bypass 硬體存取的 TCP 埠);RptSiServicePoint(每個 bypass runnable 自動產生 PRE/POST 中斷);RptSiFunctionPrototype(加入 A2L 供 bypass 函式存取)。搭配 RTI Bypass Blockset 實作 bypass 函式。在量產 V-ECU 上以原型演算法替換特定控制 runnable,進行新控制策略的驗證(虛擬/硬體快速原型)。
6.6 FMU 匯出專屬:FmiAd / Xcp(+ Can / Fr / fmi-ls-bus)
當目標為 V-ECU FMU(供 OEM–供應商協作、夥伴使用第三方 FMI 模擬器)時,SystemDesk 額外提供下列 FMI 相容模組(僅在 FMU 匯出情境使用):
| 模組 | 用途 / 配置 |
|---|---|
| FmiAd | FMI Adapter:設定 FMU 功能並產生 V-ECU FMU 的 model description;命名為 DAP 產生的 FMU 變數。分 FMI 2.0 與 3.0 兩種。 |
| Xcp | XCP Service:在 V-ECU FMU 中實作 XCP 服務,供 ControlDesk 等量測校正工具存取;以獨立執行緒運行(FMU 選用)。 |
| Can | FMU 的 CAN 匯流排驅動:FMI 2.0 透過 Sfc 對映訊號值;FMI 3.0 透過 fmi-ls-bus 原生支援。 |
| Fr | FMU 的 FlexRay 控制器(透過 fmi-ls-bus)。 |
| fmi-ls-bus | FMI 3.0 的網路通訊分層標準,讓 CAN / FlexRay 以標準方式接到 FMI 3.0 模擬器。 |
07. 整合流程總覽與素材準備
在 SystemDesk 中把第三方量產程式碼與 MCAL 模組設定,整合成可在 dSPACE 模擬平台執行的 Level 3 Code-Based V-ECU,是一條七段管線:
先決條件與素材 範例
開始前須備妥三類素材(通常由 ECU 供應商 / 第三方 MCAL 工具提供)。下表以 SIL Starter Kit Demo 的資料夾結構為例:
| 素材(資料夾) | 內容 |
|---|---|
| SwcImplementation | 各 SWC 的 ASW 原始碼(應用邏輯) |
| BswComponentFiles | 除 MCAL 外的完整 BSW 堆疊(多以已編譯 object 檔交付) |
| BswConfigFiles | MCAL 模組的設定檔(Os.epc、Can.epc、Dio.epc) |
| BswDefinitionFiles | MCAL 模組的第三方參數定義檔(Os.bmd、Can.bmd、Dio.bmd) |
| BswConversionScripts | 自訂轉換腳本(把 Can 設定轉成 dSPACE 定義的 IronPython 腳本) |
| IncludeFiles | MCAL/ASW 與 BSW 互動所需的 include 標頭檔 |
08. 整合步驟詳解
8.1 建立骨架與載入 ASW / BSW
建立空白 V-ECU
V-ECU → New → 選 Empty classic V-ECU。
加入 ASW
右鍵 V-ECU → New - Package from folder → 選 SwcImplementation。
加入 BSW 與標頭
重複匯入 BswComponentFiles 與 IncludeFiles。
8.2 匯入並指派 MCAL 模組定義
MCAL 模組設定來自第三方工具,SystemDesk 不認得其參數定義。因此在能產碼前,必須先:① 匯入模組設定、② 指派參數定義。
① 匯入模組設定(.epc)
右鍵 V-ECU → Import Module Configuration,於 BswConfigFiles 選 Dio.epc、Os.epc(Can 見 8.3)→ Start Import。
② 指派參數定義(.bmd)
右鍵模組設定 → Assign Module definition → Browse 至 BswDefinitionFiles 選對應 .bmd。
8.3 模組轉換:名稱比對 vs 自訂腳本 機制
轉換的目的,是把第三方 MCAL 定義「對映」到 dSPACE 標準參數定義(範例用 dSPACE_EcuCParamDef_ViVa_3.4.arxml),SystemDesk 才能產出可在 VEOS 執行的 MCAL 碼;轉換時會自動加入 BAMF(Build Action Manifest)。
| 機制 | 範例適用 | 說明 |
|---|---|---|
| 名稱比對 name matching | Os、Dio | 名稱相符的 container/parameter 被搬到新模組;不符者保留在非作用中模組。不需轉換檔。轉換精靈 Conversion Options 選「Perform a name matching conversion without using a conversion file」。 |
| 自訂轉換腳本 custom script | Can | 差異過大時用 IronPython 腳本客製對映。可「Use an existing custom conversion file」參照套件附的 CanConversionScript.py,或「Create a new custom conversion file」由 SystemDesk 產生範本再修改。 |
8.4 加入 SAB / DAP 範例
右鍵 V-ECU → New – Module Configuration。
Definition sources 選 …ViVa_3.4.arxml → Next。
選 /dSPACE_Sim/Dap 與 /dSPACE_Sim/Sab,勾 Use default BAMF → Finish。
8.5 關鍵手動參數 範例
產碼前必須手動調整以下參數,否則會導致連結錯誤或啟動失敗。下表數值為範例第三方 MCAL 的特定值,實際專案需依你的 BSW 調整。
| 模組 | 參數 / 動作 | 值 | 原因 |
|---|---|---|---|
| Dap | Update Dap Configuration | 依 Dio 設定自動產生對應的虛擬 IO 埠。 | |
| Sab | SabStartupFunction | EcuM_Init | 指定啟動進入點(ECU State Manager 初始化)。 |
| Can | CanGeneral.CanIfArVersion | AR4_1_1 | CanIf_RxIndication 簽章在 AR4.0/4.1 間變化;設對才能與 BSW 呼叫簽章一致,否則連結出錯。 |
8.6 產生 MCAL 程式碼 範例
逐一在 V-ECU Manager 右鍵各模組設定執行產碼,把設定轉成 C 程式碼/標頭:
| 模組 | 產碼指令 | 產物 |
|---|---|---|
| Os | Generate Os Header | OS 標頭 |
| Dio | Generate Dio Code | DIO 驅動程式碼 |
| Dap / Sab | Generate Dap / Sab Header | 資料存取點 / 模擬抽象標頭 |
| Can | Generate Can Code | CAN 驅動程式碼 |
09. 建置與編譯參數詳解
建置時 SystemDesk 產生一支與 VEOS 介接的腳本,把 V-ECU package 內的程式與 object 檔編譯連結成應用。此腳本有兩個必須修改的全域變數。總體目的:把「原本為真實 MCU 交叉編譯」的量產碼,改導向 Windows x64 主機的模擬環境編譯。機制 範例數值
target = 'HostPC64/GCC' preprocessorDefines = [ 'ATOMICS_USE_GENERIC_IMPL=1', 'OS_VENDOR_ID=0', 'TS_ARCH_FAMILY=TS_WINDOWS', 'TS_ARCH_DERIVATE', 'ATOMICS_USER_MULTICORE_CASE=0', ]
| 參數 | 為何需要 |
|---|---|
| target = 'HostPC64/GCC' | 選定 VEOS 建置目標:HostPC64 = 針對 64 位元 PC 主機編譯(非 MCU);GCC = VEOS 隨附的 MinGW GCC 工具鏈。 |
| ATOMICS_USE_GENERIC_IMPL=1 | BSW/RTE 使用原子操作;主機無晶片專屬原子指令,設為 1 改用通用可攜的軟體實作。 |
| OS_VENDOR_ID=0 | 真實 OS 已被 dSPACE 虛擬 OS 取代,設為 0(中性)讓檢查此巨集的 BSW 標頭得以解析。 |
| TS_ARCH_FAMILY=TS_WINDOWS | 指示供應商標頭編譯 Windows 主機變體(資料型別、對齊、呼叫慣例),而非 MCU 變體。 |
| TS_ARCH_DERIVATE | 以「已定義的空 token」提供,滿足供應商標頭對此巨集存在的預期,而不指定具體 MCU 衍生型。 |
| ATOMICS_USER_MULTICORE_CASE=0 | 設為 0(單核心),因模擬 V-ECU 在單一執行情境運行,停用無意義的跨核同步碼。 |
.vecu
V-ECU 實作容器,含(未編譯的)原始碼與程式庫。
.osa
VEOS 離線模擬應用,含由容器編譯出的可執行檔,可直接在 VEOS 模擬。
10. 疑難排解
Q1. 模組設定「無法開啟」?
尚未指派參數定義。先完成 8.2 的 Assign Module definition。
Q2. Os / Dio 名稱比對轉換失敗?
多半是找不到目標定義或路徑錯。確認選到 %SystemDesk%/Bsw/ModuleDefs/dSPACE_EcuCParamDef_ViVa_3.4.arxml。
Q3. Can 模組轉換失敗?
Can 差異過大,不能用名稱比對。改用自訂轉換腳本(8.3)。
Q4. 建置出現 CanIf 相關連結錯誤?
優先檢查 Can → CanGeneral.CanIfArVersion = AR4_1_1(見 8.5)。
Q5. FMU 在即時系統上 task overrun?
FMU 只用 co-simulation 介面、OS task 循序執行。改用 ViVa(SCALEXIO 原生)或放寬步長 / 精簡 task 負載。
Q6. 轉換腳本要用哪個 Python?
IronPython,由 SystemDesk 內建的 ECU configuration framework 執行;不使用外部 CPython。
原始文件出處(dSPACE RLS2024-B)
| 文件 | 提供的內容 |
|---|---|
| SystemDesk Manual | 模組設定框架、名稱比對/自訂轉換腳本、參數定義(ViVa/FMI)、內建模組架構 |
| VEOS Manual | SAB / DAP 生命週期與資料存取、模擬平台、.osa |
| SIL Starter Kit Demo | 具體操作序列與示範數值(EcuM_Init、AR4_1_1、preprocessorDefines) |
「機制/做法」來自手冊,對所有專案通用;「範例數值」為特定第三方 MCAL 的值,會隨你整合的實際 BSW/MCAL 而異,不可直接照抄。實際選單、路徑與參數請以安裝版本為準。