其實本來要全手動的,包含timer interrupt、context switch都想要要怎麼解了,
沒想到突然之間看到書上的範例、還有官方網站的Linux ports,
就想要把他們結合起來。

因為官方網站的Linux ports跑出來會segmentation fault,害我不得不重找,
初學者總是沒什麼毅力,所以就偷懶沒有去想問題的原因了:p

可是書上的又是dos的,還用BC compiler,很麻煩的一件事情,
所以google了一下,沒想到真的有人這麼做,大家跟我一樣無聊嗎XDDD

參考對岸同胞的筆記,其實也沒有說得很清楚XDDD
http://www.21ic.com/app/embed/200903/33166.htm

直接拿書上的example1改,要改的地方有:

  1. 輸出:因為他是用dos的方式,直接對VGA memory的地方做寫入,對於Linux你必須改成用printf輸出,彩色碼跟移位碼,也要用Linux的方式
  2. 輸入:要自己修改terminal mode,並配合select做non-block的read
  3. os_cpu的部份,我直接替換成官方網站的Linux ports最新版,似乎沒做什麼修改。
  4. 這個的實做方式是用pthread的函式庫來做scheduler,因此不用自己寫context switch、設定timer interrupt

可惜的是uC/OS-II不是open source,我無法將我修改的部份釋放出來,
有時間再來詳述上面的步驟吧。

有空再移植到x86好了,因為手上有過去作業的boot loader以及stdin/stdout的實做方式,應該比較容易:p

arrow
arrow
    全站熱搜

    koukaipan 發表在 痞客邦 留言(1) 人氣()