999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

RTX操作系統在STM32RBT6芯片中的移植與應用

2015-12-31 03:18:53徐自遠
課程教育研究·中 2015年12期
關鍵詞:進程系統

徐自遠

【摘要】本文介紹了MDK軟件自帶的基于時間輪轉的RTX操作系統在STM32F103RB芯片上的移植方法,并詳細描述了具體的移植過程和使用方法。并用一個LED輪換閃爍的實例演示了其具體應用方法并對其操作系統函數庫做了簡單介紹。最后通過與其他同類操作系統的橫向比較,分析了其優缺點及應用范圍。

【關鍵詞】RT?鄄RTX STM32 嵌入式操作系統 MDK Cotex?鄄M3 ARM

【中圖分類號】G64 【文獻標識碼】A 【文章編號】2095-3089(2015)12-0248-02

RL?鄄RTX操作系統是MDK官方內置的一個實時操作系統。其內核是一個基于時間片輪轉的實時操作系統,可以同時運行多函數或是任務。在嵌入式系統中嵌入實時操作系統是現在硬件開發的趨勢,對比前后臺循環方案與狀態機方案其優點在于既增加了程序的可讀性,同時又提高了系統運行的效率。

1.RL-RTX操作系統介紹

RL?鄄RTX操作系統可以自由地調度系統資源,比如CPU和內存,并且提供一種任務間通信機制。 RTX內核是一個強大的實時操作系統,可以很容易地使用和運行基于 ARM7?鄄TDMI、ARM9 或是 Cortex?鄄M3 CPU 內核的微控制器。

RTX程序使用標準的C結構編寫,運用RealViewR 編譯器進行編譯。在RTX.H頭文件定義了RTX函數以及宏,可以讓輕松地聲明任務并達到實時操作系統所有特性。

RL?鄄RTX操作系統內核大致可分為任務管理、任務調度器、阻塞管理,任務間通訊管理,定時器管理,設備底層驅動6個部分。

2.STM32F103RBT6芯片介紹

STM32系列處理器是為高性能、低成本、低功耗的嵌入式應用專門設計的ARM Cortex?鄄M3內核芯片。本文應用的STM32F103RBT6芯片為64腳LQFP64封裝。其工作頻率可高達72MHZ,具有128KB flash, 20KB SRAM 1個CAN總線,1個USB2.0接口,2個SPI,2個I2C接口,資源較為豐富。

3.RL?鄄RTX操作系統在STM32F103RBT6芯片上的移植

本次操作系統移植是基于RL?鄄RTX 4.05版進行的。移植操作系統使用軟件編譯環境為Keil MDK 4.12版。下面對移植過程做詳細介紹。

1)安裝MDK軟件

從官網下載Keil MDK 4.12版并注冊安裝。

2)下載STM32固件庫工程

在ST官網下載STM32F10x_StdPeriph_Lib_V3.5.0,使用其中工程作為工程模版。

3)建立GPIO工程

依據ST官方庫的例子,建立一個GPIO/IOToggle 工程。修改IO端口配置與實際使用電路板的IO端口相對應。編譯并運行成功。

4)移植RTX_Kernel

RTX_Kernel操作系統移植步驟如下:

3.1在main.c最前頭文件引用列中加入“#include”,調用rl.h頭文件。此頭文件包含RTX操作系統中運行代碼。

3.2項目選項里,在Target下,Operating system選擇 RTX Kernel。

3.3復制C:\Keil\ARM\Boards\ST\STM32F10X_EVAL\

RTX_Blinky\RTX_Config.c文件到項目目錄下,并將RTX_Config.c添加到項目中。(MDK安裝在默認目錄C盤)

3.4在RTX_Config.c根據硬件條件配置操作系統參數

操作系統參數有很多,在C文件中尋找修改較為復雜,MDK4.12中可以通過向導來配置操作系統的各個參數,其步驟為:①打開RTX_Config.c文件,文件編輯框下方有一個Configuration Wizard選項,點擊它可以看到任務參數選項。如圖1所示。

圖 1 任務參數配置向導

①Number of concurrent running tasks 設置運行任務數

此選項范圍為0~250個任務,默認為6個運行任務。該數值定義了可同時運行的最大任務數量,若設置任務超過此數量,則最后一個創建的任務不會運行。

②Number of tasks with user?鄄provided stack 用戶定義堆棧的任務數量

此選項范圍為0~250個任務,默認為0。此選項可定義一些需要開啟更大堆棧區域的任務。

③Task stack size 任務堆棧區域大小設置

范圍為200~4096字節,默認堆棧大小為200字節。此選項為每個任務分配獨立的堆棧區域空間,RTX_Kernel為私有堆棧任務系統,每個任務有自己私有堆棧區域,并非像RTX51一樣為公有堆棧任務系統。若在系統運行中出現堆棧區域溢出的情況則需要增大此參數。

④Check for the stack overflow 檢查堆棧溢出

注:開啟堆棧溢出檢查的話,會使系統性能降低,建議調試時開啟,程序調試完畢后關閉此選項。

⑤Run in privileged mode運行在特權模式

⑥Timer clock value設置當前MCU運行頻率

范圍為1?鄄1000000000HZ,默認為6MHz,由于在本系統中使用時鐘頻率為48MHz,所以設置其為48000000。

⑦Timer tick value為RTX時間片時間

范圍為1?鄄1000000us,默認為10000us,即10ms一個時間片,可以修改此參數來改變任務輪轉的速度。

⑧Round?鄄Robin Task switching 任務時間片耗盡自動切換開關

默認為開啟。開啟RTX操作系統在某一任務時間片耗盡后會自動保存本任務堆棧并切換到其他任務中去。可點開此選項前的“+”號,在彈出的Round?鄄Robin Timeout 為任務設置自動切換時間,默認為5個時間片即50ms。

⑨Number of user timers 用戶定時器使用數

范圍為0~250個,定義可使用的系統定時器數量。

3.5由于RTX操作系統用到了本芯片中的一些中斷向量,所以要移植RTX操作系統必須在中斷程序stm32f10x_it.c中屏蔽以下三個中斷函數。其分別是:PendSV_Handler(void),SysTick_Handler(void),SVC_Handler(void)。

至此,RTX系統移植完畢,接下去就能編寫操作系統代碼了。

4.操作系統應用實例

圖 2 系統運行流程與操作系統運行流程對比

操作系統的使用能提高程序編寫的效率,特別是對一些時效管理與系統延時處理方面。使用前后臺循環編程方式與操作系統運行流程對比如圖 4所示。

本次系統移植目標是讓兩個LED以不同頻率交替閃爍,要完成此目標并讓任務正常運行必須在main.c中添加初始化操作系統的代碼:

1)先在main( )函數中添加系統初始化函數os_sys_init (init_task);。用來開啟系統任務并結束main函數的運行。此時程序轉入init_task任務中。

2)建立初始化任務函數init_task(void)。在程序中編寫初始化函數init_task( ),區別于普通的子程序,任務前需要添加前綴”__task”。在初始化任務中使用os_tsk_create( )命令創建task1與task2兩個任務,并定義兩個OS_TID型任務變量id1,id2記錄開啟任務的返回值。最后使用os_tsk_delete_self ( );命令刪除init_task任務本身。此時task1,與task2任務被開啟。操作系統會根據任務輪詢機制依次進入task1任務和task2任務。

3)建立兩個任務函數task1,與task2。

編譯上述代碼,將其下載到目標板中,如果LED1與LED2兩個發光二極管能以不同的頻率閃爍發光說明移植成功了。

RTX 操作系統的API比較簡單,它是基于時間片來進行任務間輪轉調度的,即相同任務優先級每個任務分得一定的時間片運行時間,運行完時間片后保存現場進行任務切換。而其他實時操作系統中uC/OS?鄄II是不支持時間片輪轉的,從uC/OS-III開始才支持時間片輪轉調度。

5.RTX操作系統函數庫簡介

圖 4 RTX 任務系統組成圖

RTX任務系統組成圖如圖 4所示。為了深入了解RTX操作系統,對下面對每個模塊及其系統函數做簡單介紹。

(1)任務創建與調度:

創建任務:os_tsk_create ( );創建指定任務。

刪除任務:os_tsk_delete_self ( );刪除任務本身。

延時: os_dly_wait( ),延時指定數目的系統節拍事件。

任務切換:os_tsk_pass( ),跳出當前正在運行的任務。

(2)事件管理:os_evt_wait_and( ), os_evt_wait_or( ), os_evt_set(),isr_evt_set( )

讓一個進程等待一個事件,這個事件可以由其它進程和中斷觸發。

(3)郵箱管理:os_mbx_declare( ), os_mbx_init( ),os_mbx_wait( ),os_mbx_send( ), isr_mbx_send( ),建立一個郵箱,里面可以存放一定數目的消息(比如20條)。進程可以等待郵箱隊列,如果郵箱里有消息,則取出,進程繼續執行;如果郵箱為空,則繼續等待。

(3)互斥管理:os_mut_init ( ),os_mut_wait( ) //上鎖,os_mut_release( )//解鎖

設置進程獨占資源,加鎖,別的進程需要等待本進程,本進程不會被時間輪轉切換。

(4)信號量管理:os_sem_init( ), os_sem_send( ), os_sem_wait( ), isr_sem_send( )

信號量與事件類似,進程等待的信號量大于0時,進程繼續執行,信號量-1。發送信號量時,信號量+1.

6.RTX操作系統與其他幾種操作系統需求對比

FLASH和RAM的需求對比

RTX是一款優秀的基于時間輪轉片的微內核操作系統,適合FLASH和ROM資源不是很足的芯片,特別適合是對成本有要求,無擴展ROM和RAM芯片的單片系統中使用。

RTX的使用要比uC/OS容易,如果在Cortex?鄄M3芯片中使用實時操作系統的話,其優勢較為明顯。

參考文獻:

[1]《STM32自學筆記》蒙博宇編著, 北京市:北京航空航天大學出版社, 2012.

[2]《STM32嵌入式微控制器快速上手》陳志旺等編著, 北京市:電子工業出版社, 2012.

猜你喜歡
進程系統
Smartflower POP 一體式光伏系統
工業設計(2022年8期)2022-09-09 07:43:20
WJ-700無人機系統
ZC系列無人機遙感系統
北京測繪(2020年12期)2020-12-29 01:33:58
基于PowerPC+FPGA顯示系統
債券市場對外開放的進程與展望
中國外匯(2019年20期)2019-11-25 09:54:58
半沸制皂系統(下)
連通與提升系統的最后一塊拼圖 Audiolab 傲立 M-DAC mini
我國高等教育改革進程與反思
教育與職業(2014年7期)2014-01-21 02:35:04
Linux僵死進程的產生與避免
男女平等進程中出現的新矛盾和新問題
主站蜘蛛池模板: 伊人国产无码高清视频| 亚洲欧美精品一中文字幕| 久996视频精品免费观看| 亚洲成av人无码综合在线观看| 亚洲欧美日韩精品专区| 国产丝袜啪啪| 欧亚日韩Av| AV无码无在线观看免费| 成人噜噜噜视频在线观看| 十八禁美女裸体网站| 国产乱子伦无码精品小说| 国产精品亚洲五月天高清| 99福利视频导航| 国产丝袜一区二区三区视频免下载| 一级一级特黄女人精品毛片| 国产综合另类小说色区色噜噜| 一级爆乳无码av| 日韩高清无码免费| 国产成人欧美| 天堂av高清一区二区三区| 亚洲成aⅴ人在线观看| 中文字幕亚洲第一| 久久情精品国产品免费| 四虎影院国产| 欧美第一页在线| 精品欧美一区二区三区在线| 911亚洲精品| 亚洲欧洲AV一区二区三区| 国产97公开成人免费视频| 日韩成人免费网站| 亚洲av色吊丝无码| 久久国语对白| 日韩不卡高清视频| 亚洲二三区| 真人免费一级毛片一区二区| 美女一区二区在线观看| 奇米精品一区二区三区在线观看| 99re这里只有国产中文精品国产精品 | 久久人体视频| 久久无码免费束人妻| 亚洲精品免费网站| 亚洲最黄视频| 东京热一区二区三区无码视频| 91麻豆国产视频| 国产精品毛片在线直播完整版| 免费人成黄页在线观看国产| 亚洲日韩高清在线亚洲专区| 国产精品偷伦视频免费观看国产 | 日韩专区欧美| 人妻少妇久久久久久97人妻| 亚洲αv毛片| 成人综合在线观看| 毛片网站在线播放| 日韩中文无码av超清| 国产欧美日韩综合在线第一| 四虎永久在线视频| 美女一区二区在线观看| 日本一区二区三区精品视频| 精品视频一区在线观看| 奇米精品一区二区三区在线观看| 欧美国产三级| 亚洲永久色| 亚洲成综合人影院在院播放| 成人国产精品一级毛片天堂| 精品成人免费自拍视频| 免费一极毛片| 亚洲欧美成人在线视频| 国产91导航| 久久99国产综合精品1| 青青青伊人色综合久久| 狠狠色噜噜狠狠狠狠奇米777| 欧美日韩免费在线视频| 国产va在线观看| 免费人成又黄又爽的视频网站| 天天操精品| jizz在线观看| 色婷婷狠狠干| 亚洲国产综合精品一区| 久久免费观看视频| 成年免费在线观看| 亚洲国产成人超福利久久精品| 色亚洲激情综合精品无码视频 |