国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

基于STM8S的Atomthreads低功耗的深度思考

發布時間:2016-9-21 13:58    發布者:designapp
關鍵詞: STM8S , Atomthreads
  Atomthreads像眾多操作系統一樣,在沒有任務調度是會調用idle。(by cpuwolf)
  static void atomIdleThread (uint32_t param)
  {
  /* Compiler warning */
  param = param;
  /* Loop forever */
  while (1)
  {
  /** \todo Provide user idle hooks*/
  }
  }
  atomthreads中atomIdleThread()是以線程的形式存在,也就是最低優先級線程。作者默認沒有填寫這個函數。
  uint8_t atomOSInit (void *idle_thread_stack_top, uint32_t idle_thread_stack_size)
  {
  uint8_t status;
  /* Initialise data */
  curr_tcb = NULL;
  tcbReadyQ = NULL;
  atomOSStarted = FALSE;
  /* Create the idle thread */
  status = atomThreadCreate(&idle_tcb,
  IDLE_THREAD_PRIORITY,
  atomIdleThread,
  0,
  idle_thread_stack_top,
  idle_thread_stack_size);
  /* Return status */
  return (status);
  }
  針對STM8我們最自然想到的是在其中加一個wfi,STM8進入wfi模式幾乎不會影響任何外設的運行。以STM8S105K4為例,其進入該模式的典型電流是1.8mA。這個電流,用一節2000mA手機供電,理論上也最多能堅持46天,才一個月多點。這個記錄太差了。
  STM8還有一個HALT模式,這是該芯片的最低功耗模式,電流是uA級別。但是該模式有諸多限制,進入該模式系統幾乎所有的clock都停止,你的timer,adc,uart等等全部停止,除了AWU。
  


  atomthreads如果你在idle直接進入HALT,因為基本只有外部中斷可以喚醒退出這個模式,當系統醒來了,請你想想,你的系統心跳還準么?你的應用線程如果使用了定時器,本來希望1秒鐘后調用某個CALLBACK,結果HALT睡了5分鐘,那還是定時器API本身參數的意義么?
  對datasheet熟悉的讀者可能,可能立刻想到了AWU,似乎可以解決這個問題。在idle進入HALT前,把還能睡的時間填入AWU,這樣系統就可以在制定的時間被喚醒。粗略的一看,還以為問題解決了。
  暫時不談AWU的時間不是任意值都可以接受的,是一個非常不準確的喚醒時鐘。
  舉個其他例子,如果idle進入HALT前,系統還可以睡20分鐘,我覺的一個設計優良的低功耗系統,應用層讓系統有睡20分鐘的可能性是很起碼的。不幸的是,在5分鐘的時候,一個外部中斷進來了,系統很自然退出HALT。我想問你,從系統的角度看,系統之前睡了多久。不要告訴玩我是5分鐘,大哥,那是我假設的,我問得是,從系統的角度。睡了多久?AWU這個唯一在運行的模塊,上面是沒有時間讓你讀的,你完全無法得知剛才睡了多久。
  其實上面的這個理念不是我創造的,在linux中早就有了,它叫variable tick timer,什么意思?通常我們的心跳時鐘,是有規律的觸發中斷,比如10ms一次,這導致系統最多能安靜10ms,想多睡會兒?沒門!10ms后中斷就來了。這種設計對低功耗是不利的。后來就有大牛,引入了variable tick timer,這里tick timer就是我們上面一直說的心跳時鐘。variable就是可變的羅!表面意思就是我們的心臟可以走走停停,這樣想已經不符合人類的自然規律,所以也確實不能再叫heart beattimer。當系統醒的時候,是有規律的跳動,當系統睡眠的時候, timer就停跳。其實就是上面想實現的東西。
本文地址:http://m.qingdxww.cn/thread-174318-1-1.html     【打印本頁】

本站部分文章為轉載或網友發布,目的在于傳遞和分享信息,并不代表本網贊同其觀點和對其真實性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問題,我們將根據著作權人的要求,第一時間更正或刪除。
您需要登錄后才可以發表評論 登錄 | 立即注冊

廠商推薦

  • Microchip視頻專區
  • 利用SAM E54 Xplained Pro評估工具包演示CAN轉USB橋接器以及基于CAN的主機和自舉程序應用程序
  • 使用SAM-IoT Wx v2開發板演示AWS IoT Core應用程序
  • 使用Harmony3加速TCP/IP應用的開發培訓教程
  • 集成高級模擬外設的PIC18F-Q71家族介紹培訓教程
  • 貿澤電子(Mouser)專區
關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
快速回復 返回頂部 返回列表
主站蜘蛛池模板: 韩国一级 | 国产精品久久久久毛片真精品 | 日韩精品一区二区三区中文字幕 | 免费h福利动漫网站在线 | 99爱视频免费高清在线观看 | 麻豆18在线播放 | 韩国日本免费高清观看 | 欧美高清正版在线 | 精新精新国产自在现拍欣赏网 | 久久免费99精品国产自在现线 | 久久99精品综合国产首页 | 四虎国产在线观看 | 激情综合网址 | 麻豆视频秘密入口 | 国产高清视频免费 | 亚洲影视在线观看 | 欧美黄色大片免费观看 | 日韩欧美精品在线 | 天堂网视频在线 | 黑人一区二区三区中文字幕 | 欧美日韩在线永久免费播放 | 国产成人拍精品视频网 | 国产伦理久久精品久久久久 | 亚洲最大看欧美片网站 | 精品一区二区三区在线观看 | 狠狠操操操 | 拍拍叫痛的无挡视频免费 | 四虎影院免费 | 在线看免费毛片 | 国产色拍 | 久久在精品线影院精品国产 | 欧美在线视频一区二区三区 | 国产一区91 | 日本韩国一级片 | 成人精品一区二区三区校园激情 | 亚洲二区在线 | 久久免费看片 | 手机看片国产免费现在观看 | 中文有码在线观看 | 欧美在线中文字幕 | 亚洲欧美日本视频 |