軟硬件協(xié)同開發(fā)的應(yīng)對方案
當(dāng)然,對于動態(tài)的硬件平臺而言,一次性導(dǎo)出不是完整的解決方案,還必須提供無縫更新設(shè)計(jì)的特性,而且不會破壞應(yīng)用。對于支持庫的IDE來說,更新過程很簡單,因?yàn)樵O(shè)計(jì)可被拆分為應(yīng)用項(xiàng)目和配置庫,這就能將應(yīng)用完全隔離開來,而且能讓包含配置數(shù)據(jù)和HAL的硬件庫在設(shè)計(jì)變化時(shí)自動更新。
圖3:以上導(dǎo)出的系統(tǒng)控制器項(xiàng)目在Keil μVision中打開,可用于應(yīng)用開發(fā)。
3、超越軟件范疇的調(diào)試
設(shè)計(jì)人員所需的第三個(gè)特性就是改進(jìn)調(diào)試。在現(xiàn)代化器件中,“處理器”的定義不僅限于CPU的寄存器和指令集。處理器芯片集成了各種額外的片上功能,比如說常見的通信模塊和標(biāo)準(zhǔn)接口,此外還包括無所不在的定時(shí)器和計(jì)數(shù)器,以及為軟件提供數(shù)字接口的模擬功能,有時(shí)也包括定制邏輯和可切換的路由功能等。這種可定制性說到底正是們最初選擇協(xié)同設(shè)計(jì)的原因所在。調(diào)試器如果只支持CPU,就會讓軟件開發(fā)人員非常失望。們需要圍繞硬件認(rèn)真解決以下問題:硬件啟動了嗎?時(shí)鐘啟動并穩(wěn)定了嗎?外設(shè)在正常工作嗎?通信模塊是否生成中斷?能否發(fā)送和接收數(shù)據(jù)?能否在內(nèi)部總線上正常工作?
如果這聽起來就夠嚇人的話,還沒說到從調(diào)試器改變硬件呢,這其實(shí)是讓人的角色在迫害者和受害者之間轉(zhuǎn)變。需要符號化外設(shè)硬件的存取方式,這樣就能監(jiān)控和控制影響應(yīng)用的狀態(tài)變化。
當(dāng)然,符號信息必須從硬件工具中生成,就好像上述HAL一樣。通過簡單添加這一點(diǎn),調(diào)試過程就變得更加簡單,功能也更加強(qiáng)大了。之所以說更簡單,是因?yàn)閭儾辉傩枰恢辈樵兾臋n去尋找并確認(rèn)調(diào)試器中要注意哪些關(guān)鍵寄存器的地址了。而之所以說更強(qiáng)大,是因?yàn)楝F(xiàn)在它能支持更為復(fù)雜的調(diào)試。除了快速獲得外設(shè)模塊狀態(tài)快照之外,有時(shí)們還能從調(diào)試器控制功能塊,無需編寫代碼以編程方式重建情境就能了解情境工作的具體情況。
交換此信息的典型方法就是讓IDE使用由硬件工具生成的XML文件。ARM CMSIS-SVD(軟件接口標(biāo)準(zhǔn)--系統(tǒng)視圖描述)標(biāo)準(zhǔn)就是一個(gè)很好的例子。它是基于XML的硬件描述,旨在讓調(diào)試器支持高度集成的微控制器。CMSIS是一種面向ARM Cortex微控制器的HAL的標(biāo)準(zhǔn)定義,得到了眾多廠商的廣泛采用。SVD擴(kuò)展主要針對硬件描述,如寄存器、存儲器、外設(shè)等,讓從事可編程系統(tǒng)開發(fā)的人員真正地大獲裨益。
圖4:這是一小段XML,介紹了賽普拉斯PSoC Creator調(diào)試器有關(guān)CAN實(shí)施中一個(gè)寄存器的情況。CAN_CSR_ERR_SR寄存器的地址、大小和描述均已定義,在寄存器中有5個(gè)字段,定義了名稱、大小和存取權(quán)限。
共享硬件定義的一個(gè)重要因素就是能夠定義外設(shè)寄存器,進(jìn)而言之,則能提供面向寄存器中字段的存取權(quán)限,從而確保調(diào)試器認(rèn)真對待讀/寫可修改的位。硬件給們提供clear-on-read位和zero-to-toggle位以及各種其它晶體管能夠感應(yīng)但是軟件很難應(yīng)付的狀態(tài)處理接口。只有對硬件進(jìn)行良好的機(jī)器生成定義,們才能保證用戶在外設(shè)模塊上調(diào)試寄存器或個(gè)別位時(shí)不至于浪費(fèi)時(shí)間,或?qū)е乱馔饨Y(jié)果。
有了可編程硬件的高級視圖,們不僅能檢查狀態(tài)寄存器和錯(cuò)誤狀態(tài),還能實(shí)現(xiàn)更多功能。舉例來說,如果硬件支持寄存器控制的開關(guān),能實(shí)現(xiàn)外設(shè)I/O到器件引腳的靈活路由,那么軟件開發(fā)人員就能從調(diào)試器操控器件的內(nèi)部布線!有些人聽到這里可能感覺有些嚇人,不過如果SVD信息正確生成,那么們就能限制允許的變化,確保“安全的”編輯,比如說數(shù)字信號上的多路復(fù)用器通道選擇或兩個(gè)物理引腳之間的模擬輸入切換。
硬件工具為軟件開發(fā)人員生成調(diào)試信息,有望顯著縮短應(yīng)用開發(fā)時(shí)間。不僅如此,重要的是,們還有機(jī)會在早期檢測出硬件設(shè)計(jì)錯(cuò)誤,因?yàn)檐浖_發(fā)人員發(fā)現(xiàn)混亂和代碼重寫的不正常情況下更有可能發(fā)現(xiàn)意料之外的行為。
4、面向可編程器件的完整產(chǎn)品
現(xiàn)在,“完整產(chǎn)品”的概念已得到充分地理解和廣泛地接受,也成了成功的重要因素。只有最佳的工具或最出色的芯片已經(jīng)不夠了。們今天使用的可編程解決方案形式多樣:可能是全定制的ASIC,其在高度專業(yè)化的解決方案中集成了ARM內(nèi)核和多個(gè)IP模塊;也可能是更加通用的平臺,其集成了可編程芯片和設(shè)計(jì)工具,諸如Altera和賽靈思推出的FPGA解決方案,或賽普拉斯半導(dǎo)體公司推出的PSoC器件等。雖然這些環(huán)境千差萬別,但都面臨著同樣的問題--不能將硬件修改有效地遷移到軟件領(lǐng)域,從而影響應(yīng)用開發(fā)。
認(rèn)為,這個(gè)問題的根源在于項(xiàng)目中使用的硬件設(shè)計(jì)工具和IDE采用了狹隘的方法。像這樣的軟件狂人(開玩笑)總喜歡把所有問題都?xì)w咎于硬件工具和工程師,但事實(shí)上硬件工具和軟件工具集都太過偏向于他們特定的領(lǐng)域了。很難見到二者添加了以上提到的特性,因?yàn)檫@些特性跟其各自的客戶好像沒什么關(guān)系。相信這種局面正在發(fā)生變化,PSoC Creator等產(chǎn)品支持在可編程硬件上進(jìn)行器件配置同時(shí)還集成第三方IDE(如ARM的Keil μVision IDE)的工具會不斷發(fā)展。在工程師首選的IDE中實(shí)現(xiàn)應(yīng)用開發(fā),同時(shí)讓工具獲得獨(dú)有的強(qiáng)大信息并控制硬件平臺,這顯然是更高效進(jìn)行產(chǎn)品開發(fā)、加速產(chǎn)品上市進(jìn)程的必由之路。與此同時(shí),減少對工程師的折磨也不失為一件大好事!
評論