首页
/
每日頭條
/
科技
/
liteos和linux區别
liteos和linux區别
更新时间:2025-11-09 02:18:55

持續分享嵌入式技術,操作系統,算法,c語言/python等,歡迎小友關注支持

概述

基本概念

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

系統時鐘是由定時/計數器産生的輸出脈沖觸發中斷而産生的,一般定義為整數或長整數。輸出脈沖的周期叫做一個“時鐘滴答”。系統時鐘也稱為時标或者Tick。一個Tick的時長可以靜态配置。

用戶是以秒、毫秒為單位計時,而芯片CPU的計時是以Tick為單位的,當用戶需要對系統操作時,例如任務挂起、延時等,輸入秒為單位的數值,此時需要時間管理模塊對二者進行轉換。

Tick與秒之間的對應關系可以配置。

Huawei LiteOS的時間管理模塊提供時間轉換、統計、延遲功能以滿足用戶對時間相關需求的實現。

相關概念

  • Cycle

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

  • Tick

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

開發指導

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

  1. 時間轉換:根據主頻實現CPU Tick數到毫秒、微秒的轉換。
  2. 時間統計:獲取系統Tick數。

liteos和linux區别(liteos實時操作系統之時間管理)1

開發流程

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

确認配置項LOSCFG_BASE_CORE_TICK_HW_TIME為YES開啟狀态。

在los_config.h中配置每秒的Tick數LOSCFG_BASE_CORE_TICK_PER_SECOND;

調用時鐘轉換接口。

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

通過LOS_TickCountGet獲取全局g_ullTickCount。

注意事項

獲取系統Tick數需要在系統時鐘使能之後。

時間管理不是單獨的功能模塊,依賴于los_config.h中的OS_SYS_CLOCK和LOSCFG_BASE_CORE_TICK_PER_SECOND兩個配置選項。

系統的Tick數在關中斷的情況下不進行計數,故系統Tick數不能作為準确時間計算。

編程實例

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

時間轉換:将毫秒數轉換為Tick數,或将Tick數轉換為毫秒數。

時間統計和時間延遲:統計每秒的Cycle數、Tick數和延遲後的Tick數。

編程示例

前提條件:

配好LOSCFG_BASE_CORE_TICK_PER_SECOND每秒的Tick數。

配好OS_SYS_CLOCK 系統時鐘,單位: Hz。

時間轉換:

VOID Example_TransformTime(VOID) { UINT32 uwMs; UINT32 uwTick; uwTick = LOS_MS2Tick(10000);//10000 ms數轉換為Tick數 printf("uwTick = %d \n",uwTick); uwMs= LOS_Tick2MS(100);//100 Tick數轉換為ms數 printf("uwMs = %d \n",uwMs); }

時間統計和時間延遲:

UINT32 Example_GetTick(VOID) { UINT32 uwRet = LOS_OK; UINT32 uwcyclePerTick; UINT64 uwTickCount1,uwTickCount2; uwcyclePerTick = LOS_CyclePerTickGet();//每個Tick多少Cycle數 if(0 != uwcyclePerTick) { dprintf("LOS_CyclePerTickGet = %d \n", uwcyclePerTick); } uwTickCount1 = LOS_TickCountGet();//獲取Tick數 if(0 != uwTickCount1) { dprintf("LOS_TickCountGet = %d \n", (UINT32)uwTickCount1); } LOS_TaskDelay(200);//延遲200 Tick uwTickCount2 = LOS_TickCountGet(); if(0 != uwTickCount2) { dprintf("LOS_TickCountGet after delay = %d \n", (UINT32)uwTickCount2); } if((uwTickCount2 - uwTickCount1) >= 200) { uwRet = LOS_InspectStatusSetByID(LOS_INSPECT_SYSTIC,LOS_INSPECT_STU_SUCCESS); if (LOS_OK != uwRet) { dprintf("Set Inspect Status Err\n"); } return LOS_OK; } else { uwRet = LOS_InspectStatusSetByID(LOS_INSPECT_SYSTIC,LOS_INSPECT_STU_ERROR); if (LOS_OK != uwRet) { dprintf("Set Inspect Status Err\n"); } return LOS_NOK; } }

,
Comments
Welcome to tft每日頭條 comments! Please keep conversations courteous and on-topic. To fosterproductive and respectful conversations, you may see comments from our Community Managers.
Sign up to post
Sort by
Show More Comments
推荐阅读
藍屏代碼0x000008e解決方法
藍屏代碼0x000008e解決方法
1、重啟電腦或者是強行關機,重新開機等待顯示屏出現開機界面的時候按F8,并且選擇“安全模式”回車确認...
2025-11-09
路由器怎麼設置登錄網址
路由器怎麼設置登錄網址
1、首先需要知道自己的IP地址,打開電腦設置”,在網絡和Internet”中打開WLAN”。2、進入已連接網絡的硬件屬性”,IPv4地址”即為自己電腦的IP地址。3、接着在浏覽器中輸入自己的IP地址,輸入登錄密碼後進入管理設置。4、找到高級設置”,然後點擊局域網設置”,修改局域網IP”即可設置登錄網...
2025-11-09
冬天養鴨要注意什麼
冬天養鴨要注意什麼
1、飼料。冬天天氣冷了,注意給鴨子吃的東西要重新搭配,比如說要有更多提供能量的東西,這樣的話才可以很好的抵禦寒冷,體重增長更好。否則的話,一個冬天過去,鴨子可能還會瘦上不少。另外的話,再加上一些維生素進去,特别是對于那些産蛋的鴨子來說,這樣的話可以讓他們的體質更加好,産蛋也更加多。如果不注意飼料的搭...
2025-11-09
iphone的通訊錄怎麼批量删除
iphone的通訊錄怎麼批量删除
1、電腦打開浏覽器,輸入地址進入icloud官網,按照頁面提示輸入賬号登錄系統。2、登錄成功後你會看到熟悉圓角矩形圖标,點第二個通訊錄”圖标,進入雲通訊錄。3、進入通訊錄後,所有通訊錄信息都顯示出來了,我們要做的就是把要删除的聯系人選中後删除。4、按住Ctrl鍵的同時用鼠标左鍵點選需要删除的聯系人,...
2025-11-09
手機還原微信聊天記錄的方法是什麼
手機還原微信聊天記錄的方法是什麼
1、首先打開微信,點我”然後點設置”。2、點了設置”以後,出現了一下的畫面,然後點幫助與反饋”。3、進入以後點底下的快捷幫助”,緊接着點異常修複”。4、異常修複”點了之後會出現溫馨提示,點下面的繼續操作”,進去就是故障修複,點聊天記錄”,會出現确定按鈕,點擊确定就開始重啟微信,進行載入數據,緊接着就...
2025-11-09
Copyright 2023-2025 - www.tftnews.com All Rights Reserved