吴忠躺衫网络科技有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

嵌入式業務軟件設計介紹

麥辣雞腿堡 ? 來源:嵌入式系統 ? 作者:嵌入式系統 ? 2023-12-07 15:09 ? 次閱讀

業務軟件設計

低功耗從硬件上能夠解決一部分,但單純依靠硬件肯定是不行的,需要軟件的密切配合,才能達到最好的效果。以上是從硬件驅動層面的,一般情況下都比較關注,但實際上軟件業務層的靈活性高,發掘低功耗的效果比硬件低功耗本身的效果更加顯著,通俗地講,底層硬件辛辛苦苦地優化設計節省的效果,遠遠不如軟件設計得好的表現。

從軟件的業務邏輯、產品需求方面的設計,在功耗方面更有意想不到的效果,軟件功耗優化簡單總結就是“能睡就睡”。

4.1 任務周期化

一個嵌入式產品包括很多子功能、子任務,一個應用是對若干服務的調用實現的。這里服務可以是硬件服務,比如AD電壓采樣、UART串口通訊,也可以是軟件服務,比如TCP/IP網絡通信等。簡單的功能如CRC校驗,純軟件實現,函數運行立即獲得結果,對功耗無所謂影響;復雜的功能,盡量使用任務的方式來實現,并不是特指操作系統的task或者thread,可以理解為一個流程,即一個子功能運行的完整過程。一件事有始有終就可以根據需要循環反復,周期運行的任務,明確運行的起止時間點,區分運行與非運行狀態就能更好的優化,比如減少運行持續時間或者其中大電流的時間段,在功耗方面效果比較明顯。

4.2 休眠自理與協調

將整個嵌入式軟件系統分成了很多周期性工作的小任務,它們可能是交錯的或者毫無關系并行的。從本質上說,每個小任務只需關注自身的起止時間點。系統的功耗管理就是為每個任務的功耗進行管理,整體在一個有效的協調方式下才能做到功耗最小。基于任務的功耗管理實際上分成兩個部分,微觀角度單任務自身的功耗管理,和宏觀角度多任務的休眠協調。

從微觀角度來看,一個任務能獨立完成自己的功能,任務中所有的步驟都是確定的,都是“自己說了算的”,對外界來說是“黑盒子”,對低功耗的要求,不外乎以下幾種情形:

(1)、任務執行的過程中不允許休眠,因此任務的開頭和結尾處要設置標志,告知協調系統,“只要我不同意,就不允許系統休眠”。 (2)、任務執行的過程中,某些階段允許休眠,某些階段不允許休眠;任務的執行過程中,不同階段允許不同的休眠等級。 (3)、任務執行的過程中,不在乎是否休眠。

三類任務同時存在于系統中,第一類任務是相當霸道的,只要它在執行,根本不允許休眠;第二類任務既完成了任務,又兼顧了休眠;第三類任務基本上可當做空氣無視。系統任務設計時應盡可能編寫后兩類任務,避免或者嘗試拆分第一類任務。

從宏觀角度來看,任意時刻可能有多個任務同時在執行,每個任務對休眠的需求都是不同的。如果要設立一個協調機制,該怎么辦呢?每個任務按最低需求,隨時來休眠協調機構簽到投票,表明自身當前能夠容忍的最低功耗對應的休眠等級,休眠協調機構的仲裁者定時或輪詢檢查所有任務的投票結果,找到最小的休眠等級,類似水桶的最矮一環作為“共識”,然后進入相應的休眠等級。

如果有人投了“不休眠”的票,仲裁就只能放棄休眠。所以,每一個任務都應該是一個負責的任務,都應該根據自己的不同步驟及時的更新自己對休眠的容忍度,從而保證投票能夠達成有意義的結果。

這種機制實現也很容易,比如

//微信公眾號:嵌入式系統

uint16_t sleep_enable = 0xFFFF; //0xFFFF表示可以進入休眠

uint16_t sleep_enable=0xFFFF,表示系統可以進入休眠,每個任務獨立的操作相應的一位,禁止休眠時清0,允許休眠則置1。休眠協調機制即定時查詢sleep_enable是否為0xFFFF,可以在main輪詢或RTOS的待機任務查詢,進行休眠的進出。

任務的劃分合理,盡量允許休眠,通過這種協商機制可以解決“能睡就睡”的問題。

4.3 任務等待合并

設備運行中必然存在定時喚醒的任務,多個定時任務隨機的在任意時刻喚醒工作,導致頻繁退出休眠。這種情況下,在最大允許延遲的情況下,多個任務可以在一次喚醒全部執行。比如去超市買菜,肯定是一次把當天需要的菜都買了,而不是每餐前都去買,一天到晚跑超市。在4G物聯網產品應用,比如設備每3分鐘需要向服務器發送一個TCP/IP心跳包,同時傳感器每10秒采集一個數據也需要上報服務器,可以實現為數據緩存,等到3分鐘的定時器溢出上報時,將采集的多組傳感器數據組合一并上報,減少無線網絡模塊喚醒的次數。

4.4 及時止損

因為環境或外設組合不同,可能在某些時間段無法實現需求,或者結合當前信息大概率無法實現,或者硬件部分故障,軟件監測到這種異常后,需要及時止損,減少不必要的消耗。例如GNSS衛星定位,其屬性就是必須在開闊區域才能定位,如果設備開啟GNSS但發現信號很差,可初步判斷當前位置可能在室內,即使繼續工作也不能定位,可以立刻關閉GNSS節省電量;當然產品在需求層面需要考慮不定位的其他操作。或者通信中確認外設不存在或者損壞,就沒必要繼續供電定時交互,進行異常報警即可。

4.5 需求層面

在需求定義時,充分考慮某個任務或外設工作的起止要求,避免長時間進行無效工作。例如可以根據加速度傳感器判斷設備是否處于運動狀態在開啟監控,或者通過紅外或聲控判斷有人接近才開啟工作。這種都是通過產品定義,在需求層面組合,滿足要求才喚醒工作,不滿足則及時停止進入休眠,當然也可能增加硬件成本。部分設備也可以考慮使用場地增加太陽能充電板,開源節流。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 驅動
    +關注

    關注

    12

    文章

    1851

    瀏覽量

    85651
  • 硬件
    +關注

    關注

    11

    文章

    3382

    瀏覽量

    66461
  • 嵌入式軟件
    +關注

    關注

    4

    文章

    240

    瀏覽量

    26736
收藏 人收藏

    評論

    相關推薦

    嵌入式環境下軟件設計的特點是什么

    詳見微信公眾號,二進制人生。目錄:嵌入式環境下軟件設計的特點設計目標設計思路多進程解耦嵌入式環境下軟件設計的特點要談嵌入式
    發表于 11-09 06:31

    嵌入式軟件設計和單片機軟件設計的區別是什么?

    嵌入式軟件設計和單片機軟件設計目前的應用很多,這兩者有什么區別? 嵌入式主要說的什么?結構是啥!
    發表于 11-10 07:46

    基于ARM的嵌入式系統軟件設計

    嵌入式軟件的啟動代碼嵌入式軟件開發關鍵技術嵌入式實時操作系統程序的鏈接定位軟件調試技術http:
    發表于 03-25 15:03 ?203次下載
    基于ARM的<b class='flag-5'>嵌入式</b>系統<b class='flag-5'>軟件設計</b>

    ARM嵌入式系統開發-軟件設計與優化

    ARM嵌入式系統開發-軟件設計與優化
    發表于 02-11 09:57 ?94次下載
    ARM<b class='flag-5'>嵌入式</b>系統開發-<b class='flag-5'>軟件設計</b>與優化

    基于ARM的嵌入式軟件設計

    基于ARM的嵌入式軟件設計 駐留監控軟件Resident Monitors 是一段運行在目標板上的程序集成開發環境中的調試模塊通過以太網口并行端口或者串行端口等通訊端口與
    發表于 03-31 14:59 ?44次下載

    嵌入式USB主機設計(硬件設計和軟件設計)

    嵌入式USB主機設計(硬件設計和軟件設計) 嵌入式USB主機硬件設計選用廉價的51系列單片機(89C52)控制US
    發表于 11-26 13:58 ?1337次閱讀
    <b class='flag-5'>嵌入式</b>USB主機設計(硬件設計和<b class='flag-5'>軟件設計</b>)

    如何查找嵌入式軟件設計中的缺陷

    如何查找嵌入式軟件設計中的缺陷 本文將介紹如何避免那些隱蔽然而常見的錯誤,并介紹的幾個技巧幫助工程師發現軟件中隱藏的錯
    發表于 04-09 14:37 ?753次閱讀

    基于ARM的嵌入式系統軟件設計部分

    基于ARM的嵌入式系統軟件設計部分
    發表于 01-14 12:32 ?15次下載

    ARM的嵌入式系統軟件設計

    ARM的嵌入式系統軟件設計
    發表于 10-27 15:00 ?8次下載
    ARM的<b class='flag-5'>嵌入式</b>系統<b class='flag-5'>軟件設計</b>

    嵌入式軟件是什么意思_嵌入式軟件的分類有哪些

    本文首先闡述了嵌入式軟件的概念,其次介紹嵌入式軟件的特征,最后介紹
    發表于 08-31 15:54 ?1.6w次閱讀

    嵌入式軟件設計工具應該如何選擇

    通常取決于你所使用的嵌入式軟件設計工具。你需要工具來快速有效地構建軟件,那么選擇嵌入式軟件設計工具需要考慮哪些因素呢,以下是需要考慮的四個最
    發表于 12-23 12:26 ?11次下載

    基于RTOS的嵌入式系統軟件設計

    基于RTOS的嵌入式系統軟件設計說明。
    發表于 04-19 14:38 ?17次下載

    嵌入式系統軟件設計教材資料

    嵌入式系統軟件設計教材資料免費下載。
    發表于 04-12 14:44 ?5次下載

    基于嵌入式WEB的電站數據動態監控軟件設計

    電子發燒友網站提供《基于嵌入式WEB的電站數據動態監控軟件設計.pdf》資料免費下載
    發表于 10-24 10:01 ?0次下載
    基于<b class='flag-5'>嵌入式</b>WEB的電站數據動態監控<b class='flag-5'>軟件設計</b>

    嵌入式軟件設計的原則分享

    嵌入式軟件開發如果具有更好的閱讀性、擴展性以及維護性,就需要考慮很多因素。今天給大家分享幾個嵌入式軟件設計的原則。
    發表于 02-25 10:54 ?751次閱讀
    <b class='flag-5'>嵌入式</b><b class='flag-5'>軟件設計</b>的原則分享
    叶氏百家乐官网平注技巧| 大发888赌场官方下载| 棋牌游戏易发| 博网百家乐官网现金网| 做生意风水关键吗| 威尼斯人娱乐平台官网| 玩百家乐官网游戏经验| 钱隆百家乐分析| 青河县| 百家乐下注平台| 晓游棋牌官方下载| 基础百家乐官网规则| 威尼斯人娱乐城首存| 百家乐官网的玩法和技巧| 百家乐送彩金网络| 南丹县| 百家乐视频游戏会员| 横山县| 百家乐博之道娱乐城| 巴林右旗| 缅甸百家乐网络赌博解谜| 通榆县| 百家乐棋牌游戏皇冠网| 休宁县| 真人百家乐视频赌博| 百家乐官网交流群号| 百家乐庄闲对冲| 利赢百家乐官网现金网| 百家乐娱乐网备用网址| 真人百家乐官网试玩账号| 大连百家乐食品| 百家乐官网套装| 全讯网开奖直播| 百家乐官网tt娱乐平台| 大发888手机版官网| 澳门赌百家乐官网的玩法技巧和规则 | 澳门百家乐官网自杀| 百家乐qq游戏| 新百家乐官网庄闲路单图记录| 大发888娱乐游戏外挂| 模拟百家乐官网下|