日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

AliOS Things 电源管理框架使用说明

發布時間:2024/8/23 编程问答 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 AliOS Things 电源管理框架使用说明 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、電源管理框架簡介

電源管理框架的目的在于節約CPU的功耗。傳統上,當操作系統處于空閑狀態時,比如所有用戶任務和系統任務處于阻塞狀態,將執行idle task。idle task的通常做法是一個while(1)空循環,從匯編視角看是不斷執行跳轉指令,也就是說當操作系統空閑時,CPU將處于空轉狀態。使能電源管理框架后,當系統進入idle task后,將設置CPU進入低功耗狀態,從而節省CPU的功耗。

?

AliOS Things電源管理框架具有如下特點:

(1)應用配置電源管理框架并添加初始化代碼后,整個框架的運行對應用透明,用戶無需為了支持電源管理框架而修改應用代碼;

(2)支持多級低功耗狀態;

在某些MCU上,根據不同的節電程度和喚醒時間分為多級睡眠,電源管理框架提供了對該特性的支持,在進入低功耗狀態時將根據睡眠時間和節電程度選擇最佳睡眠等級。

(3)支持tickless機制

當MCU決定進入低功耗狀態時,將關閉系統tick中斷,并在醒來的時候恢復系統tick中斷并補償睡眠過程中丟失的tick數。這種策略通過減少系統時鐘中斷來最大程度降低系統空閑時的功耗。

(4)支持精簡的低功耗模式

當MCU進入低功耗后,不關閉系統tick中斷,系統tick也能喚醒系統。它的優點是實現簡單,但當系統長時間空閑時,由于系統時鐘頻繁喚醒系統,不利于節能。

在某基于nrf52832 MCU的開發板上測試電源管理框架的運行效果如下:

在普通運行模式下nrf52832 MCU的平均運行電流在4mA左右,在添加電源管理模塊后MCU的電流測試如下表所示:

測試項

平均電流

說明

低功耗狀態

2.06uA

?

BLE廣播態功耗(開啟低功耗模塊,廣播intervel 100ms)

120uA

電壓3v,發送負載21字節,TX功率0dBm。

BLE廣播態功耗(開啟低功耗模塊,廣播intervel 1000ms)

14.7uA

電壓3v,發送負載21字節,TX功率0dBm。

BLE廣播態功耗(開啟低功耗模塊,廣播intervel 2000ms)

8.1uA

電壓3v,發送負載21字節,TX功率0dBm。

從測試結果可以看出,在對功耗敏感的系統上,比如依靠電池供電的系統,非常有必要使用電源管理框架,它可顯著降低系統功耗,增加系統待機時間。

?

二、應用配置(為應用添加低功耗支持)

應用若要使用電源管理框架,需進行如下配置:

(1)應用目錄的.mk文件中添加對電源管理模塊的依賴,示例:

???? GLOBAL_DEFINES += RHINO_CONFIG_CPU_PWR_MGMT=1

$(NAME)_COMPONENTS :=?rhino/pwrmgmt

(2)在應用初始化函數中(比如application_start(int argc, char *argv[]))調用電源管理模塊初始化函數。

??? cpu_pwrmgmt_init();

?

三、示例應用(app/example/pwr_test)

目前AliOS Things 2.0版本在developerkit和PCA10040平臺上對電源管理框架進行了適配,可用如下命令編譯示例應用并下載到develoerkit上運行:

aos make pwr_test@developerkit

aos upload pwr_test@developerkit

示例應用創建了2個任務demo1和demo2。demo1的主要邏輯是一個while循環:count1增1,同時打印count1和g_idle_count[0]的值,然后睡眠1秒。demo2的主要邏輯也是一個while循環:count2增1,同時打印count2的值,然后睡眠2秒。

其中g_idle_count[0]是一個全局變量,idle任務在執行時會累加該值。

若沒有開啟低功耗模塊,那么當demo1和demo2處于睡眠狀態時,idle任務持續執行,g_idle_count[0]不斷增加。輸出示例如下:

count1 = 0, idle = 0

count2 = 0

count1 = 1, idle = 2347298

count1 = 2, idle = 4693421

count2 = 1

count1 = 3, idle = 7036926

count1 = 4, idle = 9383049

count2 = 2

count1 = 5, idle = 11726554

count1 = 6, idle = 14072465

?

開啟低功耗時,當demo1和demo2處于睡眠狀態時,idle任務執行g_idle_count[0]增1后,調用cpu_pwr_down()進入低功耗狀態。因此系統每次進入空閑狀態,g_idle_count[0]只增加1。輸出示例如下:

count1 = 0, idle = 0

count2 = 0

count1 = 1, idle = 1

count2 = 1

count1 = 2, idle = 3

count1 = 3, idle = 4

count2 = 2

count1 = 4, idle = 6

count1 = 5, idle = 7

?

說明:如果條件允許,直接測試功耗,比如測試MCU的電流,效果更直觀。?

?

四、電源管理框架的適配

由于電源管理框架的運行依賴于硬件能力,因此在適配時首先要分析目標硬件是否有能力支持,然后要基于硬件能力為電源管理框架提供相關驅動。

4.1 硬件要求

要想支持電源管理框架,目標MCU需要支持如下特性:

(1)至少支持一種低功耗模式。在該低功耗模式下,RAM和寄存器的值能夠被維持。

(2)在低功耗模式下,存在可用的定時器,且該定時器能喚醒系統。在tickless機制下,該定時器用于計算低功耗時間,以補償系統時鐘。

4.2 適配接口

為了支持電源管理模塊需完成如下接口適配:?

適配接口

功能說明

board_cpu_pwr_init

初始化CPU的電源管理能力,比如注冊CPU電源狀態設置函數,注冊CPU電源管理能力,注冊喚醒延遲時間,注冊喚醒/計時定時器。

cpu_cstate_set_t

設置CPU的低功耗狀態

systick_suspend

掛起系統時鐘,系統時鐘在低功耗狀態下停止運行

systick_resume

恢復系統時鐘

one_shot_timer_t

低功耗下運行的喚醒/計時定時器。在低功耗下的計時,用于退出低功耗狀態時補償系統時鐘。

?注:可參考developerkit和PCA10040平臺上的適配示例(pwrmgmt_hal目錄)。

在適配過程中用戶可以調用如下接口:

可用接口

功能概述

cpu_pwr_node_init_static

初始化CPU節點

cpu_pwr_node_record

注冊CPU節點

cpu_pwr_c_state_capability_set

設置CPU支持的低功耗模式

cpu_pwr_c_state_latency_save

設置某個指定低功耗狀態的喚醒延遲時間

tickless_one_shot_timer_save

注冊支持tickless機制的定時器

cpu_pwr_c_method_set

注冊CPU狀態設置函數

? ? ? ??
原文鏈接
本文為云棲社區原創內容,未經允許不得轉載。

總結

以上是生活随笔為你收集整理的AliOS Things 电源管理框架使用说明的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。