發(fā)布成功
贊賞金額:
支付金額:5元
支付方式:
贊賞成功!
你的贊賞是對作者最大的肯定~?
DMA 功能,用于將數(shù)據(jù)直接從通信接口傳輸?shù)较到y(tǒng) RAM
直接訪問所有外設(shè)和寄存器
通過 PMU 在中斷觸發(fā)和域上電(例如定時器、GPIO)后立即執(zhí)行
SNC 到主處理器通知,以及反向通知
SNC 與所有通信接口(SPI、I2C 和 UART)位于相同的電源域,SNC 還可以控制其他電源域。它執(zhí)行駐留在系統(tǒng) RAM 中的微碼,其中 SNC 具有直接內(nèi)存連接;以系統(tǒng)時鐘速度運(yùn)行;并且可以生成中斷以通知 PMU 所有操作都已完成,從而可以關(guān)閉整個系統(tǒng)的電源。
圖 3. 傳感器節(jié)點(diǎn)控制器框圖
使用此類專用硬件執(zhí)行傳感器和外設(shè)數(shù)據(jù)操作的架構(gòu)的主要優(yōu)點(diǎn)是:
主 CPU 睡眠時間更長,從而可以節(jié)省功耗
節(jié)省 MIPS,因?yàn)?CPU 不必訪問慢速外設(shè)或執(zhí)行簡單的數(shù)據(jù)操作
不過它有一些缺點(diǎn)。SNC 編程模型的非常簡單的指令集僅允許基本操作。另外,編程 SNC 需要使用匯編語言。最后,由于 SNC 是一個非常簡單的模塊,調(diào)試會變得復(fù)雜。
節(jié)省功耗和 MIPS
我們已經(jīng)進(jìn)行了一系列測量,證明了使用 SNC 可以實(shí)現(xiàn)的功耗和 MIPS 節(jié)省。這些測量是在 Dialog 的基于 ARM Cortex-M33 的 DA1469x SoC 上進(jìn)行的,并比較了只使用主 CPU 和在 SNC 支持下執(zhí)行的相同任務(wù)。 第一組測量集中在訪問通常用于傳感器讀數(shù)的慢速外設(shè)(如 I2C 和 SPI)時節(jié)省的功耗 /MIPS。第二組測量著眼于使用 DA1469x 中包含的藍(lán)牙低功耗(BLE)通信模塊的實(shí)際應(yīng)用案例。
與 CPU(CM33)相比,SNC 執(zhí)行事務(wù)所需的時間要短很多,如表 2 所示。由于 CPU 可能需要執(zhí)行忙等待,因此節(jié)省了時間相當(dāng)于節(jié)省了 MIPS。
表2:SNC寫/讀8bit數(shù)據(jù)所需的時間以及CPU相應(yīng)所需的時間
對現(xiàn)實(shí)生活中的使用案例,我們比較了每隔 1500 毫秒(表 3)和 500 毫秒(表 4)進(jìn)行廣播時所消耗的功率,同時使用 SPI 每 100 毫秒讀取加速計(jì)傳感器一次。
表 3:每 1500 毫秒進(jìn)行廣播時的能耗,使用 SPI 每 100 毫秒進(jìn)行一次傳感器讀取
表 4:每 500 毫秒進(jìn)行廣播時的能耗,使用 SPI 每 100 毫秒進(jìn)行一次傳感器讀取
在復(fù)雜的應(yīng)用中,如果需要訪問多個傳感器,考慮到緩存未命中和任務(wù)切換等問題,對 MCU 的占用會更大。
降低編程復(fù)雜度
上面提到過,使用集成的傳感器節(jié)點(diǎn)控制器時面臨的最大挑戰(zhàn)之一,是確?;A(chǔ)系統(tǒng)功能的編程、調(diào)試和充分利用與采用通用 MCU 的方案一樣簡單。挑戰(zhàn)的主要方面有:
提供對開發(fā)人員友好的抽象編程,以有效控制驅(qū)動與連接的傳感器 / 外設(shè)的通信接口,以及與主 CPU 通信相對應(yīng)的基本功能。
利用 10 指令匯編式編程,并提供更高級別的編程結(jié)構(gòu),以簡化和加速軟件開發(fā)。
支持完整的系統(tǒng)整體調(diào)試 - 而不是單獨(dú)調(diào)試每個 CPU 內(nèi)核,因?yàn)榭赡軣o法檢測到當(dāng)內(nèi)核并行運(yùn)行時的系統(tǒng)行為錯誤。
為了解決這些挑戰(zhàn),我們需要一個完整、易于使用的編程框架。它必須包括抽象和程序,將并發(fā)操作系統(tǒng)任務(wù)的范例擴(kuò)展到在 SNC 上執(zhí)行的相應(yīng)(并行)處理。我們已經(jīng)為 Dialog DA1469x 解決方案開發(fā)了這樣的編程框架(圖 4)。它具有以下特點(diǎn):
簡化的 SNC 微碼開發(fā)
o 通過定義基于 SeNIS 的類 C 編程語言,可以同時支持匯編和類 C 編程。
用于編程的“混合”編碼模型
o 在相同的源和頭文件中同時包含針對 SNC 和主處理器情境(context)的代碼開發(fā) - 使用了一個 C 預(yù)處理器來定義基于 SeNIS 的語言結(jié)構(gòu),方便開發(fā)人員。
與驅(qū)動主處理器通信接口、交換 SNC 通知、和操作系統(tǒng)資源相關(guān)的基礎(chǔ)機(jī)制和功能的抽象,作為一組完整且易于使用的 API 程序 / 類 C 函數(shù)。
圖 4. SNC 編程框架
SNC 編程模型的特征可歸納如下:
DA1469x 應(yīng)用包括由 OS 任務(wù)和 SNC 微碼并行執(zhí)行的進(jìn)程。
SNC 適配器向 DA1469x 系統(tǒng)注冊或注銷 SNC 微碼,從而創(chuàng)建一列 SNC 微碼,每個微碼由特定 PMU 事件觸發(fā)。
SNC 適配器采用特殊的 SNC 微碼,根據(jù)相應(yīng)的微碼列表實(shí)現(xiàn)注冊的 SNC 微碼執(zhí)行的調(diào)度,并通過其低級驅(qū)動器控制 SNC 硬件模塊。
定義了一組基于 SeNIS 的結(jié)構(gòu)預(yù)處理器宏,從而生成一組匯編和類 C 語言結(jié)構(gòu)用于 SNC 微碼開發(fā)。
提供一組低級驅(qū)動器 SNC 微碼,可用于驅(qū)動 SPI、I2C 等通信外設(shè)。
為操作系統(tǒng)任務(wù)和 SNC 微碼提供了一種機(jī)制,進(jìn)行交換:
o 通知
o 數(shù)據(jù)(即:SNC 隊(duì)列)
除了上述實(shí)現(xiàn)輕松編程 SNC 函數(shù)的結(jié)構(gòu)之外,還提供以下內(nèi)容以支持調(diào)試:
使用 SNC 斷點(diǎn)和逐步調(diào)試區(qū)域來調(diào)試 SNC 微碼的機(jī)制。
SNC 仿真器,而不是 SNC 硬件模塊,用于改進(jìn)和簡化 SNC 微碼調(diào)試過程。
本文介紹了一種新的架構(gòu),可最大限度地降低集成了多個傳感器和外設(shè)的便攜式系統(tǒng)的功耗。該架構(gòu)使用復(fù)雜的硬件狀態(tài)機(jī)來卸載主處理器上的一些重復(fù)性任務(wù),例如傳感器 / 外設(shè)輪詢和讀取。與其他架構(gòu)相比,這種新架構(gòu)在功耗和 MIPS 優(yōu)化方面具有很大的優(yōu)勢,不過會使編程模型變的更復(fù)雜。因此,我們還介紹了一種對開發(fā)人員友好的編程框架來克服該問題。