• gzyueqian
    13352868059

    嵌入式開(kāi)發(fā):3種模擬固件的技術(shù)

    更新時(shí)間: 2024-05-28 10:02:35來(lái)源: 粵嵌教育瀏覽量:203

    開(kāi)發(fā)固件的團隊和嵌入式軟件經(jīng)常根據目標開(kāi)發(fā)軟件。雖然使用開(kāi)發(fā)板來(lái)了解正在編寫(xiě)代碼的處理器、外圍設備和設備不一定有什么問(wèn)題,但針對目標的開(kāi)發(fā)效率低下且耗時(shí)。在運行的代碼之前,需要交叉編譯它,刪除目標,編程它,驗證它,然后開(kāi)始的調試會(huì )話(huà)。

     

    在與CI/CD集成和測試代碼工作時(shí)存在潛在的伸縮問(wèn)題。曾經(jīng)嘗試過(guò)在嵌入式目標上運行單元測試或覆蓋率報告嗎?這是可以做到的,但要正確設置和工作通常是相當痛苦的。相反,可以使用幾種技術(shù)來(lái)模擬的固件和嵌入式軟件,這將幫助快速移動(dòng)而沒(méi)有額外的麻煩。

     

    模擬技術(shù)1: Renode.ioQEMU

    嵌入式開(kāi)發(fā)人員在模擬系統時(shí)面臨的最大挑戰是如何模擬低級軟件。最低級別與硬件交互,這意味著(zhù)需要使用特殊工具來(lái)理解硬件。在使用微控制器時(shí),有兩種工具相對流行:Renode.ioQEMU。

     

    QEMU是一個(gè)通用的開(kāi)源機器仿真器和虛擬化器。QEMU可以模擬各種處理器,允許為一種CPU設計的軟件在另一種CPU上運行。對于使用不同架構(如ARM、PowerPC、MIPSx86)的嵌入式系統的固件或應用程序開(kāi)發(fā)人員來(lái)說(shuō),該功能非常寶貴。QEMU的缺點(diǎn)是會(huì )發(fā)現對微控制器的支持不多。例如,可能會(huì )發(fā)現微控制器可以與USART外設一起使用,但不支持定時(shí)器和ADC。

     

    Renode是一個(gè)開(kāi)發(fā)框架,通過(guò)物理硬件模擬來(lái)加速物聯(lián)網(wǎng)和嵌入式系統的開(kāi)發(fā)。開(kāi)發(fā)人員可以模擬微控制器外部的CPU、外設和設備,如傳感器。支持I2C、CAN、SPI、Flash、USB、UART等外設。RenodeQEMU更注重嵌入式。到目前為止,它對嵌入式目標的支持要好得多。

     

    模擬技術(shù)2:關(guān)注應用程序代碼

    嵌入式軟件架構是兩種架構的故事。第一個(gè)是高級業(yè)務(wù)邏輯,提供客戶(hù)功能,不關(guān)心底層硬件。第二個(gè)是與硬件交互的實(shí)時(shí)代碼,它并不關(guān)心那里有什么硬件。

     

    想要模擬的嵌入式應用程序時(shí),應該確定是否需要模擬該硬件相關(guān)的代碼。大多數客戶(hù)只關(guān)心他們交互的功能。如果是這樣的話(huà),模擬的應用程序代碼比低級代碼更重要。如果能在硬件準備就緒之前開(kāi)發(fā)并運行的應用程序代碼,就可以更快地將其提供給客戶(hù)。如果在客戶(hù)面前獲得代碼,可以獲得他們的反饋并盡早進(jìn)行調整。你越早做出改變,你花在這些改變上的錢(qián)就越少,這些改變花費的時(shí)間就越少。

     

    在主機上模擬應用程序代碼通常只不過(guò)是為該主機添加一個(gè)構建目標。例如,如果CC++編寫(xiě),將調用為編譯應用程序代碼而設置的主機構建目標。然后可以運行生成的可執行文件。可能認為這給使用RTOS的系統帶來(lái)了問(wèn)題。通常不會(huì )。許多RTOS供應商提供可以在Windows、LinuxMacOS上編譯的RTOS版本。這意味著(zhù)可以在選擇的RTOS上運行的應用程序代碼!會(huì )發(fā)現可以添加代碼來(lái)可視化系統行為,將數據轉儲到數據庫等。

     

    你應該問(wèn)自己的問(wèn)題是你是否需要模擬底層代碼。如果沒(méi)有,請集中精力模擬的應用程序代碼。你會(huì )發(fā)現,這樣做,你也可以自然地編寫(xiě)與硬件無(wú)關(guān)的代碼。結果是更加可重用、可移植和可擴展的軟件。

     

    模擬技術(shù)3:利用指令集模擬器

    另一種可以用來(lái)在主機上測試代碼的模擬器是指令集模擬器。這些模擬器允許運行應用程序代碼和固件。它們通過(guò)在IDE中直接運行處理器和外設的低級指令來(lái)實(shí)現這一點(diǎn)。你會(huì )在Keil MDK,、IAR EWARM、MPLAB Xide中找到這些模擬器。

     

    這些模擬器的功能往往各不相同。例如,可能會(huì )發(fā)現可以模擬處理器內核,但不支持外設。可以驗證指令是否正確運行、算法結果等,但無(wú)法證明與外設的交互是否有效。雖然這可能不是最佳選擇,但它可以讓脫離目標運行代碼,并在沒(méi)有獨特工具的情況下在更高級別的代碼上取得快速進(jìn)展。

     

    結論

    利用模擬是一項偉大的現代技術(shù),可以幫助更快地開(kāi)發(fā)固件。偏離目標的工作越多,效率就越高,因為你可以避免那些漫長(cháng)的編譯、編程和調試周期。你會(huì )發(fā)現寫(xiě)單元測試和在模擬中運行代碼會(huì )迫使你編寫(xiě)更具可移植性和可重用性的代碼。脫離目標運行迫使編寫(xiě)抽象出硬件的解耦代碼。結果是一個(gè)更清晰、可擴展和可測試的軟件實(shí)現,可以在構建硬件之前對其進(jìn)行驗證。

    免費預約試聽(tīng)課

    九九久久精品国产AV片国产_久久久久精品免费_亚洲精品高清国产一线久久_亚洲国产成人影院在线播放