星期一, 1月 15, 2007

罩哥又發威了!

從ptt2的kochi版轉錄過來的


目前進度已經可以在 SIII 上跑 Linux, 有正常 console 下的功能
不過這過程還真是艱辛呀......


前一陣子一直都在練球打比賽, 所以就把這個計畫丟在一邊
兩個月前停滯的進度是開 loader 進入 L4ka::pistachio
以直接寫入 VRAM 的方式, 模擬出一個 console, 不過 keyboard 無解
可以執行一些 prebuild 進 image 的 binary, 開 thread, 丟 IPC
那時候發生很奇怪的事, 就是 msg 的 tag 不知道為什麼會被寫入奇怪的資料
google 找了很久無解, 又不想自己去 trace
所以最後就把平台轉移到看起來比較多人維護的 NICTA::pistachio
然後就停在這裡了
這幾天因為要期末考沒去打球, 所以又把它給翻了出來
照計畫理論上應該要開始寫 mm, irq, 移植 libc 之類的東西
過了這兩個月的時間, 我發現我之後應該是不會有這麼多的時間去做這些獸力般的事
最後我決定從既有的 OS 開始往上發展, 也就是 embedded linux 啦


不過 port linux 比想像中難了不少, 因為實在是太大了
在沒有 UART 下, framebuffer 又跑不起來, 所以根本就不知道它是死的還是活的
最後我決定用 user mode 的 linux, 架在 L4 上
沒想到剛好 NICTA 有現成的東西可以用 --> Wombat on Iguana
做了一些很少量的 porting, 就成功的 boot 進去 wombat 了, 這時候看到一行字

"Please press enter to activate this console."

才想到, 糟糕, 還是沒有找到讀 keyboard 的方法
找了一下 handheld.org 上的 kernel source....
發現大致上可以分成兩類: 1. GPIO 交錯下去掃 2. ASIC
方法一試了很久, 不過一開始就知道大概不可能成功
因為在 CE 裡 WATCHGPIO 發現跟 keyboard 相關的就只有一支 pin 而已
方法二則是用在 HTC 自己的 ASIC, 應該是不太可能通用


前一陣子才很意外的從醫網隊板上得知有 IDA Pro 這個好東西
於是我就想說要把 CE 裡的 driver 抓出來 trace 一下
不料這一途也碰壁了, 因為 keybddr.dll 是寫死在 ROM 裡的, 連讀都不能讀
最後我使出了最後的絕招, 把整個 ROM dump 出來再來找
不料又碰壁了, 我原先以為整個 filesystem 會以 image 的方式寫在 ROM 裡
沒想到好像並不是這樣, 反正還是沒辦法找到這個檔案
最後我決定死馬當活馬醫, 直接來 trace 這個 32MB 的 rom image
反正我能確定的就是它一定是從頭開始執行的......


這個星期天有一半的時間我是在 trace 這個 image, 另外一半當然是在讀共筆...XD
不過努力總是會有成果的, 雖然從頭到尾都是 arm 組語, 一個可供辨認的程序名都沒有
不過從裡面的一些字串資料我找到了一個像是測試軟體的區段
從中發現 S3 的 keyboard 要從 I2C 來讀
另外也一併發現了不少的好物, 短期內的開發應該是都不會遇到問題了


今天下午考完試回來, 馬上寫了一個簡單的 keyboard driver, 建立了 keymap
最後就成功的可以和 keyboard 溝通了 :)
按下 enter 進入了 linux 下的 console, linux 基本的功能幾乎都沒有問題了
大概就和一般 ssh 進 linux 後的 console 差不多, 不過目前程式只有 busybox
不過因為之前寫的那個 pseudo console 並不標準, 所以遇到顏色控制碼無法顯示


接下來要做的應該是把正牌的 w100fb 移植過來
短期目標是跑 jserv 的 Xorz (Xorg 的 embedded 版)
另外還要搞定的 driver 還有 CF solt, AC97, USBH, SDIO, TouchScreen, Wifi(改)
如果這個寒假打網球沒有打太瘋的話....應該開學前可以結束吧, 希望 :p


唉唉
罩哥實在是太強悍了
左手揮球拍,右手寫程式,轉個身就可以吟詠共筆
開IDA pro讀組語就和開PCMan打逼一樣輕鬆XD

不才在下小T先生我
只要碰到考試CPU loading就一定會滿檔
然後程式設計的東西一定是塞進swap裡面
然後生命就剩下讀書和打一點電動


一樣是程式設計師,怎麼功力會差這麼多呀XD 全文連結

2 意見:

匿名 提到...

Nice progress.

不過 Xorz/Embedded 還沒有正式釋出 source code,但為了這個計畫,我可以給 early-acess version,如有意願,請回覆至本人信箱,謝謝!

d8888 提到...

哇哇哇,傳說中的jserv大大耶@@

先說一下
做這件事情還有PO中間那一大段文的並不是我而是我高中同學kochi

文章之所以會出現在我這裡,是因為我覺得我同學太厲害了,所以借轉過來紀念一下XD
原文出處是ptt2的kochi版

我把大大你的回應轉給他:D