24小時聯(lián)系電話:18217114652、13661815404
中文
行業(yè)資訊
嵌入式軟件-它有多復(fù)雜?
從歷史上看,嵌入式系統(tǒng)非常簡單:只有幾千個內(nèi)存的8位CPU。盡管仍在開發(fā)這種簡單的系統(tǒng),但現(xiàn)在有許多資源豐富的設(shè)備與一個或多個32位處理器和許多兆字節(jié)的內(nèi)存一起使用。這些設(shè)備的強大功能導(dǎo)致軟件的大小和復(fù)雜性增加。但是,這種復(fù)雜性有什么限制?
如果我們看一下機械系統(tǒng),則存在很大的復(fù)雜性。迄今為止,最復(fù)雜的機器是航天飛機軌道飛行器,它具有一百萬個活動部件??紤]到車輛面臨的設(shè)計挑戰(zhàn)有多大,它們的表現(xiàn)非常出色。我想沒有內(nèi)在的原因無法創(chuàng)建更復(fù)雜的機器。
在社會發(fā)展中,電子系統(tǒng)一直在變得越來越復(fù)雜,越來越小。在1950年代,復(fù)雜的電子設(shè)備可能具有100個(分立)晶體管-甚至可能使用了真空管。快進到今天,芯片上的數(shù)十億個晶體管并不少見。每年,芯片的幾何尺寸都減小到越來越少的納米。但是有一個理論上的限制:我不認(rèn)為晶體管(或任何種類的電路元件)會比單個原子小。但是我知道什么?
在過去的50至60年中,軟件的復(fù)雜性急劇增長,反映了硬件的進步。我猜這是軟件的最小“單元”,以這種方式衡量,軟件復(fù)雜性使機械設(shè)計方法落后了,我想比硬件領(lǐng)先一兩個數(shù)量級。但是,我看不到對軟件的理論復(fù)雜性/大小的任何特定限制。制作大內(nèi)存芯片非常容易,因此我們可以使代碼越來越大。
當(dāng)然,設(shè)計是瓶頸。硬件設(shè)計非常具有挑戰(zhàn)性,需要復(fù)雜的電子設(shè)計自動化(EDA)。軟件開發(fā)會有點困難。但這不僅需要工具。
在生活的幾乎所有方面(包括嵌入式軟件),基本上都有3種方法應(yīng)對更大的挑戰(zhàn):
1.加倍努力(即增加人手)
2.工作時間更長
3.更聰明地工作
有時(1)和(2)可以互換。例如,在建筑工程項目中,更多的勞動力可能會加快工作速度。但是,如果只是分配更多的人員來從事這項工作,那么軟件開發(fā)的回報將迅速減少。這主要是因為代碼不同部分之間的相互關(guān)系以及開發(fā)人員進行通信的必然需求。他們最終花費更多的時間進行交流,而不是編碼。在某種程度上,開發(fā)團隊的智能擴張可以帶來好處。這需要確定特定的專業(yè)知識要求并相應(yīng)地分配人員。這與嵌入式開發(fā)特別相關(guān),在嵌入式開發(fā)中,專業(yè)領(lǐng)域可能是:應(yīng)用程序級代碼,驅(qū)動程序開發(fā),OS配置,網(wǎng)絡(luò),UI設(shè)計等。
智慧工作聽起來像公司的口號(我想起來是幾年前的),但是我的意思是讓開發(fā)人員能夠在給定的時間段內(nèi)創(chuàng)建和調(diào)試更多功能。廣義上講,有兩種(并非不相關(guān)的)方法:
更高抽象級別的代碼
重用現(xiàn)有代碼(并使可重用代碼)
更高的抽象水平意味著遠離常規(guī)語言(如C),并擁抱其他范式。UML是一種可能性??芍赜么a在很大程度上是面向?qū)ο缶幊蹋?span lang="EN-US">OOP)技術(shù)的領(lǐng)域??梢詣?chuàng)建可重用的對象,并且OOP可以封裝專業(yè)知識-再次對于嵌入式特別有用。