學習沒有大量“穩定實用有源代碼的應用程序的OS”其實是浪
(2011/10/23 9:53:00)
宇宙飛船出差臨走時交給俺一張紙條,叫俺上21IC的單片機公共壇子
去,看看哪位是打著OS的技術旗號,其實是暗地里干著見不得人的IC
代言人的勾當,讓俺在此好好地披露一下這些丑惡的嘴臉!
在此自我介紹一下,俺跟飛船是同門師兄,比他大兩歲。某一天飛船
跟俺說,俺們得上21IC混出個名堂來,俺喜歡潛水,就起了這個名字
----潛艇8421。
語歸正傳,回到扯學習OS的論題中來了,熟悉
計算機
硬件的人就知道
CPU的是如何動作的,
在此簡述一下這些動作術語:
術語-->中斷
術語-->中斷入口
術語-->中斷優先級
術語-->堆棧
術語-->堆棧指針
術語-->現場保護
術語-->現場恢復
術語-->程序計數器
術語-->定時器
//--------------------------
以上這些都是MCU中的心臟,你只要真正撐握了這些術語在MCU硬件上
是如何進行動作的,就不會再被所謂的OS迷憾了!
請看看最簡單的三個任務的OS來的模塊實現:
*********************************************
模塊1:
定時器中斷:{.....}//所謂的任務切換,就是在定時器中斷內,實
行被掛起任務的現場保護,與恢復要執行任務的現場。
-----------------------------------------------
模塊2:
task_0://假設任務0的起始地址:0x111
while(1)
{.....}
task_1://假設任務1的起始地址:0x222
while(1)
{.....}
task_2://假設任務2的起始地址:0x333
while(1)
{.....}
僅只需要2個模塊就能實現多任務。
所謂的OS要做的就是如何把這些任務的地址和用到的
寄存器,進行現
場保護與恢復,真正實現時要做的動作就是在
計時器中斷中(所謂的
時間片),設置堆棧指針找到任務的地址進行壓入與彈出操作。
切換任務就是保護好要掛起的已經執行的任務現場,然后再彈出要執
行的任務的地址到‘程序計數器’。這是非常簡單的一件事,只要移
動堆棧指針,再利用子程序返回指令‘RET就能實行程序計數器’的
操作。
**********************************************************
對于前后級的應用,某些MCU中有硬件優先級,這就是最好的任務調
度器,對于某些MCU還有4個獨立的工作奇存器組,只需一條指令就能
進行寄存器組切換,進行現場保護與恢復。
只要你有了以上操作硬件的本領,精通匯編與C的混合編程,要自行開
發適合自已的OS,簡直就是易如反撐。
//-----------------------------------------------------------
某些場合要應用OS是因為看中基于這些OS上的大量實用應用程序,假
如還沒有懂得如何把一個漂亮的觸摸屏,MP3,MP4,TCP/IP等做出來
的時候,而偏偏接到要開發這些功能的項目,那么選擇嵌入式OS就是
唯一的選擇,因為基于這些OS上有大量的開源源碼的應用程序,并且
已經移植好,經過多年的驗證,已經是非常穩定。只要花很少的時間
就能做好這些項目。
假若選擇了嵌入式LINUX,那么你就有了這個機會精通以上的應用代
碼。因為有了這些代碼,再加上你的聰明與勤奮,最后就能夠成為裸
奔高手!
總結一下個人的感受:
學習OS的最終目的就是要為了更好地裸奔!站在巨人的算法肩上花更
少的精力研制出性價比更高的產品!
網友評論:潛艇再有能耐,也沒法施展啊!
網友評論:一但回到水里,就會發射的了。
網友評論:沒有一個論壇不充滿商業氣息的;
而大家的努力也是在支持商業行為的;
技術離不開市場,沒有市場技術不會提高;
但市場更離不開技術,沒有技術,市場是扯淡,除非都在賣茶葉蛋;
這就好比大學,搞學術,也要靠政府社會的資金支持。
但21IC還是一個比較不錯的地方,有商業,但學術氛圍也很重。
存在即有道理,有正面聲音肯定有反面聲音,總比沒有聲音好。
但如果鬧得反目了,就不好了,大家要暢所欲言,百家爭鳴嘛~~~~
說的好,支持一下,說的不好,當我放屁。