作者meltice (三億兩千萬大散戶)
看板Soft_Job
標題Re: [心得] 微軟的driver架構 = BullShit
時間Thu Aug 27 01:30:03 2009
舉個大家都會覺得理所當然了例子
就是每台電腦都有的USB讀卡機
卡片插拔OS就會自動幫你mount/umount
這應該是很基本很理所當然的功能吧
甚至還會autorun或自動在桌面幫你建個捷徑
但是同樣的功能在某embedded linux系統上卻搞半天才弄出個樣子
該版子使用linux 2.6.18 kernel, busybox(舊版) ...
也有USB介面
照理說應該只要把該有的kernel module build起來就能跑
但實際做起來卻問題重重
最終還是辦不到像PC那樣子的結果
因為Linux本身的help就不如windows, windows CE來的多
而這個功能本身又太簡單太基本太過理所當然
所以很少人會碰到類似的問題然後提出問題
而找到的解答也大多都只適用在PC上
所以就亂try一通
hotplug, udev, mdev, d-bus, ...
各種不知道之間到底有何關係的東西好像都跟讀卡機有相關
然後還發現舊版的busybox mdev好像有bug
新版的busybox又build不起來
自己mknod
偏偏系統上又還有SATA介面及其他mass storage裝置
各種開機順序或插拔排列組合還會導致mount時要透過很麻煩的判斷
來確定目前的裝置究竟是否為讀卡機
然後才能將node mount到正確的folder
而且只能mount一個partition進來
然後又發現hotplug根本無法偵測到卡片插拔
可是同樣的讀卡機在PC上卻可以被正確偵測到卡片插拔
後來修改hardware拉GPIO
額外寫程式來偵測卡片插拔
搞了半天
最終結果還只是差強人意
demo給人家看人家只會覺得
怎麼這麼遜
這個功能不是很簡單嗎
每台電腦都有的啊
不就是個讀卡機而已嗎
我是不是也可以講
Linux driver架構根本就是BullShit
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 115.82.63.120
※ 編輯: meltice 來自: 115.82.63.120 (08/27 01:30)
推 poqwer:其實這篇一開始就只是個無能的人的抱怨文而已啊..... 08/27 01:44
→ poqwer:純粹是貼錯地方而已....。 08/27 01:45
推 Ting1024:M大好厲害 08/27 02:01
→ john0312:你好像不太了解udev... 08/27 12:13
→ john0312:udev可以確保無論插的順序是什麼, 同一個裝置一定會 08/27 12:17
→ john0312:對應到一樣的device name. 08/27 12:18
→ john0312:udev也可以透過hal通知程式有沒有任何裝置插入或拔除. 08/27 12:18
→ john0312:用udev, 你不用mknod... 08/27 12:20
→ john0312:BusyBox編譯不起來, 我就沒話說了... 08/27 12:23
→ penguinlin:mdev 應該可以單獨 patched 新版本的busybox吧... 08/27 12:25
→ airzone:m兄除了有時候愛抱怨外,實力其實還不錯的 08/27 23:15