張立為 陳浩 陳堅
【摘要】 嵌入式系統廣泛應用于消費電子、物聯網,工業制造、汽車制造,工業自動化、醫療設備、航空航天及軍事領域。嵌入式系統在現代智能產業中起著舉足輕重,不可替代的關鍵作用。嵌入式系統的核心是主處理器。主處理器的選取是決定嵌入式系統項目成功與否的核心關鍵環節。本文作者試圖總結多年實際工 作中的經驗,對選擇嵌入式系統主處理器時應該注意的幾個關鍵因素加以分享和討論,以供嵌入式系統設計工程師們參考、借鑒。
【關鍵詞】 嵌入式系統 嵌入式主處理器 主處理芯片 智能制造
嵌入式系統的應用非常廣泛,幾乎遍布各個工業領域。而且,隨著現代智能產業大跨步,飛躍式發展趨勢,嵌入式系統在各工業領域的應用再一次呈現爆炸式發展。
嵌入式系統的應用形形色色。其規模,存在方式,復雜程度等都會隨應用的不同而千變萬化。作為嵌入式系統的核心,主處理器的選擇也應當視其所屬系統的規模,作用,復雜程度等而相應變化,評估和選擇合適的嵌入式主處理器成為項目是否成功的關鍵要素。
一、首要選擇因素是項目的設計要求
嵌入式系統項目的設計要求基本上確定了該系統的規模,作用和復雜程度。
項目設計首先要考慮主處理器的性能是否足夠驅動目標應用程序,而衡量嵌入式主處理器的一個關鍵指標為MIPS(million instructions per second,每秒所能處理的百萬指令數),而對應MIPS指標就非常關注主時鐘頻率,其實頻率和MIPS不能直接考慮為等號或者成比例關系。查看STM32F107為ARM 32bit Cortex-M3核,主頻最高為72MHz,1.25 DMIPS/MHz,選擇時候以具體數據為準。還需要進一步考慮的是如果對應的項目在應用層就需要嵌入式處理器消耗較大的任務,需要綜合評估對應的處理器的MIPS能否匹配應用層的需求、是否會犧牲其他子系統的性能?例如《網絡機頂盒播放器》,如果選擇的主處理器沒有硬件視頻解碼能力,就需要考慮軟件解碼和網絡傳輸視頻對處理器占用的比例。
當然,如果設計要求很高的實時性,那么選擇主處理器時就不光要考慮主MIPS、主時鐘頻率而且還要考慮是選單核還是多核芯片。如果設計要求連接多種不同外圍設備,針對特定的處理任務,那就要考慮放棄通用型芯片而多考慮可以滿足多種不同外圍設備的專用處理芯片。
從設計要求的任務可以大致決定系統軟件/固件所需要采用的模式。是否需要多任務OS還是Stand alone編程就可以滿足要求。是否需要考慮uCOS III這樣的RTOS, 或者嵌入式Linux系統?主處理器的選擇需要配合系統軟件/固件模式的選擇。由于項目的設計往往對啟動時間有要求,如果一個帶液晶顯示器(LCD)的產品,2-3分鐘內LCD還處于黑屏狀態,這樣的設計就表現為比較糟糕。所以在選擇主處理器的時候還需要關注是否支持NOR /NAND/SD卡等不同的啟動模式及對應的啟動速度,能尋址最大的DRAM、SRAM、NOR、NAND等存儲器的存儲地址空間范圍。
從嵌入式系統項目的規模上看,微/小型類應用采用低/中端單核芯片即可勝任,這樣的應用無需太多種類的外圍驅動支持。也無需多任務OS, Stand alone編程即可。一般類規模的應用可能需用高端單核處理器(如TI AM335x),或雙核處理器(如ZYNQ-7000)。這樣的項目需要一定種類的外圍驅動支持。OS可選Stand alone,uCOS III, 或者嵌入式Linux系統。而復雜類的嵌入式系統應用就需雙核處理器(如ZYNQ-7000),需較多種類的外圍驅動支持。OS首選嵌入式Linux系統,或uCOS III。 高端移動通信設備類應用則需要通用型雙核甚至多核高速處理器。它們需要一定種類的外圍驅動支持。OS首選Android, iOS等。
項目的設計要求會對外圍設備提出各種要求。例如要求GBit的以太網,USB OTG, I2C總線支持等。是否需要電池?有電池則需考慮電源管理。主處理器及周邊支持硬件必須滿足這些要求。有時候我們非常關注了主芯片的價格,而遺漏了外圍的成本。是否在主芯片選擇上節約了1美元,有可能導致在外圍電子元器件上多花費2美元,這個是需要明確主處理器內置了多少控制器?同時,由于芯片都是要焊接在PCB上,主芯片的管腳個數及封裝也是選擇的一個重要點,有可能會帶來PCB層數的增加、焊接密集度增高、批量生產的穩定性降低。在明確了主芯片的性能、接口等技術細節后,還需要考慮對應的主處理器的行業定位,這涉及到產品的硬件可靠性和可行性。一般來說商業級的主處理器,使用在工業級、汽車級,或者航空級是非常不合理的。當然在認可價格體系的前提下,把航空級別的主芯片應用在商業級的產品中性能是有保證的。同時由于嵌入式處理器細分了處理器市場,所以智能手機、航天應用、工業控制、消費類電子、POS機等等這些行業,當我們項目設計的需求非常清晰的應用在這個行業,就優先選擇對應的行業主芯片,這樣的選擇是可行的,由于每個行業的特殊性,細節還是有差別的。作者幾年前參與一個移動POS項目,從技術緯度采用消費類產品方案疊加打印機從理論上是可行的,但隨著項目的深入,發現需要在消費類主芯片上花費很大的技術工作完成對各種銀行卡協議的支持,但對應在POS機行業的主芯片就是他們的強項。至此,主處理芯片的基本選擇原則和范圍就可以大致圈定了,選擇考慮的重點為性能、操作系統支持、封裝、接口、行業定位和可靠性。
二、處理芯片的市場特性
進一步的就要了解考慮中的芯片是否成熟?是否已經被業界或應用市場所認可?還需要了解業界采用該芯片的反應如何?滿意程度高嗎?尤其要關注不滿意的方面是和芯片本身設計相關嗎?芯片設計有硬件缺陷嗎?對硬件缺陷是否已經提供軟件補丁彌補?
作者幾年前曾經參與的一個嵌入式系統項目設計選用的是一款當時剛發布不久的雙核處理器。其性能,價格等都滿足我們的評估。研發過程也相對比較順利。到了研發后期進行產品強化測試時發現有的產品運行一段時間后會死機。而且沒有明顯規律可供查詢故障起因。花了大量人力,精力和時間,最終同廠家共同確定了故障起因是芯片設計缺陷造成的。而且,該硬件缺陷并未出現在廠家的芯片缺陷報告中。這是一個選取最新產品而后引發不良后果的經驗教訓。雖然最終問題得以解決,但我們耗時耗力也不得不推后了產品推出的日期。所以選擇新發布的產品有可能會承擔一定的風險。
芯片的標準性,規范性如何?是否采用通用規范?比如ARM架構。芯片市場保障周期如何?如果芯片在比如說3年后將停止供貨,怎么辦?消費電子,個人移動通訊設備如智能手機等市場更新很快,供貨保障周期算不上需要嚴重考慮的問題。可是其它行業比如醫療設備則有可能會有一個較長的從產品研發成功到測試,以及獲得上市認證許可(譬如美國FDA)等待期間。研發需幾個月至1-2年,加上測試和申請許可需幾個月至1年,加起來會有2到3年的時間。這些就需要考慮在供貨保障周期之內。
總之,對應市場特性,成本就是非常敏感的指標。對應主芯片廠商能否有完備的商業計劃,主芯片廠商的企業能否健康發展?能否提供引腳兼容的系列化芯片供升級或者替換?選擇考慮的重點為商業計劃、供應體系、生命周期。
三、系統開發環境和技術支持
芯片生產廠家是否提供系統開發環境?該環境是否對用戶友好?環境是否便于使用,是否宜于學習掌握?是否提供足夠的功能幫助開發人員編程,調試,版本控制等。所需花費如何?是否需要交技術支持年費?
芯片生產廠家對芯片硬件和開發環境的技術支持力度如何?尋求技術求助是否得到快速回復,是否及時解答疑問,幫助解決問題等等。
作者曾經初步選擇并測試過一家國際知名公司的一款新出品的功能比較強勁的嵌入式主處理器。在對該芯片進行基本應用測試的初期,尋求技術問題解答就未曾得到及時回復。公司提供的系統開發環境并不算對用戶友好。需要研發人員自己花很多時間才能通過上網找到所要的答案。感覺很不好,也很花時間。最后不得不決定放棄該芯片而選用其他公司的產品。
在決定選用主處理器前,運用其開發環境對目標芯片作多方面的測試,了解和評估是很有必要的。盡早設定一些技術要點,向芯片供應商的技術支持確定答案會幫助自己了解該處理器的應用特性,同時也確認技術支持的力度。
四、項目開發周期及人員培訓
選用嵌入式主處理器還應該考慮是否影響項目開發周期。研發人員學習和熟練掌握開發環境所需要花費的時間,技術培訓要求是否復雜,供應商是否有比較成熟的樣板程序供參考使用等等。這些因素對短期,乃至中長期項目的研發都會有影響。選擇提供標準開發環境的嵌入式主處理器會幫助我們縮短項目開發周期和研發人員技術培訓時間。比如選擇可以提供基于Eclipse的開發環境就是目前業界比較標準的平臺。以該嵌入式主處理器為基礎的硬件設計是否可以搭建成參照類/標準類研發平臺?如果可以的話,這將充分發揮其作用而使公司其他類似研發項目可以從中受益。所以嵌入式主處理器的選擇應該盡可能地爭取考慮可以搭建成標準型研發平臺。
五、實用綜合案例說明
舉一個實用案例。要求設計一個分布式多通道鏡頭圖像測量處理系統。該系統要求各測量單元和控制單元要在時間上精密同步。
IEEE1588 PTP是基于局部以太網的精密時間同步協議。基于所設計的系統對測控單元在時間上有精密同步的要求,選擇支持IEEE1588 PTP的主處理器毫無疑問是必要的。支持以太網也是必不可少的。之外,嵌入式Linux系統配有豐富周邊設備驅動支持,有實時處理能力,具備很強的靈活性。所以它是該項目OS的優選目標之一。(圖1)
處理多通道鏡頭圖像需要較強的芯片運算處理能力。數據傳輸量大就需要快速DMA 的配合。應該考慮選擇雙核或多核芯片。再結合了解和分析市場現有嵌入式處理器的供貨情況,以ARM為核心的Xilinx ZYNQ雙核處理器很好的集成了應用處理單元和可編程邏輯單元并支持眾多外圍設備總線。這些特性強有力的支持項目對多通道鏡頭圖像采集通訊和數據處理的要求。它支持高速以太網并配有對IEEE1588 PTP協議的支持。(圖2)
而且,Xilinx和PetaLinux相配合提供了比較完善的嵌入式Linux系統交叉編譯環境。為應用軟/固件的研發提供了良好的開發平臺。
綜合以上考慮,該系統可以考慮采用Xilinx ZYNQ芯片并由嵌入式Linux來完成系統應用。
六、結論
嵌入式系統主處理器是系統的核心部件。選擇嵌入式系統主處理器需要綜合考慮各種因素。其中重點要考慮項目的設計要求,處理芯片的成熟度、可靠性等關鍵市場特性,系統開發環境和技術支持,以及開發人員對處理芯片和系統開發環境的熟悉程度與學習周期等。
只有充分的考慮了這些因素并加以研究分析才能更好地確定項目所需的處理芯片。盡可能地減少研發后期可能出現的問題,以及有效的降低項目研發和生產成本。