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





