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