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操作系統在某一任務時間片耗盡后會自動保存本任務堆棧并切換到其他任務中去??牲c開此選項前的“+”號,在彈出的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僵死進程的產生與避免
男女平等進程中出現的新矛盾和新問題
主站蜘蛛池模板: 久久免费精品琪琪| 在线观看无码av免费不卡网站| 久久黄色免费电影| 国产白浆视频| 激情国产精品一区| 91在线视频福利| 91精品久久久无码中文字幕vr| 456亚洲人成高清在线| 久久久久久国产精品mv| 亚洲大学生视频在线播放| 亚洲AV无码不卡无码| 看国产毛片| 日韩人妻少妇一区二区| AV在线麻免费观看网站| 国产永久无码观看在线| 国产青榴视频在线观看网站| 国产精品私拍在线爆乳| 欧美成人综合在线| 人妻丝袜无码视频| 亚洲二区视频| 午夜三级在线| 国产欧美视频综合二区| 美女裸体18禁网站| 亚洲全网成人资源在线观看| 亚洲一区二区三区国产精华液| 欧美成人精品在线| 亚洲日本韩在线观看| 亚洲日韩精品欧美中文字幕| 免费 国产 无码久久久| 亚洲第一视频区| 中文字幕精品一区二区三区视频 | 欧美日韩国产在线播放| 久久综合色播五月男人的天堂| 亚洲综合香蕉| 亚洲精品第一页不卡| 亚洲欧美一级一级a| 东京热av无码电影一区二区| 2020精品极品国产色在线观看 | 呦女亚洲一区精品| 久久永久免费人妻精品| 2021国产在线视频| 免费在线成人网| 青青草91视频| 亚洲成网777777国产精品| 精品黑人一区二区三区| 欧美精品1区| AV网站中文| 国产精品第| 亚洲成人精品在线| 欧美yw精品日本国产精品| 婷婷五月在线| 欧美性猛交一区二区三区| 国产一区二区丝袜高跟鞋| 国产一区成人| 无码'专区第一页| 久久精品人人做人人爽| 2021最新国产精品网站| 亚洲精选高清无码| 美女裸体18禁网站| 国产成人免费手机在线观看视频 | 精品中文字幕一区在线| 亚洲精品亚洲人成在线| 国产一区三区二区中文在线| 日韩午夜片| 国产精品自在在线午夜| 国产欧美亚洲精品第3页在线| 亚洲综合香蕉| 国产亚洲欧美另类一区二区| 成人午夜久久| 日韩免费视频播播| 久久亚洲美女精品国产精品| 国产视频 第一页| 国产成人在线无码免费视频| 成人小视频网| 国产欧美在线| 亚洲色欲色欲www网| 蜜芽国产尤物av尤物在线看| 熟妇人妻无乱码中文字幕真矢织江 | 国模私拍一区二区三区| 丁香六月激情婷婷| 国产资源免费观看| 久久久久久久蜜桃|