久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

AliOS Things電源管理框架怎么使用

共計(jì) 2989 個(gè)字符,預(yù)計(jì)需要花費(fèi) 8 分鐘才能閱讀完成。

這篇文章主要講解了“AliOS Things 電源管理框架怎么使用”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著丸趣 TV 小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“AliOS Things 電源管理框架怎么使用”吧!

一、電源管理框架簡(jiǎn)介

電源管理框架的目的在于節(jié)約 CPU 的功耗。傳統(tǒng)上,當(dāng)操作系統(tǒng)處于空閑狀態(tài)時(shí),比如所有用戶任務(wù)和系統(tǒng)任務(wù)處于阻塞狀態(tài),將執(zhí)行 idle
task。idle
task 的通常做法是一個(gè) while(1) 空循環(huán),從匯編視角看是不斷執(zhí)行跳轉(zhuǎn)指令,也就是說(shuō)當(dāng)操作系統(tǒng)空閑時(shí),CPU 將處于空轉(zhuǎn)狀態(tài)。使能電源管理框架后,當(dāng)系統(tǒng)進(jìn)入 idle
task 后,將設(shè)置 CPU 進(jìn)入低功耗狀態(tài),從而節(jié)省 CPU 的功耗。

AliOS Things
電源管理框架具有如下特點(diǎn):

(1)應(yīng)用配置電源管理框架并添加初始化代碼后,整個(gè)框架的運(yùn)行對(duì)應(yīng)用透明,用戶無(wú)需為了支持電源管理框架而修改應(yīng)用代碼;

(2)支持多級(jí)低功耗狀態(tài);

在某些 MCU 上,根據(jù)不同的節(jié)電程度和喚醒時(shí)間分為多級(jí)睡眠,電源管理框架提供了對(duì)該特性的支持,在進(jìn)入低功耗狀態(tài)時(shí)將根據(jù)睡眠時(shí)間和節(jié)電程度選擇最佳睡眠等級(jí)。

(3)支持 tickless 機(jī)制

當(dāng) MCU 決定進(jìn)入低功耗狀態(tài)時(shí),將關(guān)閉系統(tǒng) tick 中斷,并在醒來(lái)的時(shí)候恢復(fù)系統(tǒng) tick 中斷并補(bǔ)償睡眠過(guò)程中丟失的 tick 數(shù)。這種策略通過(guò)減少系統(tǒng)時(shí)鐘中斷來(lái)最大程度降低系統(tǒng)空閑時(shí)的功耗。

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

當(dāng) MCU 進(jìn)入低功耗后,不關(guān)閉系統(tǒng) tick 中斷,系統(tǒng) tick 也能喚醒系統(tǒng)。它的優(yōu)點(diǎn)是實(shí)現(xiàn)簡(jiǎn)單,但當(dāng)系統(tǒng)長(zhǎng)時(shí)間空閑時(shí),由于系統(tǒng)時(shí)鐘頻繁喚醒系統(tǒng),不利于節(jié)能。

在某基于 nrf52832 MCU 的開發(fā)板上測(cè)試電源管理框架的運(yùn)行效果如下:

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

測(cè)試項(xiàng)

平均電流

說(shuō)明

低功耗狀態(tài)

2.06uA

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

120uA

電壓 3v,發(fā)送負(fù)載 21 字節(jié),TX 功率 0dBm。

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

14.7uA

電壓 3v,發(fā)送負(fù)載 21 字節(jié),TX 功率 0dBm。

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

8.1uA

電壓 3v,發(fā)送負(fù)載 21 字節(jié),TX 功率 0dBm。

從測(cè)試結(jié)果可以看出,在對(duì)功耗敏感的系統(tǒng)上,比如依靠電池供電的系統(tǒng),非常有必要使用電源管理框架,它可顯著降低系統(tǒng)功耗,增加系統(tǒng)待機(jī)時(shí)間。

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

應(yīng)用若要使用電源管理框架,需進(jìn)行如下配置:

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

  GLOBAL_DEFINES +=
RHINO_CONFIG_CPU_PWR_MGMT=1

$(NAME)_COMPONENTS :=
rhino/pwrmgmt

(2)在應(yīng)用初始化函數(shù)中(比如 application_start(int argc,
char *argv[]))調(diào)用電源管理模塊初始化函數(shù)。

  cpu_pwrmgmt_init();

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

目前 AliOS Things 2.0 版本在 developerkit 和 PCA10040 平臺(tái)上對(duì)電源管理框架進(jìn)行了適配,可用如下命令編譯示例應(yīng)用并下載到 develoerkit 上運(yùn)行:

aos make
pwr_test@developerkit

aos upload
pwr_test@developerkit

示例應(yīng)用創(chuàng)建了 2 個(gè)任務(wù) demo1 和 demo2。demo1 的主要邏輯是一個(gè) while 循環(huán):count1 增 1,同時(shí)打印 count1 和 g_idle_count[0] 的值,然后睡眠 1 秒。demo2 的主要邏輯也是一個(gè) while 循環(huán):count2 增 1,同時(shí)打印 count2 的值,然后睡眠 2 秒。

其中 g_idle_count[0] 是一個(gè)全局變量,idle 任務(wù)在執(zhí)行時(shí)會(huì)累加該值。

若沒(méi)有開啟低功耗模塊,那么當(dāng) demo1 和 demo2 處于睡眠狀態(tài)時(shí),idle 任務(wù)持續(xù)執(zhí)行,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

開啟低功耗時(shí),當(dāng) demo1 和 demo2 處于睡眠狀態(tài)時(shí),idle 任務(wù)執(zhí)行 g_idle_count[0] 增 1 后,調(diào)用 cpu_pwr_down() 進(jìn)入低功耗狀態(tài)。因此系統(tǒng)每次進(jìn)入空閑狀態(tài),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

說(shuō)明:如果條件允許,直接測(cè)試功耗,比如測(cè)試 MCU 的電流,效果更直觀。 

四、電源管理框架的適配

由于電源管理框架的運(yùn)行依賴于硬件能力,因此在適配時(shí)首先要分析目標(biāo)硬件是否有能力支持,然后要基于硬件能力為電源管理框架提供相關(guān)驅(qū)動(dòng)。

4.1 硬件要求

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

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

(2)在低功耗模式下,存在可用的定時(shí)器,且該定時(shí)器能喚醒系統(tǒng)。在 tickless 機(jī)制下,該定時(shí)器用于計(jì)算低功耗時(shí)間,以補(bǔ)償系統(tǒng)時(shí)鐘。

4.2 適配接口

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

適配接口

功能說(shuō)明

board_cpu_pwr_init

初始化 CPU 的電源管理能力,比如注冊(cè) CPU 電源狀態(tài)設(shè)置函數(shù),注冊(cè) CPU 電源管理能力,注冊(cè)喚醒延遲時(shí)間,注冊(cè)喚醒 / 計(jì)時(shí)定時(shí)器。

cpu_cstate_set_t

設(shè)置 CPU 的低功耗狀態(tài)

systick_suspend

掛起系統(tǒng)時(shí)鐘,系統(tǒng)時(shí)鐘在低功耗狀態(tài)下停止運(yùn)行

systick_resume

恢復(fù)系統(tǒng)時(shí)鐘

one_shot_timer_t

低功耗下運(yùn)行的喚醒 / 計(jì)時(shí)定時(shí)器。在低功耗下的計(jì)時(shí),用于退出低功耗狀態(tài)時(shí)補(bǔ)償系統(tǒng)時(shí)鐘。

在適配過(guò)程中用戶可以調(diào)用如下接口:

可用接口

功能概述

cpu_pwr_node_init_static

初始化 CPU 節(jié)點(diǎn)

cpu_pwr_node_record

注冊(cè) CPU 節(jié)點(diǎn)

cpu_pwr_c_state_capability_set

設(shè)置 CPU 支持的低功耗模式

cpu_pwr_c_state_latency_save

設(shè)置某個(gè)指定低功耗狀態(tài)的喚醒延遲時(shí)間

tickless_one_shot_timer_save

注冊(cè)支持 tickless 機(jī)制的定時(shí)器

cpu_pwr_c_method_set

注冊(cè) CPU 狀態(tài)設(shè)置函數(shù)

感謝各位的閱讀,以上就是“AliOS Things 電源管理框架怎么使用”的內(nèi)容了,經(jīng)過(guò)本文的學(xué)習(xí)后,相信大家對(duì) AliOS Things 電源管理框架怎么使用這一問(wèn)題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是丸趣 TV,丸趣 TV 小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!

正文完
 
丸趣
版權(quán)聲明:本站原創(chuàng)文章,由 丸趣 2023-08-16發(fā)表,共計(jì)2989字。
轉(zhuǎn)載說(shuō)明:除特殊說(shuō)明外本站除技術(shù)相關(guān)以外文章皆由網(wǎng)絡(luò)搜集發(fā)布,轉(zhuǎn)載請(qǐng)注明出處。
評(píng)論(沒(méi)有評(píng)論)
主站蜘蛛池模板: 成都市| 延川县| 清远市| 全州县| 闽侯县| 资阳市| 谢通门县| 抚远县| 平顺县| 巩留县| 班戈县| 水富县| 道真| 洛浦县| 宁乡县| 青岛市| 泰和县| 县级市| 英山县| 教育| 全南县| 平江县| 晋州市| 望江县| 枣强县| 醴陵市| 麟游县| 康乐县| 吉木萨尔县| 西和县| 灵山县| 中方县| 浮梁县| 滨州市| 进贤县| 泽普县| 治多县| 渝北区| 芮城县| 永胜县| 娄烦县|