配置

RTX51 Tiny必須根據(jù)你的嵌入式應(yīng)用來配置。所有地配置參數(shù)都在櫝置文件CONF_TNY.A51中,這個(gè)文件位于KEILC51RTXTINY2文件夾中,文件中的櫝置選可以你" />

国产成人精品无码青草_亚洲国产美女精品久久久久∴_欧美人与鲁交大毛片免费_国产果冻豆传媒麻婆精东

18143453325 在線咨詢 在線咨詢
18143453325 在線咨詢
所在位置: 首頁 > 營銷資訊 > 營銷百科 > Round Robin配置信息

Round Robin配置信息

時(shí)間:2023-02-13 16:15:01 | 來源:營銷百科

時(shí)間:2023-02-13 16:15:01 來源:營銷百科

Round Robin配置信息:RTX51 Tiny可以由根據(jù)用戶的應(yīng)用來定制。

配置

RTX51 Tiny必須根據(jù)你的嵌入式應(yīng)用來配置。所有地配置參數(shù)都在櫝置文件CONF_TNY.A51中,這個(gè)文件位于KEILC51RTXTINY2文件夾中,文件中的櫝置選可以你做如下事情。

指定時(shí)鐘節(jié)拍中斷寄存器組

指定時(shí)鐘節(jié)拍間隔(多個(gè)8051機(jī)器周期)

指定在時(shí)鐘節(jié)拍中斷中執(zhí)用的用戶代碼

指定round-robin溢出時(shí)間

使能禁能round-robin任務(wù)切換

指定你的應(yīng)用程序包含了長時(shí)間的中斷

指定是否使用了code banking

定義RTX51Tiny的棧頂

指令需要最小的堆棧空間

指定堆棧錯(cuò)誤時(shí)執(zhí)行代碼

定義空閑任務(wù)操作

CONF_TNY.A51的默認(rèn)配置包含在RTX51 Tiny的庫中。然而,要在就用中使用配置文件,必須把配置文件拷貝到你的工程文件夾并添加到工程中。

要定制RTX51 Tiny的配置,必須改變CONF_TNY.A51的設(shè)置

注意:

如果在工程中不包括配置文件,默認(rèn)的配置文件將會(huì)自動(dòng)地包含到工程中。后事存在庫中的配置文件可能會(huì)對你的應(yīng)用起到相反效果

硬件時(shí)鐘

以下參數(shù)指定了如何配置制RTX51Tiny的配件時(shí)鐘

INT_REGBANK 指定制RTX51 Tiny時(shí)鐘中斷使用的寄存器組,默認(rèn)的是寄存器組1

INT_CLOCK 指定時(shí)鐘產(chǎn)生中斷前的周期數(shù)據(jù)。這個(gè)值的范圍是1000~65535。較小的值產(chǎn)生中斷較快。這個(gè)值用來計(jì)算時(shí)鐘的重新裝載值(65536-INT_CLOCK)。缺省值是10000。

HW_TIMER_CODE 是一個(gè)宏定義,它用來指定在制RTX51 Tiny時(shí)鐘節(jié)拍中斷中執(zhí)的代碼。這個(gè)宏缺省的設(shè)置是從中斷中返回(RETI)如:

HW_TIMER_CODE MACRO

; Empty Macro by default

RETI

ENDM

Round-robin

Round-robin切換是默認(rèn)使能的,以下參數(shù)用來設(shè)定Round-robin切換的時(shí)間或禁能Round-robin切換

TIMESHARING 指定任務(wù)在進(jìn)行Round-robin切換前執(zhí)行的RTX51Tiny時(shí)鐘節(jié)拍數(shù)。當(dāng)這個(gè)值為0時(shí)禁止Round-robin切換。缺省值是5個(gè)時(shí)鐘節(jié)拍。

長時(shí)間中斷

一般情況下,中斷服務(wù)程序(ISRs)都要求很快執(zhí)行完畢。有時(shí)候,中斷服務(wù)程序可能需執(zhí)行很長一段時(shí)間。如果一個(gè)高優(yōu)先級的中斷執(zhí)的時(shí)間超過了節(jié)拍間隔,RTX51的時(shí)鐘中斷就可能被這個(gè)更高優(yōu)先級的中斷中斷了,并且被以后的RTX51 時(shí)鐘中斷重入了。

如果使用了需要運(yùn)行很長時(shí)間的高優(yōu)先級中斷,就應(yīng)該考慮減少中斷服務(wù)程序的工作量,改變RTX51時(shí)鐘節(jié)拍的速率,或考使用以下配置。

LONG_USR_ISR 指定是否使用執(zhí)行時(shí)間超過時(shí)鐘節(jié)拍的中斷。當(dāng)這個(gè)值置為1時(shí),RTX51 Tiny就會(huì)把保護(hù)RTX51 Tiny時(shí)鐘節(jié)拍中斷重入的代碼包含進(jìn)去。這個(gè)值缺省為0

Code banking

以下設(shè)置指定RTX51 Tiny應(yīng)用中是否使用code banking

CODE_BANKING 置1使用code banking,清0不使用code banking。缺省值為0

注意:L51_BANK.A51的2.2或更高版本需要RTX51Tiny 程序使用code banking

堆棧

堆棧的配置選項(xiàng)有幾個(gè)。以下參指定了用于堆棧的內(nèi)存空間的大小和堆棧的最小空間。當(dāng)CPU的堆??臻g不夠時(shí)用一個(gè)宏指定去執(zhí)行哪一段代碼。

RAMTOP指定棧頂?shù)刂贰W詈貌灰薷倪@個(gè)地址除非你在這個(gè)堆棧的上面使用了IDATA變量。

FREE_STACK指定堆棧上的最少可用空間。當(dāng)切換到一個(gè)任務(wù)是時(shí),如果RTX51 Tiny檢測到可用的堆??臻g小于這個(gè)值,STACK_ERROR宏就會(huì)被執(zhí)行。置為0將禁止對堆棧的檢查,缺省值為20字節(jié)

STACK_ERROR是一個(gè)宏,它代表了一段在堆棧出現(xiàn)錯(cuò)誤時(shí)執(zhí)行的代碼。這個(gè)宏的缺省代碼為禁能中斷并進(jìn)入一個(gè)無限循環(huán)。如

STACK_ERROR MACRO

CLR EA ; disable interrupts

SJMP $ ; endless loop if stack space is exhausted

ENDM

空閑任務(wù)

沒有任務(wù)需要執(zhí)行時(shí),RTX51Tiny就執(zhí)行空閑任務(wù)。空閑任務(wù)什么都不做,只是等待RTX51 Tiny的時(shí)鐘節(jié)拍中斷并切換到另一個(gè)就緒的任務(wù)。以下參數(shù)用來配置RTX51 Tiny空閑任務(wù)的不同方面

CPU_IDLE 這是一個(gè)宏,代表了在空閑任務(wù)中執(zhí)行的代碼。缺省指令是設(shè)置寄存器PCON的空閑模式位。這樣就可以通過掛起程序節(jié)省能耗。如

CPU_IDLE MACRO

ORL PCON,#1 ; set 8051 CPU to IDLE

ENDM

CPU_IDLE_CODE 指定CPU_IDLE宏在空閑任務(wù)中是否執(zhí)行。缺省值為0,這樣空閑任務(wù)將不包含CPU_IDLE宏

庫文件

RTX51 Tiny包括兩個(gè)庫文件

RTX51TNY.LIB is used for non-banking RTX51 Tiny programs

RTX51BT.LIB is used for code-banking RTX51 Tiny programs.

The RTXTINY2.PRJ project found in the KEILC51RTXTINY2SOURCECODE folder is used to build these two libraries.

注意:不需要在應(yīng)用顯式地包含這兩個(gè)文件。如果你使用μVision2 IDE或command-line linker時(shí)這兩個(gè)文件會(huì)自動(dòng)地包含進(jìn)去。

如果要建立RTX51Tiny的庫,缺省的配置文件會(huì)加入進(jìn)去。如果不顯式地聲明包含配置文件,默認(rèn)的配置文件會(huì)包含進(jìn)去。以后對配置文件做的修改會(huì)對就用產(chǎn)生意想不到的效果。

優(yōu)化

可以通過以下方式優(yōu)化RTX51 Tiny程序

如果可能,禁能round-robin任務(wù)切換。Round-robin需要13字節(jié)堆??臻g來存儲任務(wù)地址和所有寄存器。如果任務(wù)切換是通過RTX51 Tiny運(yùn)行時(shí)庫(比如os_wait或 os_switch_task)來觸發(fā)的就不需要這些空間了。

使用os_wait而不是使用round-robin的時(shí)間耗盡來切換任務(wù)。這些會(huì)提高系統(tǒng)的反應(yīng)時(shí)間和任務(wù)的反應(yīng)速度

避免把系統(tǒng)時(shí)鐘節(jié)拍的中斷速率設(shè)的太高。把時(shí)鐘溢出的時(shí)間設(shè)的比較短增加了每秒的時(shí)鐘節(jié)拍數(shù)但是減少了每個(gè)任的可用時(shí)間,因?yàn)槊總€(gè)時(shí)鐘節(jié)拍中斷會(huì)使用100-200個(gè)周期來運(yùn)行。所以要把湔出時(shí)間設(shè)的足夠的小從而減小時(shí)鐘節(jié)拍中斷帶來的副作用。

使用RTX51Tiny

要使用RTX51 Tiny,必須成功地生成RTX51程序并編譯連接他們

編寫程序

定義RTX51程序使用關(guān)鍵字_task_

以RTX51TNY.H的模板使用RTX51 Tiny的內(nèi)核

包含文件

RTX51 Tiny只需包含一個(gè)文件RTX51TNY.H。所有的運(yùn)行時(shí)庫來常量都在這個(gè)頭文件中定義??梢圆捎靡韵路绞桨?br>
#include rtx51tny.h

編程指南

使用RTX51 Tiny編程時(shí)須遵循下規(guī)則:

包含文件rtx51tny.h

不要?jiǎng)?chuàng)建C主函數(shù),RTX51Tiny有它自已的主要函數(shù)

程序至少創(chuàng)建一個(gè)任務(wù)

程序必須至少調(diào)用一次RTX51 Tiny運(yùn)行時(shí)庫(如os_wait)。否則,連接器將不會(huì)把RTX51 Tiny庫包含進(jìn)去

任務(wù)0是你的程序執(zhí)行的第一任務(wù)。必須調(diào)用在任務(wù)0中調(diào)用os_create_task函數(shù)來運(yùn)行其他任務(wù)

任務(wù)永不返回或退出。任務(wù)必須使用while(1)或類似的結(jié)構(gòu)。使用os_delete_task函數(shù)可以掛起一個(gè)任務(wù)

必須在μVision2中或在連接編譯命令行中指定RTX51 Tiny

定義任務(wù)

實(shí)時(shí)或多任務(wù)應(yīng)用由一個(gè)或多個(gè)完成特定功能的任務(wù)組成。RTX51 Tiny支持最多16個(gè)任務(wù)

任務(wù)必須是用_task_聲明的C函數(shù),返回值和參數(shù)都必須是void類型的,如

void func (void) _task_ task_id

這里

func is the name of the task function.

task_id is a task ID number from 0 to 15

以下例子定義了函數(shù)job0作為一個(gè)任務(wù),任務(wù)編號為0。

void job0 (void) _task_ 0 {

while (1) {

counter0 ; /* increment counter */

}

}

注意:所有的任務(wù)都必須通過循環(huán)實(shí)現(xiàn),而且永不返回

關(guān)鍵詞:信息,配置

74
73
25
news

版權(quán)所有? 億企邦 1997-2025 保留一切法律許可權(quán)利。

為了最佳展示效果,本站不支持IE9及以下版本的瀏覽器,建議您使用谷歌Chrome瀏覽器。 點(diǎn)擊下載Chrome瀏覽器
關(guān)閉