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

裸奔的雙任務系統(tǒng)-嵌入式微系統(tǒng)連載之十一

發(fā)布時間:2016-2-29 14:05    發(fā)布者:designapp
  2014年春節(jié)里的一天上午,msOS QQ群里面討論的很激烈,“傳說中的火槍手”認為msOS-Mcu51已經很好了,對于msOS-Stm32引入uC/OS-II意見比較大。雖然他也用過uC/OS-II,但并不喜歡,有一種不確定感,所以很喜歡裸奔。但他的觀點受到群內不少RTOS用戶網友的反駁,以“獨釣千古愁”為代表,持續(xù)了將近半個多小時,我一直在旁圍觀。
  通過這次辯論,雙方都把各自的觀點表達的非常清晰、明了。RTOS有它的優(yōu)點,但確實存在很明顯的缺點,這個無可爭議,尤其是大家提出RTOS的幾個問題:
  1、 帶RTOS系統(tǒng),不便于移植,這個對msOS的跨硬件平臺推廣是很不利的。
  2、 嵌入式工程師,往往有強烈的掌控欲,而理解透徹RTOS有一定的難度,有一種把握不住的感覺而拒絕RTOS。
  3、 現(xiàn)實中絕大多數(shù)嵌入式項目,只要通過合理的設計,不需要RTOS。
  4、 帶RTOS的系統(tǒng),在任務調度時進入臨界態(tài),這個時候無法響應中斷,不適合應用于實時性要求高的地方。
  以上四個原因,讓我認識到需要推出一個msOS的無RTOS版本,但還要實現(xiàn)類似RTOS的雙任務功能,把業(yè)務邏輯與菜單界面分離。在討論中,“傳說中的火槍手”有一句話提醒了我,他提到他自己有一套類似MS3(msOS的前身)的架構,他用了一個中斷處理各種消息,而這個時候,我也在想著如何改造uC/OS-II的任務切換軟中斷,實現(xiàn)雙任務,思路完全一致,他的話說明了這個方案是可行的。
  后來的一段時間,忙著msOS文檔,進一步完善msOS代碼,一直沒有著手寫。直到三月份才開始按照軟中斷方式,粗粗的寫了一個無OS的雙任務版本msOS,實現(xiàn)了這個功能,但因為當時對Stm32的中斷系統(tǒng)理解不深,所以放到群內讓大家一起分析,尋找bug,這個時候,“獨釣千古愁”對無OS版本msOS提出了很多建議,并且直接在這個版本基礎上修改,完全的丟棄了匯編代碼,移植非常容易,其中部分處理方式引用了他跟“傳說中的火槍手”交流時提供的代碼。我再在“獨釣千古愁”提供的版本基礎上進一步優(yōu)化,統(tǒng)一風格,定型后在群內發(fā)布,當“傳說中的火槍手”看到最終版本,就覺得有他的影子存在。
  這個無OS版本的msOS,最終的命名是“Tomsu”起的,他參考軟件的命名習慣,因為這是一個無OS簡化版本,所以推薦為msOS-Lite版本,Lite的意思是“精簡”。可以說,msOS-Lite版本,是整個msOS群大家參與討論出來的,雖然有幾個相對重要的網友積極推動,但其它網友的貢獻是不能抹殺的,集體的力量是強大的。我對這個版本非常滿意,因為它準確的反應了msOS理念:簡單、易用。
  無RTOS實現(xiàn)雙任務,甚至多任務,本質上講跟RTOS方法類似的,只是RTOS是把一個main大循環(huán)斬成多個具有優(yōu)先級的小循環(huán),消息觸發(fā)決定在最高優(yōu)先級的小循環(huán)中執(zhí)行。因為是小循環(huán),死循環(huán),一直循環(huán)下去,所以必須要有觸發(fā)進入條件和等待資源掛起條件,否則這個小循環(huán)一直執(zhí)行下去,別的小循環(huán)就執(zhí)行不了了。
  無RTOS版本多任務,把中斷看作是任務,因為中斷優(yōu)先級高于main大循環(huán),建立一個最低優(yōu)先級的,可以被消息觸發(fā)的軟中斷來實現(xiàn)任務,但因為在中斷中,所以建立的這個任務不是一個死循環(huán),而是執(zhí)行完畢就跳出的。而這一點恰好符合msOS的業(yè)務邏輯中的消息機制,執(zhí)行完消息就退出的特點,不需要死循環(huán)等待在哪兒。
  多個中斷,就實現(xiàn)多個任務,尤其是systick系統(tǒng)節(jié)拍中斷,有很多事務在系統(tǒng)節(jié)拍中例行處理,類似任務,雖然這個任務不是嚴格意義上的,功能不強大,但夠我們用了,尤其是對msOS來說,只需要兩個任務,恰好合適。
  為了跟uC/OS-II兼容,選擇了軟中斷PendSV,把優(yōu)先級設置為最低。
  


  其次,宏定義形式定義軟中斷PendSV的觸發(fā)指令,只要EnterInterrupt這個宏指令被調用,就激活PendSV中斷。這部分代碼“獨釣千古愁”和“傳說中的火槍手”提供的,寫的非常好,原來這部分在匯編中的,移到了C語言中,這樣子msOS-Lite就沒有了匯編代碼。
  


  再次,編寫PendSV的中斷響應代碼,考慮到有多個消息源同時拋出消息,但響應中斷只有一次,所以在中斷響應中必須要把消息隊列中的消息處理完,否則會導致后續(xù)的消息因為中斷此前被占用而不會再次產生中斷標記而無法重入的問題。這兒增加了CheckMessage函數(shù)來實現(xiàn)。
  


  最后,改寫拋出消息入隊列函數(shù),調用EnterInterrupt觸發(fā)PendSV中斷。
  


  至此,無RTOS的msOS-Lite版本完成,非常感謝msOS QQ群的所有網友的支持與合作
                               
                                                               
                               
               
本文地址:http://m.qingdxww.cn/thread-161421-1-1.html     【打印本頁】

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

廠商推薦

  • Microchip視頻專區(qū)
  • Dev Tool Bits——使用MPLAB® Discover瀏覽資源
  • Dev Tool Bits——使用條件軟件斷點宏來節(jié)省時間和空間
  • Dev Tool Bits——使用DVRT協(xié)議查看項目中的數(shù)據(jù)
  • Dev Tool Bits——使用MPLAB® Data Visualizer進行功率監(jiān)視
  • 貿澤電子(Mouser)專區(qū)

相關視頻

關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
快速回復 返回頂部 返回列表
主站蜘蛛池模板: 婷婷成人亚洲 | 97国产免费全部免费观看 | 国内精品久久久久久久97牛牛 | 国产成人福利在线视频下载 | 国产高清在线不卡 | 91久久青青草原线免费 | 日韩免费视频一区 | 国精品日韩欧美一区二区三区 | 国产乱人视频免费观看 | 麻豆精品在线视频 | 中文字幕麻豆 | 两个人在线观看的高清 | 在线观看视频日本 | 国产视频日韩 | wwwwwwxxxxx| 小彩的第一次小志弄 | 精品欧美一区二区三区四区 | 狠婷婷| 91亚洲视频在线 | 91人成亚洲高清在线观看 | 青青青国产依人在在线观看高 | 性生交大片免费一级 | 男女视频在线播放 | 亚洲精品国产三级在线观看 | 国产精品二区三区 | 久青草香蕉精品视频在线 | 精品无人区麻豆乱码1区2区 | 伊人艹| 日韩在线精品 | 国产在线看不卡一区二区 | 国产精品青青 | 2020亚洲男人天堂 | 久久精品国产日本波多麻结衣 | 999视频网| 天天摸天天舔天天操 | 国产成人午夜片在线观看 | 二区在线观看 | 国产一区二区自拍视频 | 中字毛片 | 四虎国产精品永久地址99新强 | 亚洲黄色在线播放 |