liteos實時作業系統之時間管理

2021-08-29 13:59:29 字數 1485 閱讀 5494

基本概念

時間管理以系統時鐘為基礎。時間管理提供給應用程式所有和時間有關的服務。

系統時鐘是由定時/計數器產生的輸出脈衝觸發中斷而產生的,一般定義為整數或長整數。輸出脈衝的週期叫做乙個「時鐘滴答」。系統時鐘也稱為時標或者tick。乙個tick的時長可以靜態配置。

使用者是以秒、毫秒為單位計時,而晶元cpu的計時是以tick為單位的,當使用者需要對系統操作時,例如任務掛起、延時等,輸入秒為單位的數值,此時需要時間管理模組對二者進行轉換。

tick與秒之間的對應關係可以配置。

huawei liteos的時間管理模組提供時間轉換、統計、延遲功能以滿足使用者對時間相關需求的實現。

相關概念

系統最小的計時單位。cycle的時長由系統主頻決定,系統主頻就是每秒鐘的cycle數。

tick是作業系統的基本時間單位,對應的時長由系統主頻及每秒tick數決定,由使用者配置。

使用場景

使用者需要了解當前系統執行的時間以及tick與秒、毫秒之間的轉換關係等。

功能huawei liteos系統中的時間管理主要提供以下兩種功能:

功能分類

介面名描述

時間轉換

los_ms2tick

毫秒轉換成tick(預留介面)

los_tick2ms

tick轉化為毫秒(預留介面)

時間統計

los_cyclepertickget

每個tick多少cycle數

los_tickcountget

獲取當前的tick數

開發流程

時間管理的典型開發流程:

確認配置項loscfg_base_core_tick_hw_time為yes開啟狀態。

呼叫時鐘轉換介面。

獲取系統tick數完成時間統計。

例項描述

在下面的例子中,介紹了時間管理的基本方法,包括:

時間轉換:將毫秒數轉換為tick數,或將tick數轉換為毫秒數。

時間統計和時間延遲:統計每秒的cycle數、tick數和延遲後的tick數。

程式設計示例

前提條件:

時間轉換:

void example_transformtime(void)

時間統計和時間延遲:

uint32 example_gettick(void)

uwtickcount1 = los_tickcountget();//獲取tick數

if(0 != uwtickcount1)

los_taskdelay(200);//延遲200 tick

uwtickcount2 = los_tickcountget();

if(0 != uwtickcount2)

if((uwtickcount2 - uwtickcount1) >= 200)

return los_ok;

}else

return los_nok;

}}

liteos實時作業系統之event操作解析

事件是一種實現任務間通訊的機制,可用於實現任務間的同步,但事件通訊只能是事件型別的通訊,無資料傳輸。乙個任務可以等待多個事件的發生 可以是任意乙個事件發生時喚醒任務進行事件處理 也可以是幾個事件都發生後才喚醒任務進行事件處理。事件集合用32位無符號整型變數來表示,每一位代表乙個事件。多工環境下,任務...

liteos實時作業系統之訊號量

訊號量 semaphore 是一種實現任務間通訊的機制,實現任務之間同步或臨界資源的互斥訪問。常用於協助一組相互競爭的任務來訪問臨界資源。在多工系統中,各任務之間需要同步或互斥實現臨界資源的保護,訊號量功能可以為使用者提供這方面的支援。通常乙個訊號量的計數值用於對應有效的資源數,表示剩下的可被占用的...

實時作業系統

所謂 實時作業系統 實際上是指作業系統工作時,其各種資源可以根據需要隨時進行動態分配。由於各種資源可以進行動態分配,因此其處理事務的能力較強 速度較快。無論什麼控制系統一旦弄上 實時 兩個字就是對響應時間有嚴格的要求。實時作業系統貴在實時,要求在規定的時間內完成某種操作。主要用在工業控制中,實時作業...