使用STM32處理器的用戶,可以通過STM32Cube工具生成基礎(chǔ)工程,免費評估功能安全操作系統(tǒng)Flexible Safety RTOS二進制庫了。
STM32Cube生態(tài)系統(tǒng)包含軟件工具和嵌入式軟件庫,提供了一套完整的PC軟件工具,解決完整項目開發(fā)周期的所有需求;包含在STM32微控制器和微處理器上運行的嵌入式軟件塊,如Flexible Safety RTOS。
圖1
通過在STM32CubeMX工具添加STM32Cube擴展包集成嵌入式軟件塊,簡化創(chuàng)建軟件包工程的過程。
軟件版本
在Flexible SafetyRTOS集成和應(yīng)用的開發(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é)議,開始安裝,并在安裝完成后關(guān)閉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”組件。打開組件下拉菜單,設(shè)置FS-RTOS為“Eval”,然后選擇一個應(yīng)用程序,例如“Blinky”,單擊Ok按鈕。
圖4
硬件設(shè)置
為了使項目正常工作,需檢查下列設(shè)置:
1 在System Core->RCC->High Speed Clock中,使用外部晶振。
2 確保在Clock Configuration選項卡中將系統(tǒng)時鐘設(shè)置為合理的值(例如HCLK設(shè)置為max)。
3 在生成的應(yīng)用程序中,使用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輸出引腳用于應(yīng)用參數(shù)設(shè)置。
在生成的演示應(yīng)用前,我們可能還需到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ù)設(shè)置)。
3 生成選定的演示應(yīng)用程序(例如Blinky)。
4 指定與應(yīng)用程序相關(guān)的外設(shè),以生成所需的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
其它設(shè)置保持不變。
項目結(jié)構(gòu)
使用GENERATE CODE按鈕,開始生成項目。STM32CubeMX生成的項目結(jié)構(gòu)如下:
圖7
您可以在ST定義的目錄樹中找到Flexible Safety RTOS評估包,位于Middleware和Blinky目錄。
RTOS集成
當(dāng)使用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:哪個任務(wù)執(zhí)行導(dǎo)致內(nèi)存沖突。
info->IAddress:發(fā)生異常的指令地址。
info->DAddress:寫保護的數(shù)據(jù)地址
圖10
通過以上操作,我們完成了RTOS集成工作。接下來,可以深入Flexible SafetyRTOS組件的文件結(jié)構(gòu)(https://www.embedded-office.net/eval/manual/latest/os/file.html#file-structure),開始構(gòu)建應(yīng)用。
Flexible Safety RTOS是基于μC/OS-II擴展的功能安全預(yù)認證操作系統(tǒng),麥克泰技術(shù)是Flexible Safety RTOS在中國的代理商,具有超過20年嵌入式實時操作系統(tǒng)和功能安全軟件服務(wù)的市場、服務(wù)和培訓(xùn)經(jīng)驗,聯(lián)系[email protected]。
-
微控制器
+關(guān)注
關(guān)注
48文章
7643瀏覽量
151842 -
嵌入式
+關(guān)注
關(guān)注
5089文章
19170瀏覽量
306800 -
STM32
+關(guān)注
關(guān)注
2270文章
10921瀏覽量
356995 -
RTOS
+關(guān)注
關(guān)注
22文章
819瀏覽量
119806 -
stm32cubemx
+關(guān)注
關(guān)注
5文章
284瀏覽量
14905
原文標題:如何在STM32CubeMX中集成Flexible Safety RTOS
文章出處:【微信號:麥克泰技術(shù),微信公眾號:麥克泰技術(shù)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論