使用STM32處理器的用戶,可以通過STM32Cube工具生成基礎工程,免費評估功能安全操作系統(tǒng)Flexible Safety RTOS二進制庫了。
STM32Cube生態(tài)系統(tǒng)包含軟件工具和嵌入式軟件庫,提供了一套完整的PC軟件工具,解決完整項目開發(fā)周期的所有需求;包含在STM32微控制器和微處理器上運行的嵌入式軟件塊,如Flexible Safety RTOS。
圖1
通過在STM32CubeMX工具添加STM32Cube擴展包集成嵌入式軟件塊,簡化創(chuàng)建軟件包工程的過程。
軟件版本
在Flexible SafetyRTOS集成和應用的開發(fā)過程中,我們使用的開發(fā)環(huán)境版本信息如下:
STM32Cube MX v6.11.1
STM32Cube IDE v1.15.1
舊的軟件版本可能無法正常工作,為了避免這種情況,我們建議更新本地STM32Cube環(huán)境到最新版本。
安裝擴展包
在STM32CubeMX用戶手冊(https://www.st.com/resource/en/user_manual/um1718-stm32cubemx-for-stm32-configuration-and-initialization-c-code-generation-stmicroelectronics.pdf)中詳細解釋了STM32Cube擴展包的安裝。本節(jié)介紹如何激活中間件軟件Flexibe Safety RTOS(FS-RTOS)。
1 通過https://www.embedded-office.net/download/public/pack/st/EmbeddedOffice.I-CUBE-FS-RTOS.1.0.1.pack鏈接,下載軟件包。
2 在STM32CubeMX中,選擇Help->Manage embedded software packages,點擊From Local…,閱讀并接受License Agreement評估許可協(xié)議,開始安裝,并在安裝完成后關閉Embedded Software Package Manager。
圖2
FS-RTOS軟件包使用
基于MCU或評估板創(chuàng)建STM32CubeMX工程后,通過單擊“Software Packs”選項卡并選擇“SelectComponents”,如圖3所示
圖3
在打開的“Software Packs Component Selector”窗口,找到安裝的“EmbeddedOffice.I-CUBE-FS-RTOS”組件。打開組件下拉菜單,設置FS-RTOS為“Eval”,然后選擇一個應用程序,例如“Blinky”,單擊Ok按鈕。
圖4
硬件設置
為了使項目正常工作,需檢查下列設置:
1 在System Core->RCC->High Speed Clock中,使用外部晶振。
2 確保在Clock Configuration選項卡中將系統(tǒng)時鐘設置為合理的值(例如HCLK設置為max)。
3 在生成的應用程序中,使用SysTick作為RTOS時基,因此,HAL庫需使用另外的時鐘源??梢酝ㄟ^System Core->SYS->Timebase Source,修改HAL時基為其它定時器(如Tim1)或禁止HAL時基(選擇None)。
注:如果禁用HAL時基,用戶需要在RTOS時鐘節(jié)拍處理回調(diào)函數(shù)App_TimeTickHook()中調(diào)用HAL_IncTick()函數(shù),回調(diào)函數(shù)位于文件Blinky/App/app_blinky_callback.c中。
4 至少需要選擇和配置一個GPIO輸出引腳,該GPIO輸出引腳用于應用參數(shù)設置。
在生成的演示應用前,我們可能還需到System Core->NVIC中配置中斷的優(yōu)先級,以確保系統(tǒng)正常工作。
配置Flexible Safety RTOS
在“Pinout&Configuration”選項卡中,在“Middleware and Software Packs”類別中找到I-CUBE-FS_RTOS組件,配置項目:
1 選擇Flexible Safety RTOS組件:I-CUBE-FS_RTOS。
2 將Flexible Safety RTOS集成到您的項目中(無需額外的參數(shù)設置)。
3 生成選定的演示應用程序(例如Blinky)。
4 指定與應用程序相關的外設,以生成所需的BSP函數(shù)。在圖5中,必須為LED選擇配置好的GPIO輸出引腳。
圖5
代碼生成
最后,我們在Project Manager選項卡中為代碼生成執(zhí)行一些基本配置:
Project name:項目名稱。
Project Location:工作空間目錄,保存項目。
Application Structure:Advanced(不勾選Do not generate the main())。
Toolchain/IDE:選擇工具鏈STM32CubeIDE(或EWARM…),選中Generate Under Root。
圖6
其它設置保持不變。
項目結構
使用GENERATE CODE按鈕,開始生成項目。STM32CubeMX生成的項目結構如下:
圖7
您可以在ST定義的目錄樹中找到Flexible Safety RTOS評估包,位于Middleware和Blinky目錄。
RTOS集成
當使用STM32Cube擴展包生成項目后,F(xiàn)lexible Safety RTOS集成已經(jīng)完成。如果你想要手動集成Flexible Safety RTOS到現(xiàn)有項目中,需要在生成的回調(diào)函數(shù)文件Blinky/App/app_blinky_callback.c中添加RTOS系統(tǒng)滴答處理:
圖8
默認配置中OS_TICKS_PER_SEC為1000,因此內(nèi)部SysTick計時器每秒會產(chǎn)生1000個系統(tǒng)滴答中斷。
診斷
內(nèi)存異常處理
如果更改例程并進行實驗,可能會遇到內(nèi)存異常的問題。在這種情況下,我們建議在生成的項目中添加一個訪問錯誤診斷處理程序。
在生成的中斷處理程序文件Core/Src/_it.c中,在函數(shù)MemManage_Handler()中增加訪問違規(guī)信息收集:
圖9
訪問位于Blinky/App/app_blinky_callback.c中的故障回調(diào)函數(shù),獲取下列信息:
info->CurPrio:哪個任務執(zhí)行導致內(nèi)存沖突。
info->IAddress:發(fā)生異常的指令地址。
info->DAddress:寫保護的數(shù)據(jù)地址
圖10
通過以上操作,我們完成了RTOS集成工作。接下來,可以深入Flexible SafetyRTOS組件的文件結構(https://www.embedded-office.net/eval/manual/latest/os/file.html#file-structure),開始構建應用。
Flexible Safety RTOS是基于μC/OS-II擴展的功能安全預認證操作系統(tǒng),麥克泰技術是Flexible Safety RTOS在中國的代理商,具有超過20年嵌入式實時操作系統(tǒng)和功能安全軟件服務的市場、服務和培訓經(jīng)驗,聯(lián)系Info@bmrtech.com。
-
微控制器
+關注
關注
48文章
7627瀏覽量
151758 -
嵌入式
+關注
關注
5088文章
19160瀏覽量
306522 -
STM32
+關注
關注
2270文章
10918瀏覽量
356790 -
RTOS
+關注
關注
22文章
818瀏覽量
119769 -
stm32cubemx
+關注
關注
5文章
284瀏覽量
14882
原文標題:如何在STM32CubeMX中集成Flexible Safety RTOS
文章出處:【微信號:麥克泰技術,微信公眾號:麥克泰技術】歡迎添加關注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關推薦
評論