1. 程式人生 > >開啟/dev/fb0時“No such device”錯誤解決方法:啟用 VESA FrameBuffer 驅動程式

開啟/dev/fb0時“No such device”錯誤解決方法:啟用 VESA FrameBuffer 驅動程式

在使用Linux系統函式mmap(),將FrameBuffer對映到記憶體上來實現一個簡單的貪吃蛇遊戲時,在自己的Redhat 6.4上測試時,執行程式結果卻提示:“No such device”。可是在/dev/下可以檢視到fb0與fb都是存在的,並且操作許可權是足夠的。剛開始沒有想到是驅動的問題,在網上站到了解決方案:問題是FrameBuffer驅動程式沒有啟用。
問題截圖如下:
這裡寫圖片描述
解決方案:
開啟/boot/grub/menu.lst檔案,檔案如下:
這裡寫圖片描述

在檔案16行的末尾加上“vga=0x0317”並儲存退出,然後reboot(下圖是重啟後的截圖,可以看到文字顏色是發生了一些變化的,因為其RGB變化了)。
這裡寫圖片描述


至於為什麼是0x0317這個值,是因為我的顯示器是1024*768(16bit(RGB655)),測試如下:
這裡寫圖片描述
而不同解析度與不同顯示色數對應的這個vga值是不同的,如下:

VGA parameter table:
  Mode 0x0300:   640x400 (+640), 8 bits
  Mode 0x0301:   640x480 (+640), 8 bits
  Mode 0x0303:   800x600 (+800), 8 bits
  Mode 0x0305:   1024x768 (+1024), 8 bits
  Mode 0x0307:   1280x1024 (+1280), 8 bits
  Mode 0x030e:   320x200 (+640
), 16 bits Mode 0x030f: 320x200 (+1280), 24 bits Mode 0x0311: 640x480 (+1280), 16 bits Mode 0x0312: 640x480 (+2560), 24 bits Mode 0x0314: 800x600 (+1600), 16 bits Mode 0x0315: 800x600 (+3200), 24 bits Mode 0x0317: 1024x768 (+2048), 16 bits Mode 0x0318: 1024x768 (+4096), 24 bits Mode 0x031a: 1280x1024 (+2560), 16
bits Mode 0x031b: 1280x1024 (+5120), 24 bits Mode 0x0330: 320x200 (+320), 8 bits Mode 0x0331: 320x400 (+320), 8 bits Mode 0x0332: 320x400 (+640), 16 bits Mode 0x0333: 320x400 (+1280), 24 bits Mode 0x0334: 320x240 (+320), 8 bits Mode 0x0335: 320x240 (+640), 16 bits Mode 0x0336: 320x240 (+1280), 24 bits Mode 0x033d: 640x400 (+1280), 16 bits Mode 0x033e: 640x400 (+2560), 24 bits Mode 0x0345: 1600x1200 (+1600), 8 bits Mode 0x0346: 1600x1200 (+3200), 16 bits Mode 0x0347: 1400x1050 (+1400), 8 bits Mode 0x0348: 1400x1050 (+2800), 16 bits Mode 0x0349: 1400x1050 (+5600), 24 bits Mode 0x034a: 1600x1200 (+6400), 24 bits Mode 0x0352: 2048x1536 (+8192), 24 bits Mode 0x0360: 1280x800 (+1280), 8 bits Mode 0x0361: 1280x800 (+5120), 24 bits Mode 0x0362: 768x480 (+768), 8 bits Mode 0x0364: 1440x900 (+1440), 8 bits Mode 0x0365: 1440x900 (+5760), 24 bits Mode 0x0368: 1680x1050 (+1680), 8 bits Mode 0x0369: 1680x1050 (+6720), 24 bits Mode 0x037c: 1920x1200 (+1920), 8 bits Mode 0x037d: 1920x1200 (+7680), 24 bits

重啟之後,我們再執行程式,問題完美解決了(VESA FrameBuffer 驅動程式已經被啟用)。
這裡寫圖片描述