《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 基于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網站原創,未經授權禁止轉載。
主站蜘蛛池模板: 免费看黄色三级毛片 | 99re最新地址精品视频 | 国产精品视频国产永久视频 | 在线视频一区二区三区四区 | 成年人在线播放视频 | 热99re久久精品精品免费 | 天天干天天操天天做 | 色老头在线观看精品 | 成人久久网 | 影音先锋欧美资源 | 一区二区视频在线免费观看 | 成 人 动漫在线观看网站网站 | 国产亚洲人成网站观看 | 国产va精品网站精品网站精品 | 一级片免 | 黄色 在线播放 | 白洁的性荡生活全文 | 色一色综合 | 4444狠狠 | 欧美精品xxx | 五月天婷婷在线播放 | 欧美精品一区二区三区久久 | 色综合久久精品中文字幕 | 艳妇乳肉豪妇荡乳a亚洲 | 久久综合中文字幕一区二区 | 欧美日韩高清观看一区二区 | 国产高清av在线播放 | 午夜电视 | 精品国偷自产在线不卡短视频 | 国产成人精品福利网站人 | 看特级毛片 | 深夜福利视频网站 | 欧美在线导航 | 欧美大陆日韩一区二区三区 | 欧美日韩久久中文字幕 | 亚洲欧美日韩中文综合v日本 | 国产精品成人观看视频国产奇米 | 日日操狠狠干 | 视频一区 在线 | 色综合天天综一个色天天综合网 | 亚洲一区不卡 |