多核SoC的嵌入式軟件開發(fā)
與幾年前相比,生產嵌入式應用產品的oem感受到了越來越大的市場壓力,產品的新功能和新特性、業(yè)界新標準、市場供求、用戶對低功耗甚至零功耗的不斷追求,以及產品成本等越來越多的因素都會對典型嵌入式設計產生影響,這使得目前市場上的各種應用產品,從純粹的消費電子(如蜂窩電話、mp3播放器、數(shù)碼相機)到基礎設備(基站、電話系統(tǒng)、wan交換機等),都產生了變化,這些變化促使研發(fā)人員開發(fā)更加完善和復雜的軟件,并在高端產品上使用大量的fpga。這些變化同時也將設計者推向了asic/soc與非傳統(tǒng)硬件模型——多核設計。
多核系統(tǒng)的特點和優(yōu)缺點
asic/soc具有較高的集成度,適合低功耗的特殊應用,但多數(shù)注重成本的設計都會包含更多的功能特性與可編程的元素,這與行業(yè)標準和協(xié)議的不斷改變密不可分,無論是gsm電話、mp3、divx/mpeg4、dsl/cable調制解調器,還是無線局域網或者其他任何產品標準,其協(xié)議都以非??斓乃俣茸兓?,但顧客并不希望頻繁升級硬件,從生產成本(工具、流水線的建立等)角度來考慮,對單一產品平臺重復使用是非常必要的,這意味著系統(tǒng)對軟件的要求更高了,因此也需要更多的軟硬件協(xié)作。
軟硬件交互過程勢必使系統(tǒng)集成時間延長,并產生大量的、只能針對特定硬件使用的軟件、因此大量的可編程微處理器被加入到系統(tǒng)中,雖然只要處理器的速度足夠快,軟硬件交互引起的性能下降問題都可以迎刃而解,但是無論從成本還是功能來看,提高處理器的主頻換取性能都是一種及其“不經濟”的解決方案。
一個典型的例子就是利用dsp處理連續(xù)數(shù)據的應用。開發(fā)者完全可以利用一個低端dsp芯片來處理標準的媒體流協(xié)議。相對于由高端處理器組成的系統(tǒng),這種方法的功耗損失非常小,而且可降低系統(tǒng)成本,dsp的特定指令集與專用存儲器,總線結構使其能夠完成較復雜的數(shù)字處理算法,但是這些特性往往不支持高級語言,因此基于dsp的很多應用必須采用匯編語言來編碼。
由于不同dsp的匯編指令與編程模型不同,所以dsp之間的代碼移植非常困難,這已成為應用開發(fā)的瓶頸,為解決這個瓶頸,一種方案是根據功能將應用代碼分為兩部分:必須由dsp執(zhí)行的代碼和可以被其他處理器執(zhí)行的代碼,dsp只需要處理前者即可,這樣就出現(xiàn)了多核(多處理器)設計。
典型的多核系統(tǒng)將應用代碼分成兩個主要部分:控制與用戶接口代碼,不間斷處理代碼??刂朴脩艚涌诓糠诌\行在arm微處理器上,不間斷處理代碼運行在dsp上或者第二個arm內核上(見上圖)。由于以下一些原因,這種模型非常有意義。
1、開發(fā)者可以使用高級語言,如c/c++或者java對微處理器進行編程,基于dsp的很多應用都必須使用匯編語言來編碼,而很多其他處理器,如arm則沒有這些限制。
2、在微處理器上運行rtos或者os,可以更加充分利用微處理器的優(yōu)勢(合理地中斷響應時間、大量的存儲資源、虛擬的或者被保護的存儲器、簡單的上下文切換操作等)。
3、dsp對不間斷處理得代碼有很好的支持,如果控制用戶接口代碼與不間斷工作的代碼都由同一個處理器來執(zhí)行的話,頻繁的中斷(連續(xù)的切換)會導致系統(tǒng)功耗非常大,而且,dsp往往有很多特殊功能,可以加速數(shù)據移動與處理操作(dma、雙端口存儲器、針對濾波處理的mac、針對fft與編碼的位操作,索引查找表、針對內部/外部器件訪問的分離總線結構等)。
4、兩個不同的內核可分別獨立運行。這意味著當不需要執(zhí)行任何操作時,微處理器可進入休眠狀態(tài)(喚醒微處理器的方式可以是:定時器、刷新lcd的按鍵、電池電量檢查等)。
5、兩種處理器可以使用不同的總線模型。
6、兩種處理器芯片可以通過共享的片外存儲器、中斷、油箱、串口、fifo、或者其他連接方式進行通信,并且所有通信機制不但支持松耦合,而且支持緊耦合同步。
但是,多核解決方案的主要弊端是增加了交互軟件設計與調試應用程序的復雜性。
多核系統(tǒng)的設計方案
系統(tǒng)設計之初,設計人員必須對如何滿足系統(tǒng)所有需要有一個總體的規(guī)劃,如果可能,設計人員還應該預留一部分系統(tǒng)資源以備將來功能的擴展。
1、硬件總體設計
硬件總體設計是指對系統(tǒng)基本器件的選擇與配置,出主要處理器的類型、主要通信配置、如何使用、用戶接口的選擇等。
2、軟件總體設計
在大多數(shù)嵌入式應用中,軟件設計在很大程度上依賴于的硬件配置,部分軟件模塊與系統(tǒng)軟件聯(lián)系并不緊密,程序員可以將其模塊化,此外還有很多模塊與底層硬件直接聯(lián)系,很難模塊化。
目前通常的做法是講盡可能多的與硬件相關的軟件模塊隔離成為hal(硬件提取層)的形式進行處理,既然處理器的速度足夠快,存儲器相對便宜。那么hal的使用是安全可行的,在設計中,使用rtos或者其他標準軟件非常重要。
3、開發(fā)工具與資源
這方面的具體內容包括jtag訪問,交叉觸發(fā)、邏輯分析儀或者實時跟蹤,以及明顯反應芯片內部狀態(tài)的輸出管腳等,使用支持多核調試的調試器與仿真器,如realview
debugger與realview ice,系統(tǒng)的調試過程會變得非常簡單,利用realview debugger,開發(fā)人員可以同時對兩個處理器進行調試,此外,realview
debugger帶有同步功能,可以使兩個處理器內核同時啟動或者停止。
處理器的造型
處理器的選型受多種因素的影響,對多核系統(tǒng),尤其是arm+dsp系統(tǒng)(雖然dsp可以由支持或者不支持dsp功能的微處理器,微控制器來代替),進行處理器選型時主要考慮以下幾點:
1、處理外部事件需要的響應時間;
2、致力于實時算法的應用代碼數(shù)量。例如,將mp3播放器與無線電話中的音頻處理功能模塊相比較,前者的功耗遠遠小于后者,其原因是mp3播放器僅僅需要解碼音頻流,產生相應的正確信號,并發(fā)送到模擬輸出單元即可,而無線電話必須處理與mp3播放器相比低的多的外部比特率,這迫使處理器必須完成更多工作來實現(xiàn)壓縮/解壓縮、解碼/解碼,并應用濾波/聲音合成,以最終達到合乎要求的音質。
此外,無線電話中的音頻處理很可能需要進行協(xié)議的轉換,當然,硬件方面的支持可以代替處理器的一部分工作,mp3播放器不是一個實時系統(tǒng),它可以使用簡單預取緩存來減少響應時間,而無線電話必須在相對較短的時間窗口內(或者音質下降不甚明顯時)對信號進行處理。
3、相比軟件處理,采用硬件可以達到更好效果的應用模塊的數(shù)量,當標準變化比較快時,修改軟件是一種比較安全的做法,這樣可以避免改動新產品的物理設計,但當標準相對比較穩(wěn)定時,采用最合適的硬件可使成本降到最低,并且能在相同功耗或價格的基礎上使系統(tǒng)達到最高性能。
4、對算法要求較高的應用的數(shù)量,dsp的獨特設計使其有以下三點特殊功能,能夠高效地處理迭代算法,特別是乘加運算(mac);能夠迅速地傳輸數(shù)據(接收外設輸入,并在處理循環(huán)之后將數(shù)據返還到外設輸出);能夠與外設緊密交互。
5、市場對價格與功耗的靈敏度。
針對這些需求,arm處理器的功能越來越強大,其應用也越來越廣。例如新一代arm內核提供了對dsp擴展指令的支持(如arm9e)。部分arm芯片可以被用作微控制器,擁有微控制器的一系列特性,例如緊密耦合的片上外設,增強的位訪問與控制,大容量片內存儲器,片內flash、多種片內外設,等待狀態(tài)控制和向量中斷等,arm處理器還開始支持真正的可變時鐘頻率。
在具體芯片設計完成之前,用于原型平臺的開發(fā)板可以幫助開發(fā)人員對多核系統(tǒng)進行驗證。通常,這些板大多使用特定的總線結構進行連接,使用fpga仿真部分外設、存儲器以及部分總線模型。integrator是acm提供的原型驗證平臺,它提供對多核系統(tǒng)的支持。
系統(tǒng)設計之初,設計人員必須對任何滿足系統(tǒng)所有需要有一個總體的規(guī)劃。
更進一步,當硬件平臺還沒就緒時,很多設計只能通過仿真來開發(fā)軟硬件模型和應用算法,對于多核系統(tǒng)來說,仿真的方法并不是很多,arm公司的soc
designer工具可以將armulator仿真與特定的dsp仿真進行綁定,類似于soc designer的產品同樣也支持使用c語言編寫的硬件模型進行聯(lián)合仿真。
同時,某些仿真甚至可以直接仿真中加入純粹的行為元素,很多仿真的速度非???,幾乎與真正芯片的速度相同(因為pc機的主頻非常高),通過仿真,開發(fā)人員可以得到系統(tǒng)硬件的許多內部狀態(tài)信息,以實現(xiàn)更好的設計。
評論