當(dāng)前位置:首頁(yè) > 公眾號(hào)精選 > 嵌入式大雜燴
[導(dǎo)讀]C與C的選擇其實(shí)是“面向過程”與“面向?qū)ο蟆钡倪x擇。Sugar認(rèn)為這兩種編程思想的選擇取決于軟件的特性,軟件特性包括幾個(gè)方面,都是Sugar總結(jié)出來的經(jīng)驗(yàn)。本文力求把“軟件特性”與“語言選擇”結(jié)合圖示理清晰。嵌入式最簡(jiǎn)IO模型“最簡(jiǎn)IO模型”自然是輸入直接輸出,比如房間里的照明燈...

CC 的選擇其實(shí)是“面向過程”與“面向?qū)ο蟆钡倪x擇。Sugar 認(rèn)為這兩種編程思想的選擇取決于軟件的特性,軟件特性包括幾個(gè)方面,都是 Sugar 總結(jié)出來的經(jīng)驗(yàn)。本文力求把“軟件特性”與“語言選擇”結(jié)合圖示理清晰。

嵌入式最簡(jiǎn) IO 模型

“最簡(jiǎn) IO 模型”自然是輸入直接輸出,比如房間里的照明燈給電就亮,這是不需要嵌入式的。按現(xiàn)在的潮流說法,加嵌入式進(jìn)去那得叫智能硬件。因此,嵌入式的最簡(jiǎn) IO 模型就是在輸入和輸出之間加入“嵌入式運(yùn)算平臺(tái)”,如“圖1”。

圖1. 嵌入式最簡(jiǎn) IO 模型



在嵌入式最簡(jiǎn) IO 模型下的產(chǎn)品功能大多都相對(duì)簡(jiǎn)單,有明確的輸入和明確的輸出,也就是說嵌入式軟件的運(yùn)算過程是明確的。這是自然“面向過程”的情況,這種情況下選 C 還是 C 沒有多大差別。簡(jiǎn)單的控制過程就算選 C 也是寫面向過程的軟件。

舉個(gè)例子來說就是現(xiàn)在小孩子都玩兒膩了的“巡線小車”,上電就跟著線跑。這個(gè)用 Arduino C 來實(shí)現(xiàn)就可以了,其實(shí) Arduino 是 C 庫(kù),在這種簡(jiǎn)單功能上體現(xiàn)不出 CC 有多大區(qū)別。

嵌入式受控 IO 模型

所謂“嵌入式受控 IO 模型”可以認(rèn)為是一個(gè)遙控智能車一樣的設(shè)備。在受控模型下,嵌入式硬件平臺(tái)多了一路“指令”輸入。這時(shí)候不妨再加個(gè)顯示器,用于顯示當(dāng)前處于“受控模式”還是“自動(dòng)模式”,如“圖2”。

圖2. 嵌入式受控 IO 模型



這里引入的“模式”是一個(gè)軟件概念,軟件是有無限可能的,能加一個(gè)模式進(jìn)去就有可能再加很多個(gè)模式。模式在軟件流程上是一個(gè)環(huán)節(jié),但這個(gè)環(huán)節(jié)如上所述有多種不同的可能,這種情況最適合用 C 的面向?qū)ο笏枷雭韺懗绦颉?/p>即:軟件上“單點(diǎn)多樣”的情況下用 C 使軟件模塊化,用父、子類來實(shí)現(xiàn),代碼的可讀性和可維護(hù)性都會(huì)遠(yuǎn)強(qiáng)于用 C 來寫。有關(guān)“模式”的詳細(xì)展開請(qǐng)看《從 ArduPilot 學(xué)習(xí)模式管理機(jī)制并移植和改進(jìn)》。

嵌入式終級(jí) IO 模型

隨著人工智能的逐步發(fā)展,越來越多的算法需要強(qiáng)勁的 CPU 甚至 GPU,這都不是嵌入式平臺(tái)能做的。嵌入式平臺(tái)長(zhǎng)于實(shí)時(shí)控制而非快速大量運(yùn)算,因此需要與機(jī)載 PC 配合工作。這樣種情況下的模型如“圖3”。

圖3. 嵌入式終級(jí) IO 模型



這樣的模型毫無疑問用 C 會(huì)得到可維護(hù)性更好的嵌入式軟件。如上所述 C 用在“單點(diǎn)多樣”的環(huán)節(jié),也就是說在考慮 C 代碼之前要先確認(rèn)有“哪些點(diǎn)”以及每個(gè)點(diǎn)有“哪些樣”。

嵌入式軟件的語言選擇

下面基于“嵌入式終極 IO 模型”展開說嵌入式軟件的語言選擇。在嵌軟部分從前往后展開,首先是傳感器輸入數(shù)據(jù)。

傳感器輸入部分的語言選擇

圖4. 傳感器輸入部分語言選擇



軟件特性語言
軟件運(yùn)行平臺(tái)的相關(guān)硬件不經(jīng)常改變C
軟件運(yùn)行平臺(tái)的相關(guān)硬件經(jīng)常改變C
上表根據(jù)軟件的運(yùn)行平臺(tái)差異直接給出了選擇建議,平臺(tái)差異也決定了軟件特性的不同。

對(duì)于醫(yī)療、工業(yè)、運(yùn)輸/鐵路、航空航天設(shè)備、汽車、核應(yīng)用、家電系列產(chǎn)品,一般生產(chǎn)出來之后嵌入式硬件將不再改變,這類產(chǎn)品開發(fā)就適合選擇 C 語言。在這些產(chǎn)品上 C 語言占用資源相對(duì)少、較率相對(duì)高。因?yàn)橛布潭ㄋ攒浖次募?shù)量也是明確的,源碼文件管理的負(fù)擔(dān)也不重。另外傳感器驅(qū)動(dòng)開發(fā)這件事本身就是“面向過程”的,開發(fā)經(jīng)驗(yàn)是決定開發(fā)效率的關(guān)鍵,“面向?qū)ο蟆痹陂_發(fā)效率上的優(yōu)勢(shì)于這種情況下很難體現(xiàn)出來。

對(duì)于玩具、教具類產(chǎn)品或者是開源軟件,靈活適配同類硬件是基本要求。這類嵌軟的特點(diǎn)是同一種硬件需要適配不同廠家、不同型號(hào)的“同功能設(shè)備”,這就符合“面向?qū)ο蟆钡乃枷?。就?GPS 來說,不論哪個(gè)廠家都要輸出經(jīng)緯度、速度、時(shí)間戳這些數(shù)據(jù),我們可以把這些共性數(shù)據(jù)做成 C 的基類,用子類解決廠家差異。這部分 Sugar 在《一文讀懂 ArduPilot 的前后臺(tái)架構(gòu)》中有詳述。

嵌入式運(yùn)算部分的語言選擇

圖5. 嵌入式運(yùn)算部分語言選擇



這一部分的軟件特性是:算法與硬件平臺(tái)無關(guān)。算法本身是數(shù)學(xué)和邏輯,平臺(tái)提供運(yùn)算能力,因此運(yùn)算部分理應(yīng)在任何運(yùn)算能力達(dá)到要求的平臺(tái)上都能夠運(yùn)行。另外算法本身具有多樣性,一個(gè)目標(biāo)往往不只一種算法可以達(dá)到。

“單點(diǎn)多樣”、“跨平臺(tái)”這兩點(diǎn)對(duì)軟件代碼的文件管理都有比較高的要求,這些要求用 C 就非常容易滿足。

協(xié)議數(shù)據(jù)部分的語言選擇

圖6. 協(xié)議數(shù)據(jù)部分語言選擇



協(xié)議本質(zhì)是對(duì)傳輸數(shù)據(jù)的打包和解包,這是一個(gè)面向過程的事,所以用 C 語言來實(shí)現(xiàn)協(xié)議代碼最合適。

從數(shù)據(jù)傳輸方面考慮,在把數(shù)據(jù)送給協(xié)議代碼打包前,最好將數(shù)據(jù)分類,以明確數(shù)據(jù)是“給誰”和“干什么”的,這些事 Sugar 統(tǒng)稱為“協(xié)議數(shù)據(jù)管理”。從嵌入式軟件整體來看“協(xié)議數(shù)據(jù)管理”就是整體中的“一個(gè)點(diǎn)”,而嵌入式平臺(tái)的通信對(duì)象可能不唯一,比如“圖6”中就有給顯示器的和給機(jī)載 PC 的,也就是說管理起來是“多樣的”。這從軟件整體來看也是一個(gè)典型的“單點(diǎn)多樣”,所以協(xié)議數(shù)據(jù)管理這部分選 C 面向?qū)ο髮戃浖袃?yōu)勢(shì)。

往期推薦:

嵌入式開發(fā)小記,實(shí)用小知識(shí)分享

分享幾個(gè)Ubuntu必裝的軟件

嵌入式行業(yè)需要什么樣的技術(shù)人才?

常用的開源協(xié)議有哪些?

在公眾號(hào)聊天界面回復(fù)1024,可獲取嵌入式資源;回復(fù)?m?,可查看文章匯總。


點(diǎn)擊閱讀原文,查看更多分享。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉