嵌入式團(tuán)隊(duì)需要采用模擬仿真的三個(gè)原因
任何一個(gè)嵌入式軟件開發(fā)人員當(dāng)被告知他們要從事一個(gè)新項(xiàng)目時(shí),首先要做的就是要求一個(gè)開發(fā)工具包。開發(fā)工具包允許開發(fā)團(tuán)隊(duì)熟悉微控制器及其外圍。然后,他們就可以開始用破折板和類似的東西來構(gòu)建一個(gè)系統(tǒng)。
這種方法的問題在于它迫使開發(fā)人員從根本上思考。他們專注于他們正在使用的硬件。是的,這是難題中的一個(gè)重要環(huán)節(jié),但是考慮到低層次會(huì)導(dǎo)致緊密耦合的代碼、硬件依賴性,以及客戶幾個(gè)月來沒有看到任何結(jié)果。
在當(dāng)今的開發(fā)環(huán)境中,團(tuán)隊(duì)沒有理由不能從第一天開始模擬他們的系統(tǒng)。事實(shí)上,嵌入式團(tuán)隊(duì)需要采用模擬使其實(shí)踐現(xiàn)代化并取得成功有三個(gè)原因。
原因1-以較低的開發(fā)成本更快地進(jìn)入市場(chǎng)
啊,嵌入式軟件開發(fā)的圣杯。幾十年來,許多工具和服務(wù)公司都在吹捧這種能力,以更快和更低的成本進(jìn)入市場(chǎng)。這些措施是否真的有效還有待討論。然而,我將在這里調(diào)用這個(gè)語句,因?yàn)槲蚁嘈拍M可以幫助您實(shí)現(xiàn)這個(gè)目標(biāo)。
任何產(chǎn)品公司的目標(biāo)都是盡可能快地開發(fā)他們的產(chǎn)品。在很多情況下,產(chǎn)品開始是模糊的。他們認(rèn)為自己知道客戶的需求和需求,但通常這只是猜測(cè)。是的,市場(chǎng)營銷人員會(huì)去做調(diào)查,從客戶和客戶那里得到回復(fù),但是他們真的知道他們想要什么,直到他們能拿著它玩為止嗎?
如果您從一個(gè)主機(jī)上的模擬開始,那么您將立即放棄對(duì)硬件的關(guān)注。相反,你只關(guān)注客戶和他們的需求。這意味著,在第一天,您正在編寫以客戶為重點(diǎn)的代碼。不是設(shè)計(jì)用來讓LED閃爍或傳感器被讀取的代碼。雖然這些都很重要,但產(chǎn)品的最終目標(biāo)是向客戶提供價(jià)值。
如果客戶提前拿到產(chǎn)品,他們可以告訴你是否滿足他們的需求。他們可能認(rèn)為他們需要一樣?xùn)|西,但是在他們進(jìn)行實(shí)驗(yàn)之后,他們意識(shí)到他們需要?jiǎng)e的東西。如果你已經(jīng)設(shè)計(jì)了整個(gè)產(chǎn)品,那就意味著你必須回去重做大部分的產(chǎn)品。這將花費(fèi)時(shí)間和金錢,并推遲你的產(chǎn)品的發(fā)布。
仿真可以幫助在客戶和管理團(tuán)隊(duì)眼中鞏固產(chǎn)品。在不涉及硬件的情況下,進(jìn)行更改要容易得多。這意味著應(yīng)用程序可以是第一位的,實(shí)時(shí)的、低級(jí)的硬件設(shè)備可以是以后的。無論如何,這都是好的,因?yàn)橛布藛T在幾個(gè)月內(nèi)不會(huì)有硬件供你使用。有了產(chǎn)品的清晰度和脫鉤的應(yīng)用程序代碼,結(jié)果將會(huì)更快地進(jìn)入市場(chǎng),降低開發(fā)成本!。
原因2-模擬可以和硬件脫鉤
您是否嘗試過端口與硬件緊密耦合的應(yīng)用程序代碼。簡(jiǎn)直是噩夢(mèng)!當(dāng)你開始寫代碼的時(shí)候,你可能會(huì)認(rèn)為把它和硬件連接起來是可以的,但是你永遠(yuǎn)不會(huì)知道什么時(shí)候硬件會(huì)變得不可用,或者什么時(shí)候特性的蠕變會(huì)迫使你升級(jí)你的處理器。
模擬迫使您作為開發(fā)人員立即開始開發(fā)不依賴硬件的代碼。在主機(jī)上啟動(dòng),必須使用抽象和接口來獲得硬件通常提供的預(yù)期結(jié)果。通過將這些依賴關(guān)系打破為硬件,你會(huì)發(fā)現(xiàn)你會(huì)自然而然地編寫出更可重用、可移植和可伸縮的代碼。
從軟件中剝離硬件有許多好處。例如,它在開發(fā)過程的早期為團(tuán)隊(duì)提供了靈活性。他們可以在他們的開發(fā)機(jī)器上運(yùn)行他們的代碼,甚至可以在像樹莓皮一樣的設(shè)備上運(yùn)行。開發(fā)人員可以編寫和測(cè)試他們的代碼,而不必等待硬件的可用性。實(shí)際上,它可以幫助他們編寫更好的單元測(cè)試,更容易地集成到CI/CD框架中!
當(dāng)團(tuán)隊(duì)開始進(jìn)行模擬時(shí),軟件架構(gòu)和實(shí)現(xiàn)往往更可擴(kuò)展、可重用和可移植。它讓他們思考產(chǎn)品的"秘密醬"的應(yīng)用層次。我知道底層硬件可以是差異化的,但是對(duì)于今天構(gòu)建的許多嵌入式系統(tǒng)來說,它實(shí)際上不是。(無意冒犯)。
理由3-在主機(jī)上進(jìn)行調(diào)試效率更高
在目標(biāo)上調(diào)試代碼不是很有效。你必須遵循一個(gè)有點(diǎn)神秘的過程。
· 交叉編譯您的代碼
· 刪除你的目標(biāo)
· 規(guī)劃目標(biāo)
· 啟動(dòng)調(diào)試會(huì)話
· 穿過密碼
當(dāng)我在會(huì)議上授課和演講時(shí),我發(fā)現(xiàn)一般的開發(fā)人員花費(fèi)大約20-40%的時(shí)間進(jìn)行調(diào)試!當(dāng)你在幾個(gè)月的時(shí)間里想這件事的時(shí)候,那就像是每年花2.5-4個(gè)月去做失敗的工作。
當(dāng)您有一個(gè)模擬器時(shí),您可以跳過神秘的目標(biāo)上調(diào)試過程。運(yùn)行應(yīng)用程序和重新創(chuàng)建問題通常更容易、更快。您可以生成日志信息來識(shí)別問題。當(dāng)您進(jìn)行更改時(shí),只需要進(jìn)行更改、編譯和運(yùn)行。速度很快。而不是目標(biāo)調(diào)試。它可能更有趣,因?yàn)槟憧梢酝骐娮赢a(chǎn)品,但它浪費(fèi)了很多時(shí)間和資源。
結(jié)論
采用模擬技術(shù)可以顯著改善您的嵌入式軟件.它可以迫使你首先專注于你的應(yīng)用程序,這有助于更快地凝固產(chǎn)品和客戶。(不過,它也可能鼓勵(lì)范圍蔓延,所以要小心)。運(yùn)行與低級(jí)硬件脫鉤的應(yīng)用程序代碼將鼓勵(lì)代碼中的可伸縮性和重用性。您將能夠更好地為您的應(yīng)用程序編寫自動(dòng)化測(cè)試,并確保底層硬件不會(huì)有這種方法。
考慮使用模擬器編寫軟件可能有點(diǎn)讓人生畏,但也沒什么不同。您可以像在嵌入式目標(biāo)上一樣,輕松地在Linux、Windows或MacOS上執(zhí)行您的實(shí)時(shí)操作系統(tǒng)。調(diào)試問題會(huì)更快。將代碼部署到客戶面前會(huì)更容易。
雖然需要一點(diǎn)時(shí)間才能適應(yīng),但模擬代碼將幫助你實(shí)現(xiàn)嵌入式軟件開發(fā)的現(xiàn)代化,最終,你可能會(huì)發(fā)現(xiàn)這樣做的速度更快。