《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 基于CMSIS標準的Cortex-M3的應用軟件開發
基于CMSIS標準的Cortex-M3的應用軟件開發
摘要: 本文闡述了基于CMSIS標準的軟件架構、規范,并通過一個實例更加清晰地解讀了CMSIS作為一個新的基于Cortex-M核處理器系列的軟件開發標準所具有的巨大潛力。它不僅降低了軟件開發的難度,更減少了軟件開發的成本。因此,工程師盡早掌握CMSIS標準,對進行基于Cortex-M3處理器的軟件開發會大有幫助。
Abstract:
Key words :

  引 言

  ARM公司于2008年11月12日發布了ARM Cortex微控制器軟件接口標準(CMSIS:Cortex Microcon-troller Software InteRFace Standard)。CMSIS是獨立于供應商的Cortex-M處理器系列硬件抽象層,為芯片廠商和中間件供應商提供了連續的、簡單的處理器軟件接口,簡化了軟件復用,降低了Cortex-M3上操作系統的移植難度,并縮短了新入門的微控制器開發者的學習時間和新產品的上市時間。

  根據近期的調查研究,軟件開發已經被嵌入式行業公認為最主要的開發成本。圖1為近年來軟件開發與硬件開發成本對比圖。因此,ARM與Atmel、IAR、Keil、hami-nary Micro、Micrium、NXP、SEGGER和ST等諸多芯片和軟件廠商合作,將所有Cortex芯片廠商產品的軟件接口標準化,制定了CMSIS標準。此舉意在降低軟件開發成本,尤其針對新設備項目開發,或者將已有軟件移植到其他芯片廠商提供的基于Cortex處理器的微控制器的情況。有了該標準,芯片廠商就能夠將他們的資源專注于產品外設特性的差異化,并且消除對微控制器進行編程時需要維持的不同的、互相不兼容的標準的需求,從而達到降低開發成本的目的。

 

  1 基于CMSIS標準的軟件架構

  如圖2所示,基于CMSIS標準的軟件架構主要分為以下4層:用戶應用層、操作系統及中間件接口層、CMSIS層、硬件寄存器層。其中CMSIS層起著承上啟下的作用:一方面該層對硬件寄存器層進行統一實現,屏蔽了不同廠商對Cortex-M系列微處理器核內外設寄存器的不同定義;另一方面又向上層的操作系統及中間件接口層和應用層提供接口,簡化了應用程序開發難度,使開發人員能夠在完全透明的情況下進行應用程序開發。也正是如此,CMSIS層的實現相對復雜。

 

  CMSIS層主要分為3部分。

  ①核內外設訪問層(CPAL):由ARM負責實現。包括對寄存器地址的定義,對核寄存器、NVIC、調試子系統的訪問接口定義以及對特殊用途寄存器的訪問接口(如CONTROL和xPSR)定義。由于對特殊寄存器的訪問以內聯方式定義,所以ARM針對不同的編譯器統一用_INLINE來屏蔽差異。該層定義的接口函數均是可重入的。

  ②中間件訪問層(MWAL):由ARM負責實現,但芯片廠商需要針對所生產的設備特性對該層進行更新。該層主要負責定義一些中間件訪問的API函數,例如為TCP/IP協議棧、SD/MMC、USB協議以及實時操作系統的訪問與調試提供標準軟件接口。該層在1.1標準中尚未實現。

  ③設備外設訪問層(DPAL):由芯片廠商負責實現。該層的實現與CPAL類似,負責對硬件寄存器地址以及外設訪問接口進行定義。該層可調用CPAL層提供的接口函數,同時根據設備特性對異常向量表進行擴展,以處理相應外設的中斷請求。

  2 CMSIS規范

  (1)文件結構

  CMSIS的文件結構如圖3所示(以STM32為例)。其中stdint.h包括對8位、16位、32位等類型指示符的定義,主要用來屏蔽不同編譯器之前的差異。core_cm3.h和core_cm3.C中包括Cortex_M3核的全局變量聲明和定義,并定義一些靜態功能函數。system_.h和system_.c(即圖3中的system_stm32.h和system_stm32.c)是不同芯片廠商定義的系統初始化函數SystemInit(),以及一些指示時鐘的變量(如SystemFre-quency)。.h(即圖3中的stm32.h)是提供給應用程序的頭文件,它包含core_cm3.h和system_.h,定義了與特定芯片廠商相關的寄存器以及各中斷異常號,并可定制M3核中的特殊設備,如MCU、中斷優先級位數以及SysTick時鐘配置。雖然CMSIS提供的文件很多,但在應用程序中只需包含h。

 

  (2)工具鏈

  CMSIS支持目前嵌入式開發的三大主流工具鏈,即ARM ReakView(armcc)、IAR EWARM(iccarm)以及GNU工具鏈(gcc)。通過在core_cm3.C中的如下定義,來屏蔽一些編譯器內置關鍵字的差異。

 

  這樣,CPAL中的功能函數就可以被定義成靜態內聯類型(static_INLINE),實現編譯優化。

  (3)中斷異常

  CMSIS對異常和中斷標識符、中斷處理函數名以及中斷向量異常號都有嚴格的要求。異常和中斷標識符需加后綴_IRQn,系統異常向量號必須為負值,而設備的中斷向量號是從0開始遞增,具體的定義如下所示(以STM32為例):

  CMSIS對系統異常處理函數以及普通的中斷處理函數名的定義也有所不同。系統異常處理函數名需加后綴_Handler,而普通中斷處理函數名則加后綴_IRQHandler。這些異常中斷處理函數被定義為weak屬性,以便在其他的文件中重新實現時不出現重復定義的錯誤。這些處理函數的地址用來填充中斷異常向量表,并在啟動代碼中給以聲明,例如:NMI_Handler、MemManage_Handler、SysTick_Handler、WWDG_IRQHandler等。
 


 

此內容為AET網站原創,未經授權禁止轉載。
主站蜘蛛池模板: 亚洲爆乳无码专区www| 国产午夜电影在线观看| 一级黄色毛片播放| 最近高清中文字幕在线国语5 | 99这里只有精品66视频| 日本中文字幕网| 亚洲国产精品线在线观看| 精品人人妻人人澡人人爽人人| 国产成人A亚洲精V品无码| 999在线视频精品免费播放观看| 成人精品国产亚洲欧洲| 五月天久久婷婷| 欧美精品videosbestsexhd4k| 印度精品性hd高清| 青青草国产精品欧美成人| 国产精品无码素人福利不卡| www.日韩av.com| 无码无套少妇毛多18pxxxx| 亚洲av日韩综合一区尤物| 毛片在线看免费版| 内射在线Chinese| 菠萝蜜视频在线观看| 国产欧美日韩在线观看无需安装| 98久久人妻无码精品系列蜜桃| 岛国大片在线播放| 久久久久久亚洲精品无码| 最新国产午夜精品视频成人| 亚洲欧洲成人精品香蕉网| 男女一级毛片免费播放| 嘟嘟嘟www在线观看免费高清| 香蕉国产人午夜视频在线| 欧美6699在线视频免费| 免费久久精品国产片香蕉| 菠萝蜜视频在线观看免费视频| 国产真实伦在线观看| 91资源在线播放| 女人182毛片a级毛片| 中国jizz日本| 日本一在线中文字幕天堂| 亚州三级久久电影| 欧美成人一区二区三区在线观看 |