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