1. 怎么編寫字符設(shè)備驅(qū)動(dòng)程序
主設(shè)備號(hào)
構(gòu)造 file_operations 結(jié)構(gòu)體,填充 open/read/write 等成員函數(shù)
注冊(cè)驅(qū)動(dòng):register_chrdev(major, name, &fops)
入口函數(shù)
出口函數(shù)
2. Framebuffer 驅(qū)動(dòng)程序框架
分為上下兩層:
fbmem.c:承上啟下
實(shí)現(xiàn)、注冊(cè) file_operations 結(jié)構(gòu)體
把 APP 的調(diào)用向下轉(zhuǎn)發(fā)到具體的硬件驅(qū)動(dòng)程序
xxx_fb.c:硬件相關(guān)的驅(qū)動(dòng)程序
實(shí)現(xiàn)、注冊(cè) fb_info 結(jié)構(gòu)體
實(shí)現(xiàn)硬件操作
調(diào)用關(guān)系:
例子1: app:open("/dev/fb0",...)主設(shè)備號(hào):29,次設(shè)備號(hào):0 -------------------------------------------------------------- kernel: fb_open intfbidx=iminor(inode); structfb_info*info==registered_fb[0]; 例子2: app:read() --------------------------------------------------------------- kernel: fb_read intfbidx=iminor(inode); structfb_info*info=registered_fb[fbidx]; if(info->fbops->fb_read) returninfo->fbops->fb_read(info,buf,count,ppos); src=(u32__iomem*)(info->screen_base+p); dst=buffer; *dst++=fb_readl(src++); copy_to_user(buf,buffer,c)
3. 怎么編寫Framebuffer驅(qū)動(dòng)程序
核心結(jié)構(gòu)體:
分配 fb_info
framebuffer_alloc
設(shè)置 fb_info
var
fbops
硬件相關(guān)操作
注冊(cè) fb_info
register_framebuffer
審核編輯:黃飛
-
驅(qū)動(dòng)程序
+關(guān)注
關(guān)注
19文章
855瀏覽量
48694 -
Framebuffer
+關(guān)注
關(guān)注
0文章
8瀏覽量
8165
原文標(biāo)題:Framebuffer 驅(qū)動(dòng)程序框架
文章出處:【微信號(hào):嵌入式開發(fā)愛好者,微信公眾號(hào):嵌入式開發(fā)愛好者】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
Framebuffer 驅(qū)動(dòng)程序框架

請(qǐng)問怎樣去設(shè)計(jì)Framebuffer驅(qū)動(dòng)程序?
如何編寫RK3288 framebuffer驅(qū)動(dòng)程序呢
Windows XP驅(qū)動(dòng)程序編寫方法
Windows98/2000驅(qū)動(dòng)程序編寫方法
實(shí)時(shí)系統(tǒng)VxWorks下設(shè)備驅(qū)動(dòng)程序的編寫詳解
編寫Small RTOS51 的驅(qū)動(dòng)程序
Windows設(shè)備驅(qū)動(dòng)程序編寫時(shí)的主要問題及解決方案
Linux設(shè)備驅(qū)動(dòng)程序的編寫
Linux系統(tǒng)網(wǎng)絡(luò)驅(qū)動(dòng)程序的編寫
微軟發(fā)布開源框架驅(qū)動(dòng)程序模塊新框架
如何為L(zhǎng)inux編寫用戶空間設(shè)備驅(qū)動(dòng)程序
如何編寫基于ARM的裸機(jī)程序和基于Linux的驅(qū)動(dòng)程序

如何編寫ADX122驅(qū)動(dòng)程序?

評(píng)論