C語言基礎:MBD中的C語言

本文簡單介紹一下博主對MBD中C語言的認識。

1 MBD中爲什麼會用到C語言

幹汽車軟件這一行的都知道MBD是基於模型的設計,通常就是用Simulink去搭建模型來實現控制算法。對於專注於控制算法的策略工程師而言,完全不會用到C語言。

但是編譯器是無法將Simulink模型編譯爲Hex文件刷到ECU中的,只能編譯C代碼。所以在編譯前要用到Embedded Coder工具先把模型生成代碼,然後再拿去編譯。因此,C語言是MBD中繞不過去的一個話題。

2 用到C語言的開發階段

根據博主本人有限的工作經驗,認爲MBD主要中有兩個地方需要用到C語言。

2.1 手寫代碼

沒錯,就是手寫C代碼。這是因爲很多功能無法或者很難通過模型來實現。比如說,應用層和底層的接口功能。再比如說,一些診斷和校驗相關的功能。

由於博主不是幹這個的,所以沒法和大家深入探討。

2.2 軟件集成

好了,這下說到博主的主要工作了。軟件集成工程師的工作是要把底層、應用層軟件放在一起,做編譯、鏈接等操作,最終出爐Hex文件交付給測試工程師。職責還包括圍繞着這個主要工作的很多輔助工作,比如代碼生成、MIL/SIL/PIL測試、集成配置管理、代碼靜態檢查等,甚至有時候還需要擔當策略工程師的諮詢顧問。

C語言幾乎貫穿工作的各個環節。
1)代碼生成
Simulink和Embedded Coder中的不同配置會導致生成的代碼有所區別。所以集成工程師會對Simulink進行統一的配置,以保證團隊中所有成員生成符合項目要求的相同風格的代碼。這就要求工程師對模型和對應代碼代碼以及配置項做到心裏非常有數。

2)軟件編譯
這裏的編譯是個廣義的概念,包括預處理、編譯、鏈接等操作,也就是從C代碼到Hex文件的過程。軟件編譯的過程中,編譯器會經常報錯,告訴我們那個C文件的第幾行報了什麼錯。這時候需要集成工程師有豐富的經驗去將這些問題一一排查。如果不熟悉C語言,這工作就很夠嗆了。

3)靜態檢查
Polyspace軟件可以對C代碼進行靜態檢查,在HIL測試和試車試驗前有效地排除部分軟件bug。

3 學習MBD中的C語言

上面說了那麼多,主要意思就是,C語言在MBD中是無法避免的。一個汽車軟件開發團隊中,至少得有一個人看得懂C語言。

那麼作爲汽車軟件集成工程師,博主個人認爲,MBD中用到的C語言不算很難。首先,我們不用去手寫C代碼,只會看Simulink生成的C代碼,能讀懂就行了。其次,生成的代碼很多很長,不可能全看一遍,只會關注編譯報錯的部分或者檢查出錯的部分。最後,汽車軟件中的C代碼不會出現學校課本上那些奇技淫巧,比方說i++或者++i之類的代碼。

看過我的其他博客就會知道,博主喜歡通過簡單的模型生成代碼,來研究C代碼和模型、配置之間的關係。後續博客還會以Simulink作爲我們的老師,通過他來學習更多的C語言的知識點。不過都比較簡單,因爲C語言其實只是一個過客,最終的目的還是用編譯器集成軟件。

>>返回個人博客總目錄

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章