CMSIS標(biāo)準(zhǔn).ppt_第1頁(yè)
CMSIS標(biāo)準(zhǔn).ppt_第2頁(yè)
CMSIS標(biāo)準(zhǔn).ppt_第3頁(yè)
CMSIS標(biāo)準(zhǔn).ppt_第4頁(yè)
CMSIS標(biāo)準(zhǔn).ppt_第5頁(yè)
已閱讀5頁(yè),還剩11頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

CMSIS標(biāo)準(zhǔn)簡(jiǎn)介 武漢理工大學(xué)UP研發(fā)中心張國(guó)琛 CMSIS CMSIS簡(jiǎn)介CMSIS架構(gòu)CMSIS文件結(jié)構(gòu)CMSIS支持的工具鏈CMSIS中的中斷定義CMSIS中的編程約定CMSIS實(shí)例總結(jié) CMSIS的簡(jiǎn)介 Cortex微控制器軟件接口標(biāo)準(zhǔn) CortexMicrocontrollerSoftwareInterfaceStandard 是ARM和一些編譯器廠家以及半導(dǎo)體廠家共同遵循的一套標(biāo)準(zhǔn) 是由ARM提出 專門(mén)針對(duì)CORTEX M系列的標(biāo)準(zhǔn) 在該標(biāo)準(zhǔn)的約定下 ARM和芯片廠商會(huì)提供一些通用的API接口來(lái)訪問(wèn)CORTEX內(nèi)核以及一些專用外設(shè) 以減少更換芯片以及開(kāi)發(fā)工具等移植工作所帶來(lái)的金錢(qián)以及時(shí)間上的消耗 只要都是基于M3的芯片 代碼均是可以復(fù)用的 CMSIS簡(jiǎn)介 根據(jù)近期的研究調(diào)查 發(fā)現(xiàn)在嵌入式開(kāi)發(fā)領(lǐng)域 軟件的花費(fèi)在不斷提高 相反硬件的花費(fèi)卻逐年降低 因此嵌入式領(lǐng)域的公司 越來(lái)越把精力放到了軟件上 但軟件在更換芯片或是開(kāi)發(fā)工具的更新?lián)Q代中 代碼的重用性不高 隨著CORTEX M3處理器大量投放市場(chǎng) ARM意識(shí)到建立一套軟件開(kāi)發(fā)標(biāo)準(zhǔn)的重要性 因此CMSIS應(yīng)運(yùn)而生 CMSIS的架構(gòu) CMSIS可以分為以下3個(gè)基本功能層核內(nèi)外設(shè)訪問(wèn)層CorePeripheralAccessLayer CPAL 中間件訪問(wèn)層MiddlewareAccessLayer MWAL 設(shè)備訪問(wèn)層DevicePeripheralAccessLayer DPAL CMSIS架構(gòu) CMSIS的架構(gòu)如下圖所示 CMSIS架構(gòu) CorePeripheralAccessLayer CPAL 該層用來(lái)定義一些CORTEX M處理器內(nèi)部的一些寄存器地址以及功能函數(shù) 如對(duì)內(nèi)核寄存器 NVIC 調(diào)試子系統(tǒng)的訪問(wèn) 一些對(duì)特殊用途寄存器的訪問(wèn)被定義成內(nèi)聯(lián)函數(shù)或是內(nèi)嵌匯編的形式 該層的實(shí)現(xiàn)由ARM提供 MiddlewareAccessLayer MWAL 該層定義訪問(wèn)中間件的一些通用API 該層也由ARM負(fù)責(zé)實(shí)現(xiàn) 但芯片廠商需要根據(jù)自己的設(shè)備特性進(jìn)行更新 目前該層仍在開(kāi)發(fā)中 還沒(méi)有更進(jìn)一步的消息 DevicePeripheralAccessLayer DPAL 該層和CPAL層類似 用來(lái)定義一些硬件寄存器的地址以及對(duì)外設(shè)的訪問(wèn)函數(shù) 另外芯片廠商還需要對(duì)異常向量表進(jìn)行擴(kuò)展 以實(shí)現(xiàn)對(duì)自己設(shè)備的中斷處理 該層可引用CPAL層定義的地址和函數(shù) 該層由具體的芯片廠商提供 CMSIS文件結(jié)構(gòu) CMSIS首先對(duì)文件名的定義給出了標(biāo)準(zhǔn)core cm3 hCortex M3globaldeclarationsanddefinitions staticfunctiondefinitionscore cm3 cCortex M3globaldefinitions hTop levelheaderfile devicespecific Tobeincludedbyapplicationcode Includescore cm3 handsystem hsystem hDevicespecificdeclarationssystem cDevicespecificdefinitions e g SystemInit 應(yīng)用程序只需包含 h即可 以STM32為例 來(lái)看下相關(guān)的文件名定義 以及它們的相互關(guān)系 由于CORTEX M3有一些可選硬件如MPU 在中包含core cm3 h和system h時(shí)需注意以下一點(diǎn) 以STM32 h為例 ConfigurationoftheCortex M3ProcessorandCorePeripherals define MPU PRESENT0 中給以實(shí)現(xiàn) CMSIS支持的工具鏈 CMSIS目前支持三大主流的工具鏈 即ARMRealView armcc IAREWARM iccarm andGNUCompilerCollection gcc 在core cm3 h中有如下定義 definecompilerspecificsymbols ifdefined CC ARM define ASM asm asmkeywordforarmcc define INLINE inline inlinekeywordforarmcc elifdefined ICCARM define ASM asm asmkeywordforiarcc define INLINEinline inlinekeywordforiarcc OnlyavaiableinHighoptimizationmode define nop no operation nooperationintrinsiciniarcc elifdefined GNUC define ASMasm asmkeywordforgcc define INLINEinline inlinekeywordforgcc endif MISRA C CMSIS要求定義的API以及編碼與MISRA C2004規(guī)范兼容 MISRA C是由MotorIndustrySoftwareReliabilityAssociation提出的 意在增加代碼的安全性 該規(guī)范提出了一些標(biāo)準(zhǔn) 如Rule12 不同名空間中的變量名不得相同 Rule13 不得使用char int float double long等基本類型 應(yīng)該用自己定義的類型顯示表示類型的大小 如CHAR8 UCHAR8 INT16 INT32 FLOAT32 LONG64 ULONG64等 Rule37 不得對(duì)有符號(hào)數(shù)施加位操作 例如1 4將被禁止 必須寫(xiě)1UL 4 CMSIS中的中斷定義 中斷號(hào)的定義 在中typedefenumIRQn Cortex M3ProcessorExceptionsNumbers NonMaskableInt IRQn 14 2NonMaskableInterrupt MemoryManagement IRQn 12 4Cortex M3MemoryMgmtInterrupt BusFault IRQn 11 5Cortex M3BusFaultInterrupt UsageFault IRQn 10 6Cortex M3UsageFaultInterrupt SVCall IRQn 5 11Cortex M3SVCallInterrupt DebugMonitor IRQn 4 12Cortex M3DebugMonitorInterrupt PendSV IRQn 2 14Cortex M3PendSVInterrupt SysTick IRQn 1 15Cortex M3SystemTickInterrupt DevicespecificInterruptNumbers UART IRQn 0 ExampleInterrupt IRQn Type 系統(tǒng)級(jí)的異常號(hào)已經(jīng)確定 不能更改 且必須為負(fù)值 以和設(shè)備相關(guān)的中斷區(qū)別 CMSIS的中斷定義 中斷處理函數(shù)的定義 一般在啟動(dòng)代碼中聲明 加入weak屬性 因此可在其他文件中再一次實(shí)現(xiàn) 如下所示 AREARESET DATA READONLYEXPORT Vectors VectorsDCD initial sp TopofStackDCDReset Handler ResetHandlerDCDNMI Handler NMIHandlerDCDHardFault Handler HardFaultHandlerDCDMemManage Handler MPUFaultHandlerDCDBusFault Handler BusFaultHandlerDCDUsageFault Handler UsageFaultHandlerDCD0 ReservedDCD0 ReservedDCD0 ReservedDCD0 ReservedDCDSVC Handler SVCallHandlerDCDDebugMon Handler DebugMonitorHandlerDCD0 ReservedDCDPendSV Handler PendSVHandlerDCDSysTick Handler SysTickHandler ExternalInterruptsDCDWWDG IRQHandler WindowWatchdog CMSIS的編程約定 1 標(biāo)識(shí)符CoreRegisters PeripheralRegisters CPUInstructions 用大寫(xiě)字母定義例如 NVIC AIRCR GPIOB LDMIAEQ外設(shè)訪問(wèn)函數(shù)以及中斷和中斷處理函數(shù)用大小寫(xiě) CamelCase 定義例如 SysTickConfig DebugMonitor IRQn對(duì)一些外設(shè)的操作函數(shù)前面講相應(yīng)的前綴例如 ITM SendChar NVIC SystemReset 2 注釋 briefEnableInterruptinNVICInterruptController paramIRQn TypeIRQnspecifiestheinterruptnumber returnnone EnableadevicespecificinteruptintheNVICinterruptcontroller Theinterruptnumbercannotbeanegativevalue CMSIS實(shí)例 include stm32 h include main h volatileunsignedintseconds

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論