Tuesday, March 13, 2007

Kernel debug: Framebuffer

有 Panic 經驗的人都知道,panic 會呼叫 dump_stack 動作,就會倒出一連串 function stack 狀態,但是往往會因為畫面行數不夠,使得要看重要的 panic 訊息都被洗掉了,所以這時候開始 framebuffer 就顯的非常有用。

在我的經驗中,開啟 framebuffer 有兩種方法如下:

VGA Card Driver 的支援
這方法應該是最根本的方法,有特定的 VGA Driver 支援,在顯示速度上都會比較順暢,畫面解析度也比較理想,可以透過編譯 kernel 前使用 make menuconfig 等指令修改 configure file 內容。

我以 2.6.19.2 的 kernel 為例進到 menuconfig 後選擇 Device Drivers -> Graphics support如下畫面:



再來有兩個重點,第一:必須將 "Support for frame buffer devices" 編成 build-in,第二:將所使用的 Device Driver 也編成 build-in,編成 Module 形式將不會 work,因此在這邊將 Support for frame buffer devices 這選項選成 *

而以我的 NB 為例,使用 ATI radeon 的卡,因此我找到 radeon 這選項之後也將之選成 * 如下圖:之後存檔重編即可




使用 vesafb 來開啟 Framebuffer
這方法算是比較簡易的啟動方法,幾乎是用於所有 support VESA 2.0 規格的顯示卡上,只要透過修改 grub 的開機字串即可:我們開啟 /boot/grub/menu.lst 並找到現在所使用的 entry 如下:



並於 kernel 這行最後面加上紅色框框所括起來字串,強制開啟 vesa framebuffer 即可,而後面 vga 的參數是用來設定所有開啟的解析度,可以再參考資料 Framebuffer HOWTO 這篇找到相關可以用的參數

Framebuffer HOWTO
http://tldp.org/HOWTO/Framebuffer-HOWTO.html


...《消息來源》

HEMiDEMi Technorati Del.icio.us MyShare個人書籤 Yahoo

1 Comments:

Andy Tzeng said...

在 Jollen 的 Blog 看到篇關於 Linux frame buffer driver 開發的資料,值得參考
Linux frame buffer 驅動程式開發簡報下載