操作筆記:Linux Framebuffer編程

來源:互聯網
上載者:User

在應用電腦時,你知道你應用的是作業系統嗎?一定會有人說微軟的Windows,不過你瞭解Linux嗎?有人說Linux不如Windows,其實不然,這是因為你不懂Linux,本文介紹一些Linux知識,比如Linux Framebuffer編程問題,希望本文對你Linux Framebuffer編程有所協助。Linux framebuffer裝置檔案名稱通常是/dev/fb0,1,2等。

控制framebuffer裝置的一般步驟如下:
1) 開啟裝置,映射framebuffer
2)依照硬體要求,準備好資料
3)把資料複製到framebuffer

例子程式如下:

1)開啟裝置,映射framebuffer

 
  1. static void *fbbuf;  
  2. int openfb(char *devname)  
  3. {  
  4.     int fd;  
  5.     fd = open(devname, O_RDWR);  
  6.     if (ioctl(fd, FBIOGET_VSCREENINFO, &fbvar) < 0)  
  7.         return -1;  
  8.     bpp = fbvar.bits_per_pixel;  
  9.     screen_size = fbvar.xres * fbvar.yres * bpp / 8;  
  10.     fbbuf = mmap(0, screen_size, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);  
  11.     return fd;  

2)資料準備,假設lcd控制器被初始化為565,16bit格式的

 
  1. static inline int  make_pixel(unsigned int a, unsigned int r, unsigned int g, unsigned int b)  
  2. {  
  3.     return (unsigned int)(((r>>3)<<11)|((g>>2)<<5|(b>>3)));  

3) 把想要顯示的資料複製到framebuffer,假設把framebuffer填充成一種顏色

 
  1. static void fill_pixel(unsigned int pixel, int x0, int y0, int w, int h)  
  2. {  
  3.     int i, j;  
  4.     unsigned short *pbuf = (unsigned short *)fbbuf;  
  5.     for (i = y0; i < h; i ++) {  
  6.         for (j = x0; j < w; j ++) {  
  7.             pbuf[i * screen_width + j] = pixel;  
  8.         }  
  9.     }  

下面程式把lcd螢幕填充成藍色

 
  1. fill_pixel(make_pixel(0, 0, 0,0xff), 0, 0, screen_width, screen_height); 

以上就是Linux Framebuffer編程的過程。

  1. 詳解Linux作業系統中軟永久連結的區別
  2. 來自Linux作業系統的inode和軟永久連結介紹
  3. Linux作業系統不再支援安騰處理器
  4. 詳解Linux作業系統恢複問題
  5. 闡述Linux作業系統安裝無線網卡驅動

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.