天天看點

CMSIS 到底是什麼?

CMSIS 到底是什麼?

 CMSIS 到底是什麼?

先來看看ARM公司對CMSIS的定義:

ARM® Cortex™ 微控制器軟體接口标準 (CMSIS) 是 Cortex-M 處理器系列的與供應商無關的硬體抽象層。CMSIS 可實作與處理器和外設之間的一緻且簡單的軟體接口,進而簡化軟體的重用,縮短微控制器開發人員新手的學習過程,并縮短新裝置的上市時間。

軟體的建立是嵌入式産品行業的一個主要成本因素。通過跨所有 Cortex-M 晶片供應商産品将軟體接口标準化(尤其是在建立新項目或将現有軟體遷移到新裝置時),可以大大降低成本。

我們知道,不同廠家,比如FSL,ST,Energy Micro等不同廠家的核心都是使用Cortex M,但是這些MCU的外設卻大相徑庭,外設的設計、接口、寄存器等都不一樣,是以,一個能夠非常熟練使用STM32軟體程式設計的工程師很難快速地上手開發一款他不熟悉的,盡管是Cortex M核心的晶片。而CMSIS的目的是讓不同廠家的Cortex M的MCU至少在核心層次上能夠做到一定的一緻性,提高軟體移植的效率。

1. CMSIS的結構:

CMSIS 包含以下元件:

  • CMSIS-CORE:提供與 Cortex-M0、Cortex-M3、Cortex-M4、SC000 和 SC300 處理器與外圍寄存器之間的接口
  • CMSIS-DSP:包含以定點(分數 q7、q15、q31)和單精度浮點(32 位)實作的 60 多種函數的 DSP 庫
  • CMSIS-RTOS API:用于線程控制、資源和時間管理的實時作業系統的标準化程式設計接口
  • CMSIS-SVD:包含完整微控制器系統(包括外設)的程式員視圖的系統視圖描述 XML 檔案

此标準可進行全面擴充,以確定适用于所有 Cortex-M 處理器系列微控制器。其中包括所有裝置:從最小的 8 KB 裝置,直至帶有精密通信外設(例如以太網或 USB)的裝置。(核心外設功能的記憶體要求小于 1 KB 代碼,低于 10 位元組 RAM)。

2. 架構

CMSIS 到底是什麼?

看上去CMSIS-Core和CMSIS-DSP很好了解,但是CMSIS-RTOS不好了解,這玩意是幹嘛的

再看一張圖吧:

CMSIS 到底是什麼?

看了這張圖的含義更清楚些,CMSIS-RTOS在使用者的應用代碼和第三方的RTOS Kernel直接架起一道橋梁,一個設計在不同的RTOS之間移植,或者在不同Cortex MCU直接移植的時候,如果兩個RTOS都實作了CMSIS-RTOS,那麼使用者的應用程式代碼完全可以不做修改。

3. 已經支援的MCU和工具鍊:

CMSIS 到底是什麼?

完整的CMSIS文檔可以從ARM公司網站下載下傳,大小有100多M位元組。

4.   如何使用CMSIS,需要哪些檔案,以Freescale Kinetis L系列舉例。

獨立于編譯器的檔案: ● Cortex-M3核心及其裝置檔案(core_cm0.h + core_cm0.c) ─ 通路Cortex-M0核心及其裝置:NVIC等 ─ 通路Cortex-M0的CPU寄存器和核心外設的函數 ● 微控制器專用頭檔案(device.h)  -  MKL25Z4.h ─ 指定中斷号碼(與啟動檔案一緻) ─ 外設寄存器定義(寄存器的基位址和布局) ─ 控制微控制器其他特有的功能的函數(可選) ● 微控制器專用系統檔案(system_device.c)  -- system_MKL25Z4.h + system_MKL25Z4 .c  ─ 函數SystemInit,用來初始化微控制器 --函數 void SystemCoreClockUpdate (void); 用于擷取核心時鐘頻率 ─SystemCoreClock,該值代表系統時鐘頻率 ─ 微控制器的其他功能(可選) ● 編譯器啟動代碼(彙編或者C)(startup_device.s)  -  startup_MKL25Z4.s for Keil ─ 微控制器專用的中斷處理程式清單(與頭檔案一緻) ─ 弱定義(Weak)的中斷處理程式預設函數(可以被使用者代碼覆寫)

繼續閱讀