實(shí)時(shí)操作系統(tǒng)的滴答Tick設(shè)置多少才合適?
掃描二維碼
隨時(shí)隨地手機(jī)看文章
最近有讀者問了這么一個(gè)問題:為啥RTOS的系統(tǒng)滴答(Tick)默認(rèn)配置都是1000,我配置為100、10000,或者2000可以不?
相信很多初學(xué)者都有這個(gè)疑問,包括我初學(xué)RTOS也曾困惑滴答配置不同值到底有啥不同和影響。
今天就來簡單說下關(guān)于RTOS系統(tǒng)滴答的內(nèi)容!
什么是系統(tǒng)滴答?系統(tǒng)滴答(SysTick),有些地方也叫時(shí)鐘節(jié)拍、系統(tǒng)心跳等。
操作系統(tǒng)可以多任務(wù)間進(jìn)行切換,就是靠一個(gè)系統(tǒng)定時(shí)器以**頻率中斷,為操作系統(tǒng)提供調(diào)度(上下文切換)才能實(shí)現(xiàn)任務(wù)切換。
而這個(gè)定時(shí)器,就是我們本文說的系統(tǒng)滴答。
早些年的51、430單片機(jī),跑RTOS,都是單獨(dú)利用一個(gè)Timer定時(shí)器提供系統(tǒng)滴答。
為了考慮跑RTOS這個(gè)問題,Cortex-M內(nèi)核自帶系統(tǒng)滴答這個(gè)定時(shí)器。
你會(huì)發(fā)現(xiàn)市面上很多單片機(jī)基本都自帶有SysTick這個(gè)定時(shí)器,像Cortex-M0、 M3、 M4這些內(nèi)核的單片機(jī)都有的,而且只要簡單調(diào)用官方寫好的API函數(shù)即可使用。
系統(tǒng)配置文件通常,系統(tǒng)滴答(OS_TICKS)位于系統(tǒng)配置文件中,對系統(tǒng)配置文件進(jìn)行配置也是重要的一步。(一些系統(tǒng)通過圖形化界面進(jìn)行配置,其實(shí)也是對系統(tǒng)配置文件進(jìn)行配置)
比如FreeRTOSConfig.h
再比如ucos系統(tǒng)的os_cfg.h
OS_TICKS一般是配置為1000,從宏定義和注釋很容易理解,就是每秒系統(tǒng)滴答的次數(shù)。
這里的配置選項(xiàng)很多,初學(xué)者可能不理解一些選項(xiàng)的含義,可以使用官方默認(rèn)配置即可,等熟悉到一定程度,這些配置選項(xiàng)自然就理解了。
系統(tǒng)滴答配置多少才合適?系統(tǒng)滴答配置1000,代表系統(tǒng)1ms要進(jìn)行一次輪轉(zhuǎn)調(diào)度,檢查是否有更高優(yōu)先級任務(wù)要執(zhí)行(并切換任務(wù))。
1ms是什么概念??
可能你認(rèn)為1ms時(shí)間好短,但對于操作系統(tǒng)而言,1ms的時(shí)間卻是很長。
100M主頻的單片機(jī),執(zhí)行一次調(diào)度(幾十條語句),時(shí)間在us級別,你說1ms對于系統(tǒng)而言有多長?
為啥配置為1000?肯定很多人有這個(gè)疑問,配置為1000,為啥不是100、10000,或者2000?
1000是一個(gè)比較適合的中等值,其他100、10000,或者2000也可以,只是不利于系統(tǒng)以及編程。
a.如果滴答太大,10K,甚至100K,對系統(tǒng)的負(fù)擔(dān)比較大。因?yàn)樽陨碚{(diào)度會(huì)占用CPU時(shí)間。
b.1ms滴答一次,方便編程時(shí)統(tǒng)延時(shí)。2k、10k這種值,在用到系統(tǒng)延時(shí)時(shí),不方便計(jì)算。
vTaskDelay(1000);
如果滴答值為1000,則代表延時(shí)1秒;如果滴答值為2000,則代表延時(shí)0.5秒,很明顯這種不利于編程;
配置為其他數(shù)值有啥影響?除1000之外,方便計(jì)算延時(shí)的就是1,或者1M。(很明顯1,或者1M都不現(xiàn)實(shí))
配置為1,系統(tǒng)1秒才響應(yīng)一次,這還叫實(shí)時(shí)操作系統(tǒng)?
配置為1M,1us調(diào)度一次,CPU基本都在做調(diào)度的工作,不用干其他事了。
除此之外,100、10000,或者2000,就是延時(shí)計(jì)算不方便之外,按理說也是可以的。
小結(jié)1.實(shí)時(shí)操作系統(tǒng)的SysTick,在沒有特殊情況下,最好默認(rèn)配置1000;
2.在系統(tǒng)允許的情況下,SysTick數(shù)值越大,系統(tǒng)實(shí)時(shí)性越高;反之實(shí)時(shí)性越差;
3.主頻相對偏低(比如低于10M)的處理器,SysTick值可以適當(dāng)配置第一點(diǎn);
······------------?END?------------
后臺回復(fù)『RTOS』『嵌入式軟件設(shè)計(jì)與開發(fā)』閱讀更多相關(guān)文章。
歡迎關(guān)注我的公眾號,回復(fù)“加群”按規(guī)則加入技術(shù)交流群,回復(fù)“1024”查看更多內(nèi)容。
歡迎關(guān)注我的視頻號:ic.com/weixin/tr/2021-07/14/271tjfgi056.jpg">
點(diǎn)擊“閱讀原文”查看更多分享,歡迎點(diǎn)分享、收藏、點(diǎn)贊、在看。