為應用選擇合適的基于ARM內核的微控制器(MCU)有可能是一個復雜的令人望而卻步的任務。目前基于ARM內核的可用微控制器數(shù)量超過125款,尋找一款符合相應外圍設備組合和性能標準的微控制器需要投入大量研究。本白皮書描述如何使用DeviceDatabase中的參數(shù)搜索引擎,為應用快速選擇正確的MCU。
此外,使用DeviceDatabase可以在RVMDK中為選定的MCU部件配置相應的工具。
概述
在嵌入式開發(fā)領域中,對領先競爭對手的需求,結合32位微控制器的出現(xiàn),推動了這些部件在新產(chǎn)品中的廣泛應用,取代過去的8位和16位微控制器。開發(fā)人員在選擇微控制器時,遵循四項主要標準:功能、可用性、成本和熟悉程度。本文中,討論使用聯(lián)機DeviceDatabase幫助開發(fā)人員為其應用作出選擇。我們演示DeviceDatabase如何與RealViewMicrocontrollerDevelopmentKit微控制器開發(fā)套件集成,使開發(fā)人員能自動配置他們的工具鏈,使用選定的MCU進行開發(fā)。
選擇問題
今天,在選擇具備所需外圍設備組合和性能并且價格適當?shù)腗CU時,開發(fā)人員可選的余地很大。生產(chǎn)基于ARM內核的MCU的半導體公司數(shù)量超過16家,其中包括一些全球最大的MCU提供商。每家半導體供應商提供的MCU不只一款,且是針對特定市場領域的一系列MCU。在編寫本文時,共有超過125款基于ARM內核的MCU,而且該數(shù)字每周仍在不斷增長。部分供應商提供一些在線搜索工具,使開人員能對其產(chǎn)品組合中的MCU作出比較和對比。但是如果要比較不同供應商的MCU,它就毫無價值了。我們真正需要的是一個工具,它使開發(fā)人員能對相同產(chǎn)品系列、不同產(chǎn)品系列和不同供應商的MCU作出比較和對比。這正是DeviceDatabase的切入點。
DeviceDatabaseDevice
Database是一個可搜索數(shù)據(jù)庫,該數(shù)據(jù)庫包含KeilTM(ARM公司)軟件開發(fā)工具支持的各種MCU的相關信息,其中包括RealViewMicrocontrollerDevelopmentKit微控制器開發(fā)套件支持的那些基于ARM內核的MCU。DeviceDatabase有兩個版本,一個是/dd上的在線版本,另一個則內建在RVMDK中。只有基于Web的版本提供參數(shù)搜索功能。
該數(shù)據(jù)庫支持以下MCU信息:
除此以外,該數(shù)據(jù)庫還包含指向FindChips.com網(wǎng)站的鏈接,其中列出了不同MCU的經(jīng)銷商。
數(shù)據(jù)庫搜索
可按下列方式在DeviceDatabase中搜索MCU:
架構——顯示支持特定處理器架構的所有MCU。例如,按ARM架構搜索將列出MCU內核中支持ARM架構的所有供應商。
供應商——顯示特定半導體供應商生產(chǎn)的所有MCU。例如,將飛利浦作為供應商進行搜索將列出飛利浦生產(chǎn)的所有MCU系列的MCU。
參數(shù)——允許開發(fā)人員輸入他們要查找的MCU的要求。
使用參數(shù)搜索強大功能
開發(fā)人員最感興趣的可能是DeviceDatabase的參數(shù)搜索功能,它使開發(fā)人員能搜索整個MCU范圍內的特定外圍設備組合和性能標準,而不會受到任何一家處理器供應商的搜索功能限制。使用這種搜索,開發(fā)人員可以迅速確定一個MCU部件或MCU系列,它們可提供最合適的性能、外圍設備組合以及未來可擴展性。
參數(shù)搜索示例
為了展示DeviceDatabase參數(shù)搜索的一些高級功能,我們將使用以下示例。示例:遠程溫度記錄設備我們要創(chuàng)建一個遠程溫度傳感設備,它能持續(xù)記錄來自的信息并將它們存儲在本地?,F(xiàn)場使用時設備應由供電,如果崩潰則應有故障重新啟動功能。通過USB連接設備時,它應該能通過USB轉儲其日志,并同步時鐘以便進一步收集數(shù)據(jù)。基于這些條件,我們可以將MCU要求精簡如下:
如果我們將這些參數(shù)作為參數(shù)搜索輸入DeviceDatabase,我們發(fā)現(xiàn)目前有兩個來自不同MCU供應商、基于ARM內核的MCU系列,每個系列都有四個MCU部件符合上述要求。在不同MCU供應商范圍內使用這種搜索將超過125種MCU的選擇工作縮減到8種。此時,我們可以檢查DeviceDatabase中各個部件項,并根據(jù)更多客觀條件(如過去的經(jīng)驗、文檔清晰性、應用程序庫和示例代碼的相關性,當然還有價格/批量)作出最終決策。RealViewMicrocontrollerDevelopmentKit微控制器開發(fā)套件配置在上述示例中,我們已說明如何在Web上將DeviceDatabase用作獨立工具,根據(jù)特殊應用的MCU選擇作出明智的決策。但DeviceDatabase的用途遠不止此,因為在特殊應用項目的設置階段中也可以使用它。RVMDK包含一個DeviceDatabase版本,在開發(fā)人員著手新項目時調用它。當開發(fā)人員在RVMDK的μVisionIDE中指定DeviceDatabase選擇的MCU時,將使用該MCU的數(shù)據(jù)庫知識自動配置和定制專門針對該MCU的開發(fā)工具這樣可大幅縮短工具設置時間。
自動化工具配置包括下列步驟:
仿真器設置本步驟配置μVision仿真器為相應的MCU建模,包括默認時鐘頻率、指令集、寄存器集、內置ROM和RAM空間以及外圍設備組合。接程序設置本步驟構建一個鏈接程序可讀內存映射或分散文件,它定義鏈接程序應將代碼放到正確地址,告訴MCU仿真器內存映射的布局(仿真器可寫入非內存或只讀內存)。編譯器和匯編器設置本步驟設置編譯器和匯編器,包括包含該MCU的正確頭文件的路徑。將啟動代碼安裝到項目中本步驟預先將相關示例MCU啟動代碼的源代碼安裝到項目開始處,確保在重置后、執(zhí)行應用程序之前將MCU置于明確定義的已知狀態(tài)。除此以外,自動配置可以幫助用戶在第一次使用工具時設置幾個實用默認值,其中包括調試編譯、map文件的生成以及調用圖等。μVisionIDE中“目標GUI”的“選項”中可以顯示所有這些相關選項,包括作為GUI生成的每個工具的GUI可更改選項以及命令行參數(shù)Web上將DeviceDatabase用作獨立工具,根據(jù)特殊應用的MCU選擇作出明智的決策。但DeviceDatabase的用途遠不止此,因為在特殊應用項目的設置階段中也可以使用它。RVMDK包含一個DeviceDatabase版本,在開發(fā)人員著手新項目時調用它。
當開發(fā)人員在RVMDK的μVisionIDE中指定DeviceDatabase選擇的MCU時,將使用該MCU的數(shù)據(jù)庫知識自動配置和定制專門針對該MCU的開發(fā)工具。這樣可大幅縮短工具設置時間。自動化工具配置包括下列步驟:仿真器設置本步驟配置μVision仿真器為相應的MCU建模,包括默認時鐘頻率、指令集、寄存器集、內置ROM和RAM空間以及外圍設備組合。鏈接程序設置本步驟構建一個鏈接程序可讀內存映射或分散文件,它定義鏈接程序應將代碼放到正確地址,并告訴MCU仿真器內存映射的布局(仿真器可寫入非內存或只讀內存)。編譯器和匯編器設置本步驟設置編譯器和匯編器,包括包含該MCU的正確頭文件的路徑。將啟動代碼安裝到項目中本步驟預先將相關示例MCU啟動代碼的源代碼安裝到項目開始處,確保在重置后、執(zhí)行應用程序之前將MCU置于明確定義的已知狀態(tài)。除此以外,自動配置可以幫助用戶在第一次使用工具時設置幾個實用默認值,其中包括調試編譯、map文件的生成以及調用圖等。μVisionIDE中“目標GUI”的“選項”中可以顯示所有這些相關選項,包括作為GUI生成的每個工具的GUI可更改選項以及命令行參數(shù)統(tǒng)、文件系統(tǒng)和聯(lián)發(fā)過程演變?yōu)閷⒏鞣N組件整合在一起,只需較少的組件內部知識或相應外圍設備的知識即可快速構建嵌入式應用程序。ARMRVMDK和RV-RTL提供一套軟件組件,可滿足嵌入式應用程序的諸多常見要求。此外,DeviceDatabase包含許多使用這些軟件組件的示例程序,提供可改編為最終應用的高級模板應用程序。
目標配置
為嵌入式應用程序正確設置目標環(huán)境需要投入相當多的時間。如指南1所述,RVMDK可在項目開始階段為選定微控制器添加特定啟動代碼,使開發(fā)人員的應用程序能在MCU處于明確定義的已知狀態(tài)時開始執(zhí)行。但是,特定MCU上運行的各個應用程序的內存要求和外圍設備行要求相差懸殊,提供的啟動代碼不可能符合開發(fā)人員需要的每種可行設置。一種方法是開發(fā)人員使用一套標準的啟動代碼,逐步修改它直至達到MCU及其資源(如堆棧)需要的狀態(tài)。雖然此方法肯定可以成功,但要耗費大量時間。RVMDK提供另一種方法,即使用配置向導手工修改示例啟動代碼,該向導提供映射到啟動代碼的MCU資源的高級視圖。圖1顯示AtmelAT91M55800A微控制器外部總線接口上兩個芯片選擇寄存器的部分配置。開發(fā)人員可通過修改每項的值輕松啟用和配置特定芯片選擇寄存器。此方法大大簡化了啟動代碼的創(chuàng)建,因為完成配置向導時會自動生成啟動代碼。例如,完成芯片選擇0(CSR0)項時會自動修改下表ARM匯編器常量聲明相關的數(shù)值:
EBI_CSR0_ValEQU0x010024A9
EBI_CSR0_ValEQU0x010024A9
該常量之后用于在啟動代碼中初始化外部總線接口。
配置向導的內幕
配置向導使用簡單標記語言來定義用戶在對話框中看到的內容以及用戶的選擇如何生成數(shù)字和文本項。為此,標記語言可以嵌入C、C++、匯編器源代碼或任何文本文件中。這樣可將配置向導用于使用數(shù)字字符串定義的任意配置。圖2顯示將配置向導用于配置目標系統(tǒng)堆棧大小的示例。圖3顯示該示例的底層標記語言。標記和定義堆棧項及其相關標簽的起點和終點。標記定義數(shù)字范圍內的用戶可編輯項。此示例中要編輯的實際項不明顯,即標記(0x00000000)后的第一個數(shù)字字段。用戶可通過在0后指定一個數(shù)字來定義字段偏移量。
軟件應用程序庫
基于ARM內核的MCU提供的高性能使它們能用于計算更密集的市場領域(相對于8位和16位MCU針對的市場)。成功填補這些市場空缺需要更復雜的軟件。典型的8位應用程序可能包含一個實時操作系統(tǒng)()和一些控制代碼,而的32位MCU應用程序通常包含完整的通信棧,其復雜程度比低級高出一個數(shù)量級。RV-RTL提供一套經(jīng)常需要的軟件組件,可以將它們輕松部署到基于ARM內核的MCU中去。該庫包含一些為其支持的MCU的特殊外圍設備專門優(yōu)化的項,如TCP/IP網(wǎng)絡棧、文件系統(tǒng)、USB設備啟動程序以及CAN設備驅動程序。開發(fā)人員可使用RVMDK中的配置向導快速配置組件。圖4顯將配置向導用于配置棧的示例。RVMDK中的可配置對象包括RTX實時內核,RV-RTL中以源代碼形式提供該內核。這是一款全功能實時內核,提供許多現(xiàn)代中最常見的資源抽象,包括線程、計時器、隊列、郵箱、信號量、互斥體、塊池和事件標記。開發(fā)人員可使用內核來組合實時庫中的組件,以便在目標系統(tǒng)上作為單獨的通信任務來執(zhí)行。
代碼模板和應用程序示例
RVMDK包含幾個針對各個受支持MCU的示例應用程序。開發(fā)人員可將這些示例用作他們的應用程序模板,無需深入了解其選定MCU即可著手開發(fā)。示例涵蓋常見的初始開發(fā)要求,如設置中斷、閃爍或將文本寫入輸出設備以及完成模擬數(shù)據(jù)采集和實時OS示例。RV-RTL還隨附幾個示例應用程序,它們在現(xiàn)實世界典型情況下使用RV-RTL中的組件。它們可以用作整個嵌入式應用程序的基礎。示例包括:
包含CGI腳本的嵌入式Web服務器
電子郵件通知
USB內存設備
USB人機接口設備
USB音頻設備
結論
通過使用基于32位ARM內核的MCU開發(fā)微控制器應用程序,開發(fā)人員能使用之前8位和16位MCU無法實現(xiàn)的方式利用各種現(xiàn)成軟件組件?;贏RM內核的MCU的強大實力和內存尋址功能無需手工編碼匯編器或專用軟件庫。RVMDK和RV-RTL為開發(fā)人員提供了常見軟件組件和示例庫,可用作其應用程序的基礎構建模塊。使用內建的配置向導,可以在RVMDK的μVisionIDE中為所需的應用程序輕松配置目標系統(tǒng)和軟件組件。通過使用這些可配置組件并與實時內核相結合,開發(fā)人員可以更自信地將其應用程序迅速推向市場。