色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > DIY:給單片機(jī)寫(xiě)個(gè)實(shí)時(shí)操作系統(tǒng)內(nèi)核!

          DIY:給單片機(jī)寫(xiě)個(gè)實(shí)時(shí)操作系統(tǒng)內(nèi)核!

          作者: 時(shí)間:2016-11-29 來(lái)源:網(wǎng)絡(luò) 收藏
          為了進(jìn)一步把單片機(jī)的潛能發(fā)揮到極限,我一直想寫(xiě)個(gè)程序把單片機(jī)的所有資源都用光,但是如果依照單道程序順序執(zhí)行的方式,很難把MCU的CPU時(shí)間都充分利用,比如使用軟件延時(shí)函數(shù)實(shí)際上就是在無(wú)謂地消耗著CPU的時(shí)間什么事情都不做,因?yàn)镃PU一直在循環(huán)等待著條件結(jié)束,這相當(dāng)于函數(shù)被阻塞了。

           
          為了更明顯地驗(yàn)證這一點(diǎn),你可以在WINDOWS下打開(kāi)VC6.0或其他的C語(yǔ)言編譯器,寫(xiě)段代碼如下:

           
          #include
          void main(void)
          {while(1) ;}

           
          意思是讓CPU不做事情在等待,你猜,這句代碼會(huì)消耗掉多少CPU時(shí)間?

           
          答案會(huì)根據(jù)不同機(jī)型而不同,如果是單核CPU的話,這句話會(huì)消耗掉CPU接近100%的時(shí)間!如果是雙核CPU,則只消耗掉50%左右,因?yàn)檫@段代碼只運(yùn)行在其中一個(gè)核,另外一個(gè)核還可以做別的事情,截圖如下:


           

          本文引用地址:http://cafeforensic.com/article/201611/323486.htm

          然后你可以測(cè)試下面這幾句代碼:

          #include

          #include

          void main(void)
          {while(1)
          Sleep(100);
          }

           
          這段代碼實(shí)際上也是什么都不做,它不斷地調(diào)用Sleep()函數(shù),讓它延時(shí)100毫秒再醒來(lái),然后繼續(xù)睡覺(jué)?,F(xiàn)在你可以再打開(kāi)任務(wù)管理器看一下CPU時(shí)間用了多少,答案是基本不用CPU時(shí)間?。?/div>

           
          為什么同樣地什么事情都不做,差別咋就這么大呢?這是因?yàn)槭褂昧薙leep()這個(gè)函數(shù)是WINDOWS操作系統(tǒng)為你提供的,調(diào)用Sleep()之后 WINDOWS操作系統(tǒng)自動(dòng)把你這個(gè)程序掛起了(就是暫時(shí)扔到一邊不管),然后讓CPU去執(zhí)行其他程序,等到時(shí)間到了,操作系統(tǒng)再把這段程序恢復(fù)繼續(xù)執(zhí)行,這樣的話CPU就可以得到充分地利用了,也就是說(shuō)你可以在一塊CPU里面“同時(shí)”執(zhí)行多個(gè)任務(wù)而互不影響!(這里所說(shuō)的“同時(shí)”并不是同時(shí)執(zhí)行,CPU每一時(shí)刻只能做一件事,但如果速度足夠快的話就可以讓人感到它是在同時(shí)執(zhí)行多項(xiàng)任務(wù)了)。是的,操作系統(tǒng)就是為了解決多任務(wù)執(zhí)行而生的。既然操作系統(tǒng)這么神奇,可不可以讓單片機(jī)也來(lái)爽一把呢?答案是肯定的。下面就介紹如何給單片機(jī)寫(xiě)個(gè)操作系統(tǒng)??!

           
          /************************************************************************************/
          工欲善其事,必先利其器,為了寫(xiě)出操作系統(tǒng),必須得有一定的理論以及技術(shù)基礎(chǔ),
          單片機(jī)方面的可以http://www.51hei.com了解到,從下面是所需的材料:
          //1 C語(yǔ)言編程基礎(chǔ) :三斤
          //2 數(shù)據(jù)結(jié)構(gòu)理論 :一斤八兩
          //3 操作系統(tǒng)原理 :兩斤三兩八錢(qián)
          //4 計(jì)算機(jī)組成原理以及單片機(jī)原理及應(yīng)用 :兩斤半
          //5 匯編語(yǔ)言編程基礎(chǔ) :一斤四兩
          //6 一份堅(jiān)持的心 :多少斤自己掂量掂量,呵呵
          /*************************************************************************************/

           
          這么多怎么學(xué)?去哪學(xué)?下面是我個(gè)人推薦的書(shū)單,僅供參考:

           
          1. C語(yǔ)言是必須要會(huì)的,而且要熟練,諸如”預(yù)編譯命令“你必須要懂,模塊化編程必須要熟悉,指針是C語(yǔ)言的一大精髓,在操作系統(tǒng)源碼里面指針是滿天飛的,所以得有足夠的理論基礎(chǔ),推薦國(guó)外的《C Primer Plus》 美國(guó) Stephen Prata著,里面講的內(nèi)容由淺到深,語(yǔ)言引人入勝,大二開(kāi)始看,現(xiàn)在還時(shí)不時(shí)地要回頭看,確實(shí)是一本不錯(cuò)的好書(shū):

          另外,學(xué)會(huì)了C的基本語(yǔ)法之后你還得要會(huì)一點(diǎn)點(diǎn)編程技巧以及編程要注意的問(wèn)題之類的,推薦有空的話多看看《C專家編程》和《C陷阱與缺陷》,這兩本書(shū)是C編程領(lǐng)域里面的經(jīng)典之作,相信看完你的功力會(huì)大有長(zhǎng)進(jìn),但是還是要以經(jīng)常敲代碼為主:

          2. 操作系統(tǒng)里面的數(shù)據(jù)組織形式都是以數(shù)據(jù)結(jié)構(gòu)的理論為基礎(chǔ)的,所以你得懂得數(shù)據(jù)結(jié)構(gòu)才能看懂里面的含義,但也不要求把數(shù)據(jù)結(jié)構(gòu)全精通,推薦嚴(yán)蔚敏版本的《數(shù)據(jù)結(jié)構(gòu)》,不過(guò)里面的算法都是用偽代碼寫(xiě)出來(lái)的:

          3. 有了編程基礎(chǔ)之后你還必須要懂得操作系統(tǒng)的基本原理,比如任務(wù)之間是怎么切換的,內(nèi)存是怎么管理的都得懂,推薦《操作系統(tǒng)-精髓與設(shè)計(jì)原理》


          上一頁(yè) 1 2 3 4 下一頁(yè)

          評(píng)論


          技術(shù)專區(qū)

          關(guān)閉