久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

專注電子技術學習與研究
當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

詳解基于51單片機的small rtos(1)

作者:佚名   來源:本站原創   點擊數:  更新時間:2012年01月13日   【字體:

      陳明計,這個人有必要要認識下,因為small rtos 是他寫的,他根據ucos的原理寫的。這個small rtos是可以再51單片機上運行的,但是受ARM內存的限制。 作為單片機開發的時刻都得想著內存的問題,因為51芯片資源有限。  好了不廢話開始學習的旅程
 
        首先你可以在51hei下個small rtos 源代碼 http://m.zg4o1577.cn/f/small_rtos1.12.1.zip   或者跟我一步一步寫。  keil51的工具編譯代碼后會生成一個.m51的文件,這個文件要學會去看,因為他把你的一些內存分配的地址和函數的地址都會以列表顯示出來。  
      操作系統的任務其實都是一個死循環。我們寫的操作系統其實就是把$P單片機的指針指向任務的首地址而已。那么首地址我們必須要保存下來以便任務切換的時候使用在small rtos 中時保存在  OSTsakStackBotton[]這個數組內部的。那么我們怎樣獲取到任務的首地址呢,在這里 他是靜態存放到數組內的。即  void  (* code TaskFuction[OS_MAX_TASKS])(void)={TaskA,TaskB,TaskC};  這個事一個函數指針存放的數組,看不明白的你可以查下資料。  這里他保存了3個函數的地址  。 
 通過編譯后查看.m51文件也可以看到相關信息。 (這個是我編譯后的文件默認是在E:\temp當然你可以改下路徑)
             CODE    03A4H     000AH     UNIT         ?PR?TASKA?EXT1
            CODE    03AEH     000AH     UNIT         ?PR?TASKB?EXT1
            CODE    03B8H     000AH     UNIT         ?PR?TASKC?EXT1
            C:03B7H         PUBLIC        TaskFuction
    通過上述的可以看出  TaskFuction 首地址在   C:03CBH   那么程序運行后可以直接翻看C:03B7H 地址 看接下來的地址內是否存放  
    核對下應該是和.m51一致的。   任務首地址有了,然后我們看下他的代碼。mian()里面沒什么代碼就是定時器0的初始化,還有就是OSStart() 這個函數 .這個函數其實就是初始化堆棧并把系統切到任務A  的函數。至于怎么處理關鍵的堆棧如何處理。我們來仔細看下.  我這里運行到mian()函數棧頂指針
  至于你想知道為什么是0x15看下.m51 
 


這里其實已經告訴你了。第0組工作寄存器8個+8個DATA數據定義。然后mian()調用 OSStart()


跳轉到OSStart() 里
這里看出壓入了2個字節(51是字節),
  從內存中可以看出壓入的是下個代碼的地址。 聰明的可能已經看出來了,吧任務A的地址替換這里的86 03 ,那么執行RET就可以跳轉到任務A中去執行代碼。到這里是不是讓你來勁了?  然后我們繼續。  這個STACK 是什么,呵呵在匯編部分的代碼如下:  


這里重定位堆棧,并定義了一個內存單元,至于他的位置看.m51 
  是不是很巧合,剛好在存放main()函數指針的RAM地址那,但是仔細想想這是理所當然的,但是你也可以也可以想辦法不怎么巧合,但是這樣充分利用 RAM空間吧任務A的覆蓋main入棧的指針式最好的。  然后下面代碼應該很好理解。吧任務的首地址存到隨機變動的OSTsakStackBotton中,這里還加了個空閑任務的函數指針。然后開始部署各個任務的堆棧空間。 他壓入任務A的首地址然后把棧頂指針知道任務A的高地址中,然后從尾部開始存放底0,優先級任務,0,任務C,0,任務B。那么中間的空代碼部分就可以作為任務A可以使用的內存塊。    然后就跳轉到任務A中執行代碼

     至此我已經把第一個任務切換,解析出來了。 

關閉窗口

相關文章

主站蜘蛛池模板: 日韩黄色av| 国产精品1 | 色婷婷一区二区三区四区 | 亚洲精品一区av在线播放 | 亚洲最大的黄色网址 | 亚洲国产一区二区在线 | 亚卅毛片 | 日韩av免费在线观看 | 国产精品毛片在线 | 亚洲精品v日韩精品 | 全免费a级毛片免费看视频免费下 | 日韩免费 | 中文字幕免费在线观看 | 国产精彩视频在线观看 | 欧美大片一区二区 | 日韩在线视频播放 | 精品欧美一区二区三区久久久 | 视频三区 | av天天看| www.日韩免费 | 精品国产乱码久久久久久丨区2区 | 成人av免费| 福利精品| 国产乱码精品一区二区三区中文 | 中文字幕一区在线观看视频 | 亚洲黄色av网站 | 手机看片169 | 精品久久久久久久久久久久久久 | 91精品国产91久久久久游泳池 | 亚洲视频在线一区 | 色视频在线播放 | 国内自拍偷拍 | 久草中文网| 久久久久国产精品一区二区 | 日韩高清国产一区在线 | 国产9 9在线 | 中文 | av大片在线| 亚洲一页 | 日韩免费一级 | 成人精品鲁一区一区二区 | 国产成人99久久亚洲综合精品 |