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