在嵌入式 Linux 開(kāi)發(fā)的早期(大約 Y2K),其中很大一部分工作是將開(kāi)源代碼移植到目標(biāo)硬件平臺(tái)上運(yùn)行。除非工程師在 Intel x86 板上運(yùn)行代碼,否則開(kāi)發(fā)板支持包 (BSP) 并交叉編譯開(kāi)源中間件以在硬件上運(yùn)行并非易事。從那以后的幾年里,越來(lái)越多的硬件公司發(fā)現(xiàn),提供免費(fèi)的 Linux BSP 對(duì)于確保其硬件在嵌入式應(yīng)用程序中的廣泛采用是必要的。在早期,通過(guò)控制臺(tái)端口到達(dá) Linux shell 提示符可能需要數(shù)周或數(shù)月的時(shí)間,而現(xiàn)在應(yīng)該只需要幾個(gè)小時(shí)。
由于現(xiàn)在可以在目標(biāo)硬件上運(yùn)行各種經(jīng)過(guò)驗(yàn)證的開(kāi)源軟件,平臺(tái)工程師的典型日常任務(wù)轉(zhuǎn)而專(zhuān)注于現(xiàn)有開(kāi)源軟件的配置、定制和集成,而不是設(shè)計(jì)和開(kāi)發(fā)從零開(kāi)始的軟件。鑒于這種轉(zhuǎn)變,讓我們回顧一下在決定是否基于開(kāi)源軟件構(gòu)建產(chǎn)品時(shí)要考慮的以下四個(gè)主要產(chǎn)品生命周期工作流程挑戰(zhàn):
為應(yīng)用程序團(tuán)隊(duì)創(chuàng)建定制的軟件開(kāi)發(fā)工具包 (SDK);
跟蹤開(kāi)源軟件更新;
從源代碼重建平臺(tái);和
管理與各種許可證相關(guān)的開(kāi)源軟件義務(wù)。
創(chuàng)建自定義 SDK
隨著工程師越來(lái)越多地將嵌入式 Linux 視為可以在其公司的許多產(chǎn)品中重復(fù)使用的通用軟件平臺(tái),創(chuàng)建定制的 SDK 變得比創(chuàng)建 BSP 更重要。應(yīng)用程序開(kāi)發(fā)人員喜歡 Android 和 iOS,因?yàn)?Google 和 Apple 在為他們的手機(jī)和平板電腦平臺(tái)構(gòu)建和維護(hù)自定義但功能強(qiáng)大且易于使用的 SDK 方面做得很好。誰(shuí)在為開(kāi)發(fā)工程師為您的硬件平臺(tái)構(gòu)建應(yīng)用程序奠定基礎(chǔ)?如果一家公司擁有一名正式負(fù)責(zé)為應(yīng)用程序開(kāi)發(fā)團(tuán)隊(duì)創(chuàng)建和維護(hù)自定義 SDK 的工程師,則該公司處于領(lǐng)先地位。如果公司有人負(fù)責(zé)這項(xiàng)正在進(jìn)行的任務(wù),經(jīng)理應(yīng)該能夠回答以下問(wèn)題:
工程師的工作做得如何?
他們花了多少時(shí)間做這件事?
他們?nèi)绾螌?SDK 分發(fā)給其他團(tuán)隊(duì)成員?
如果這個(gè)人(或平臺(tái)團(tuán)隊(duì)中的關(guān)鍵人物)離開(kāi)了公司,是否有人可以介入并有效地接管這個(gè)角色?
創(chuàng)建自定義 SDK 基本上歸結(jié)為選擇應(yīng)用程序開(kāi)發(fā)人員應(yīng)該使用的一組庫(kù)和 API,然后確保它們以受版本控制的方式內(nèi)置到應(yīng)用程序開(kāi)發(fā)工具鏈中。如果應(yīng)用程序?qū)⒗脛?dòng)態(tài)鏈接,那么這也意味著確保為開(kāi)發(fā)人員的桌面以及運(yùn)行時(shí)目標(biāo)映像構(gòu)建一致的版本。以易于安裝的格式提供 SDK 有助于確保所有應(yīng)用程序開(kāi)發(fā)人員的一致性。
跟蹤開(kāi)源更新
團(tuán)隊(duì)中誰(shuí)負(fù)責(zé)跟蹤對(duì)公司產(chǎn)品內(nèi)運(yùn)行的開(kāi)源軟件所做的更新?他們?nèi)绾巫龅竭@一點(diǎn),多久一次?他們?cè)趯ふ沂裁礃拥母??安全補(bǔ)丁和錯(cuò)誤修復(fù)是否與新功能發(fā)布一樣受到關(guān)注?他們?nèi)绾闻c團(tuán)隊(duì)其他成員一致地分享這些更新?
我們與一位客戶合作,通過(guò)讓三名工程師每周一天在午餐時(shí)間工作來(lái)解決這個(gè)特定問(wèn)題。為了確保他們了解他們?cè)诠井a(chǎn)品中使用的開(kāi)源軟件包的所有最新更新,三位工程師將筆記本電腦顯示器投影到會(huì)議室的屏幕上,并瀏覽各種網(wǎng)站、變更日志、GIT 樹(shù)、郵件列表存檔和下載站點(diǎn)。雖然這不一定是最有效的方法,但它確實(shí)說(shuō)明了保持最新?tīng)顟B(tài)的積極努力 - 并且還說(shuō)明了這樣做所需的工程時(shí)間投資。
自動(dòng)化可以在這方面有所幫助。訂閱 Timesys LinuxLink 服務(wù) (linuxlink.timesys.com)、CERT 郵件列表 (forms.us-cert.gov/maillists) 或 Freecode(原freshmeat.org)等網(wǎng)站,(見(jiàn)圖 1),可以放置一些結(jié)構(gòu)通過(guò)將相關(guān)的、經(jīng)過(guò)過(guò)濾的開(kāi)源更新直接流式傳輸?shù)?Web 瀏覽器或電子郵件收件箱中,圍繞這項(xiàng)工作并節(jié)省時(shí)間。
圖 1:當(dāng)開(kāi)源軟件包的更新版本可供下載時(shí),LinuxLink 更新引擎會(huì)通知平臺(tái)工程師。
從源代碼重建平臺(tái)
曾經(jīng)嘗試從 RPM 或 Debian 源代碼重建桌面發(fā)行版嗎?祝你好運(yùn)。雖然分發(fā)人員確實(shí)提供了源代碼(畢竟它是開(kāi)源的),但從源代碼重建絕對(duì)不是他們通常支持的用例。在大多數(shù)情況下,從源代碼包重建后,生成的系統(tǒng)不會(huì)被視為相同的發(fā)行版,因此供應(yīng)商不太可能支持。
雖然這對(duì)于企業(yè)或桌面 Linux 環(huán)境來(lái)說(shuō)可能是可以接受的,但對(duì)于嵌入式產(chǎn)品公司來(lái)說(shuō)卻是不可接受的。典型的嵌入式產(chǎn)品在該領(lǐng)域使用多年,出貨后往往需要維護(hù)和更新。保留嵌入式產(chǎn)品的每個(gè)交付版本中包含的所有軟件的詳細(xì)清單以及用于構(gòu)建它的工具和腳本是至關(guān)重要的。當(dāng)今許多現(xiàn)代 Linux 構(gòu)建引擎都提供了此功能,因此請(qǐng)務(wù)必選擇一個(gè)提供此功能的引擎。
管理開(kāi)源軟件義務(wù)
與大多數(shù)基于開(kāi)源平臺(tái)構(gòu)建的典型嵌入式產(chǎn)品一樣,開(kāi)發(fā)團(tuán)隊(duì)可能必須跟蹤許多不同的開(kāi)源許可證所產(chǎn)生的義務(wù),而不僅僅是單個(gè)許可證。作為一個(gè)例子,我們提供了“小尺寸起點(diǎn)”,它們是預(yù)先構(gòu)建的嵌入式 Linux 映像,通常只有幾兆字節(jié)大小,可以簡(jiǎn)化嵌入式 Linux 的快速啟動(dòng)和運(yùn)行。如圖 2 所示,一個(gè)占用空間小的起點(diǎn)可能只包括七個(gè)開(kāi)源包,但這七個(gè)包實(shí)際上屬于四個(gè)不同的開(kāi)源許可證。
圖 2: Timesys 小尺寸起點(diǎn)圖像中的開(kāi)源軟件包和相關(guān)許可證
作為另一個(gè)例子,考慮一下索尼提供的相對(duì)簡(jiǎn)單的無(wú)線數(shù)碼相框 ( www.docs.sony.com/release/VGFCP1_qs.pdf )。如圖 3 所示,該產(chǎn)品基于 20 個(gè)不同的開(kāi)源軟件包 ( www.sony.net/Products/Linux/VAIO/VGF-CP1.html ),同樣涵蓋各種不同的開(kāi)源許可證。
圖 3:索尼無(wú)線數(shù)碼相框中包含的開(kāi)源包
在嵌入式產(chǎn)品設(shè)計(jì)中使用每種類(lèi)型的開(kāi)源許可證對(duì)將這種軟件整合到他們的產(chǎn)品中的開(kāi)發(fā)團(tuán)隊(duì)施加了一組獨(dú)特的義務(wù)。正因?yàn)槿绱?,一些公司維護(hù)了一個(gè)開(kāi)源許可證列表,供其開(kāi)發(fā)人員使用。其他公司走得更遠(yuǎn),明確列出了每個(gè)開(kāi)源軟件包的哪個(gè)特定版本已被批準(zhǔn)可能并入公司的產(chǎn)品中。
確保開(kāi)發(fā)團(tuán)隊(duì)了解并遵守與這些開(kāi)源許可證相關(guān)的義務(wù)需要時(shí)間和精力。在嘗試達(dá)到激進(jìn)的產(chǎn)品開(kāi)發(fā)里程碑時(shí),可以幫助識(shí)別和跟蹤適用的基礎(chǔ)許可并實(shí)現(xiàn)許可義務(wù)的工具可以證明是非常有價(jià)值的。
從一開(kāi)始就考慮工作流程
開(kāi)源的使用給整個(gè)嵌入式產(chǎn)品開(kāi)發(fā)生命周期帶來(lái)了一系列新的工作流程挑戰(zhàn)。通過(guò)在新產(chǎn)品開(kāi)發(fā)開(kāi)始時(shí)考慮這些挑戰(zhàn),通過(guò)指定適當(dāng)?shù)墓こ處焷?lái)負(fù)責(zé)各種問(wèn)題,并通過(guò)為工程師配備適當(dāng)?shù)墓ぞ撸芾砣藛T可以通過(guò)最大限度地減少對(duì)進(jìn)度的意外影響來(lái)確保項(xiàng)目更成功。
審核編輯:郭婷
-
嵌入式
+關(guān)注
關(guān)注
5152文章
19675瀏覽量
317655 -
Linux
+關(guān)注
關(guān)注
87文章
11511瀏覽量
213840 -
開(kāi)源
+關(guān)注
關(guān)注
3文章
3690瀏覽量
43837
發(fā)布評(píng)論請(qǐng)先 登錄
電氣CAD文件中高效的工作流程
E8.Net工作流90%以上源代碼提供~
幫忙分析下這個(gè)設(shè)計(jì)的工作流程
嵌入式軟件開(kāi)發(fā)數(shù)據(jù)結(jié)構(gòu)的工作流程是怎樣的
軟件測(cè)試工作流程圖

測(cè)試工程師工作流程有哪些
工作流程圖怎么用?有哪些繪制工作流程圖的軟件
SMC和Ansys正在構(gòu)建一個(gè)自動(dòng)化,優(yōu)化和可重復(fù)的工作流程
Optimajet工作流過(guò)程的管理

NX CAD軟件:數(shù)字化工作流程解決方案(CAD工作流程)

評(píng)論