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