軟件開(kāi)發(fā)人員對(duì)硬件開(kāi)發(fā)板又愛(ài)又恨。一方面,它們使軟件變得栩栩如生。另一方面,它們可能會(huì)讓人頭疼,特別是因?yàn)殚_(kāi)發(fā)計(jì)劃取決于它們的可用性。開(kāi)發(fā)板對(duì)軟件調(diào)試和分析行為的有限可見(jiàn)性通常迫使開(kāi)發(fā)人員使用更復(fù)雜的方法。有時(shí)它們根本不像開(kāi)發(fā)人員期望的那樣工作。虛擬硬件平臺(tái)可以通過(guò)快速執(zhí)行軟件來(lái)幫助解決開(kāi)發(fā)人員的挫敗感,從而縮短開(kāi)發(fā)周期。
復(fù)雜的多核平臺(tái)(例如用于設(shè)計(jì)蜂窩基站的平臺(tái))越來(lái)越多地為軟件開(kāi)發(fā)人員帶來(lái)挑戰(zhàn),這也加劇了他們傾向于鄙視硬件開(kāi)發(fā)板的原因。 RadioFrame Networks 設(shè)計(jì)項(xiàng)目證明了這種兩難境地,這導(dǎo)致了開(kāi)發(fā)人員與硬件的雙刃劍關(guān)系。
替代開(kāi)發(fā)方法
在最初的硬件規(guī)范之后,開(kāi)發(fā)團(tuán)隊(duì)考慮使用與初步硬件設(shè)計(jì)略有相似的參考開(kāi)發(fā)板。沒(méi)有任何設(shè)計(jì)外設(shè)或 DDR RAM 控制器與開(kāi)發(fā)板匹配;但是,當(dāng)時(shí)沒(méi)有其他可用的東西。一旦最終硬件可用,開(kāi)發(fā)人員將不得不盲目地編寫(xiě)然后修改軟件,因?yàn)樗麄儧](méi)有參考板上的所有硬件組件。這是他們認(rèn)為可以用來(lái)完成工作的唯一方法。
然后,開(kāi)發(fā)團(tuán)隊(duì)遇到了用于軟件開(kāi)發(fā)的虛擬平臺(tái),這是一種模擬硬件模型并以接近實(shí)時(shí)的速度執(zhí)行軟件的技術(shù)。盡管開(kāi)發(fā)人員對(duì)這個(gè)概念很感興趣,但由于對(duì)用于創(chuàng)建虛擬硬件平臺(tái)的建模技術(shù)和方法缺乏了解,他們有所保留。開(kāi)發(fā)人員想知道閃存模型是否與通用閃存接口/可擴(kuò)展命令集兼容,以及新的 MAC 控制器功能是否足以為開(kāi)發(fā)驅(qū)動(dòng)程序提供先機(jī)。由于為 ASIC 選擇的 ARM 內(nèi)核沒(méi)有使用完整的 ARM 指令集,因此開(kāi)發(fā)人員希望虛擬硬件平臺(tái)能夠捕獲內(nèi)核嘗試的非法指令,并捕獲和報(bào)告非法寄存器寫(xiě)入。
隨著團(tuán)隊(duì)開(kāi)始項(xiàng)目,很明顯有些擔(dān)憂是沒(méi)有根據(jù)的。他們很快了解到建模使用稱為 SystemC 的標(biāo)準(zhǔn)語(yǔ)言、專門為建模硬件而設(shè)計(jì)的 C++ 子集以及稱為事務(wù)級(jí)建模的方法。SystemC 中的概念對(duì)開(kāi)發(fā)人員來(lái)說(shuō)非常自然。因此,在這個(gè)項(xiàng)目中對(duì)閃光燈進(jìn)行建模不是問(wèn)題。
使用這項(xiàng)技術(shù)保存了會(huì)話之間的修改。盡管本案例中的特定內(nèi)核沒(méi)有建模,但開(kāi)發(fā)人員仍然可以控制仿真并在出現(xiàn)非法指令時(shí)停止執(zhí)行,這是他們通過(guò)使用工具命令語(yǔ)言 (Tcl) 腳本功能完成的。
在初始建模期間,開(kāi)發(fā)人員發(fā)現(xiàn)軟件和建模團(tuán)隊(duì)之間的溝通對(duì)于了解使用虛擬硬件平臺(tái)可以實(shí)現(xiàn)什么至關(guān)重要。他們了解到,他們需要考慮虛擬硬件平臺(tái)建模本身,并注意外圍模型及其支持的功能。開(kāi)發(fā)虛擬硬件平臺(tái)涉及 IP 和工具供應(yīng)商之間的交互。經(jīng)過(guò)幾周的建模,開(kāi)發(fā)人員開(kāi)始使用虛擬硬件平臺(tái)開(kāi)始軟件開(kāi)發(fā)。
快速反饋,模擬
最初的軟件開(kāi)發(fā)任務(wù)是開(kāi)發(fā) Linux 支持包和 U-Boot 監(jiān)視器。從一開(kāi)始,虛擬硬件平臺(tái)就提供了寶貴的反饋,使開(kāi)發(fā)人員能夠確定他們是否走在正確的軌道上。開(kāi)發(fā)板支持包開(kāi)發(fā)的初始假設(shè)中的疏忽很快就被捕獲并解決了。
一個(gè)具體問(wèn)題涉及先進(jìn)的高性能總線控制器。必須包括在初始引導(dǎo)期間交換閃存和 DDR RAM 的支持。虛擬平臺(tái)快速幫助開(kāi)發(fā)人員識(shí)別和糾正跳轉(zhuǎn)的設(shè)置方式——虛擬平臺(tái)中的一個(gè)簡(jiǎn)單功能,但需要 JTAG 工具才能在物理硬件中捕獲它。在平臺(tái)中完成的建模使開(kāi)發(fā)人員不僅可以檢測(cè)代碼,還可以檢測(cè)平臺(tái)。如果需要,虛擬硬件平臺(tái)提供了任何和所有外圍設(shè)備狀態(tài)的視圖,而不會(huì)影響操作。
在軟件開(kāi)發(fā)過(guò)程中,來(lái)自 CoWare 的 Virtual Platform Analyzer允許開(kāi)發(fā)人員觀察和控制虛擬硬件平臺(tái),并使用它來(lái)有效地跟蹤發(fā)起方對(duì)外圍塊的訪問(wèn)。特別是,斷點(diǎn)可以放置在外設(shè)塊訪問(wèn)上,并且可以通過(guò) Tcl 應(yīng)用程序編程接口使用特定的調(diào)試消息。相同的 Tcl 腳本功能還使開(kāi)發(fā)人員能夠使虛擬硬件平臺(tái)適應(yīng)他們的開(kāi)發(fā)需求,從而通過(guò)模擬與時(shí)序相關(guān)的配置來(lái)驗(yàn)證固件中硬件配置的編程,而無(wú)需模型是時(shí)間準(zhǔn)確的。因此,該團(tuán)隊(duì)享受了快速的仿真速度,并且無(wú)需等待物理硬件。
對(duì)代碼的寶貴見(jiàn)解
在該項(xiàng)目中,與使用物理硬件相比,使用虛擬硬件平臺(tái)將開(kāi)發(fā)周期縮短了 33%。虛擬硬件平臺(tái)提供了硅前軟件開(kāi)發(fā)測(cè)試環(huán)境。此外,其獨(dú)特的調(diào)試和分析能力使其優(yōu)于物理硬件上提供的類似調(diào)試和分析能力。
鑒于該項(xiàng)目的成功,很明顯虛擬硬件平臺(tái)可以顯著提高軟件開(kāi)發(fā)團(tuán)隊(duì)的生產(chǎn)力。隨著多核平臺(tái)開(kāi)發(fā)的快速增長(zhǎng),虛擬硬件平臺(tái)提供的可見(jiàn)性水平可以讓?xiě)?yīng)用程序開(kāi)發(fā)人員深入了解他們以前在沒(méi)有專門設(shè)備的情況下無(wú)法看到的代碼。
因此,開(kāi)發(fā)人員應(yīng)考慮使用虛擬硬件平臺(tái)來(lái)糾正代碼。這樣做的價(jià)值遠(yuǎn)遠(yuǎn)超過(guò)了最初的建模投資。從 CoWare 等虛擬硬件平臺(tái)技術(shù)供應(yīng)商處獲得的交流、教育、專業(yè)知識(shí)和其他優(yōu)勢(shì)可以減輕任何擔(dān)憂。
要欣賞這項(xiàng)技術(shù),請(qǐng)考慮白盒測(cè)試與黑盒測(cè)試的優(yōu)勢(shì)。使硬件設(shè)置日志級(jí)別允許開(kāi)發(fā)人員記錄操作系統(tǒng)和應(yīng)用程序執(zhí)行的各種訪問(wèn)。設(shè)計(jì)人員還可以將硬件斷點(diǎn)設(shè)置在寄存器訪問(wèn)下至位級(jí)別,直觀地驗(yàn)證中斷和其他離散信號(hào)的變化狀態(tài),并通過(guò)設(shè)置硬件觀察點(diǎn)和斷點(diǎn)等 Tcl 腳本程序擴(kuò)展虛擬硬件平臺(tái)的功能。最重要的是,開(kāi)發(fā)人員可以在他們的工作站上完成所有這些工作,而無(wú)需復(fù)雜的硬件設(shè)置、電纜和不穩(wěn)定的硬件板。
不再等待硬件
虛擬硬件平臺(tái)為開(kāi)發(fā)人員帶來(lái)了光明的未來(lái),免除了他們等待硬件可用性的痛苦,并提供了硬件開(kāi)發(fā)板無(wú)法提供的調(diào)試功能。虛擬硬件平臺(tái)對(duì)于這十年及以后的軟件開(kāi)發(fā)人員來(lái)說(shuō),絕對(duì)是經(jīng)過(guò)生產(chǎn)力驗(yàn)證的、可用于生產(chǎn)的工具。
審核編輯:郭婷
-
ARM
+關(guān)注
關(guān)注
134文章
9087瀏覽量
367390 -
asic
+關(guān)注
關(guān)注
34文章
1199瀏覽量
120439 -
Linux
+關(guān)注
關(guān)注
87文章
11293瀏覽量
209339
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論