0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Framebuffer 驅(qū)動程序框架

嵌入式開發(fā)星球 ? 來源:嵌入式開發(fā)愛好者 ? 作者:嵌入式開發(fā)愛好者 ? 2024-05-11 08:49 ? 次閱讀

1. 怎么編寫字符設(shè)備驅(qū)動程序

wKgaomY_EYWALQiBAAFocwCI-0c762.png

主設(shè)備號

構(gòu)造 file_operations 結(jié)構(gòu)體,填充 open/read/write 等成員函數(shù)

注冊驅(qū)動:register_chrdev(major, name, &fops)

入口函數(shù)

出口函數(shù)

2. Framebuffer 驅(qū)動程序框架

分為上下兩層:

fbmem.c:承上啟下

實(shí)現(xiàn)、注冊 file_operations 結(jié)構(gòu)體

把 APP 的調(diào)用向下轉(zhuǎn)發(fā)到具體的硬件驅(qū)動程序

xxx_fb.c:硬件相關(guān)的驅(qū)動程序

實(shí)現(xiàn)、注冊 fb_info 結(jié)構(gòu)體

實(shí)現(xiàn)硬件操作

調(diào)用關(guān)系:

例子1:
app:open("/dev/fb0",...)主設(shè)備號:29,次設(shè)備號: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ū)動程序

核心結(jié)構(gòu)體:

wKgZomY_EYWAcJCxAAEfM6MlzgU508.png

分配 fb_info

framebuffer_alloc

設(shè)置 fb_info

var

fbops

硬件相關(guān)操作

注冊 fb_info

register_framebuffer

4. 閱讀源碼

閱讀 AndroidLinux kernel 源碼:

http://aospxref.com/

審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 框架
    +關(guān)注

    關(guān)注

    0

    文章

    396

    瀏覽量

    17266
  • 驅(qū)動程序
    +關(guān)注

    關(guān)注

    19

    文章

    798

    瀏覽量

    47773
  • Framebuffer
    +關(guān)注

    關(guān)注

    0

    文章

    8

    瀏覽量

    8023
收藏 人收藏

    評論

    相關(guān)推薦

    2. 29 Framebuffer驅(qū)動程序框架 - 第1節(jié) #硬聲創(chuàng)作季

    arm程序開發(fā)環(huán)境
    充八萬
    發(fā)布于 :2023年08月16日 10:50:46

    2. 29 Framebuffer驅(qū)動程序框架 - 第2節(jié) #硬聲創(chuàng)作季

    arm程序開發(fā)環(huán)境
    充八萬
    發(fā)布于 :2023年08月16日 10:51:36

    2. 29 Framebuffer驅(qū)動程序框架 - 第3節(jié) #硬聲創(chuàng)作季

    arm程序開發(fā)環(huán)境
    充八萬
    發(fā)布于 :2023年08月16日 10:52:26

    2. 29 Framebuffer驅(qū)動程序框架 - 第4節(jié) #硬聲創(chuàng)作季

    arm程序開發(fā)環(huán)境
    充八萬
    發(fā)布于 :2023年08月16日 10:53:17

    2. 29 Framebuffer驅(qū)動程序框架 - 第5節(jié) #硬聲創(chuàng)作季

    arm程序開發(fā)環(huán)境
    充八萬
    發(fā)布于 :2023年08月16日 10:54:07

    2. 29 Framebuffer驅(qū)動程序框架 - 第6節(jié) #硬聲創(chuàng)作季

    arm程序開發(fā)環(huán)境
    充八萬
    發(fā)布于 :2023年08月16日 10:54:57

    請問怎樣去設(shè)計(jì)Framebuffer驅(qū)動程序

    液晶顯示器的功能有哪些?怎樣去設(shè)計(jì)Framebuffer驅(qū)動程序?
    發(fā)表于 04-27 06:03

    如何編寫RK3288 framebuffer驅(qū)動程序

    Framebuffer驅(qū)動程序框架首先framebuffer是一個字符驅(qū)動設(shè)備,它分為上下兩層:fbmem.c:中間承上啟下實(shí)現(xiàn)、注冊fil
    發(fā)表于 05-13 11:32

    rk3288 LCD驅(qū)動程序配置與分析

    一、Linux驅(qū)動程序框架Linux驅(qū)動程序 = 驅(qū)動程序框架 + 硬件編程之前已經(jīng)學(xué)習(xí)了在QEMU編寫了LCD
    發(fā)表于 05-13 14:42

    Linux驅(qū)動程序缺陷檢測研究

    的Linux驅(qū)動程序缺陷檢測框架,以及多性質(zhì)制導(dǎo)的符號執(zhí)行方法,支持針對多個缺陷性質(zhì)的快速缺陷檢測。在LLVM和KLEE的基礎(chǔ)上實(shí)現(xiàn)了提出的框架和方法,并在實(shí)際的Linux驅(qū)動程序上開
    發(fā)表于 11-21 15:26 ?9次下載
    Linux<b class='flag-5'>驅(qū)動程序</b>缺陷檢測研究

    微軟發(fā)布開源框架驅(qū)動程序模塊新框架

    為了方便開發(fā)人員為Windows編寫驅(qū)動程序,微軟昨天發(fā)布了一個開源框架驅(qū)動程序模塊框架(DMF)。這個新框架將允許開發(fā)人員編寫簡單和結(jié)構(gòu)化
    發(fā)表于 08-22 11:37 ?1080次閱讀

    USB串行驅(qū)動程序Usbser

    適用于你的通信和 CDC 控制設(shè)備的 Microsoft 提供的內(nèi)置驅(qū)動程序 (Usbser.sys)在Windows10中已使用內(nèi)核模式驅(qū)動程序框架重新編寫了該驅(qū)動程序,此
    發(fā)表于 11-05 08:00 ?11次下載

    Linux設(shè)備驅(qū)動程序的平臺驅(qū)動程序和字符驅(qū)動程序介紹

    了解Linux設(shè)備驅(qū)動程序的基礎(chǔ)知識,重點(diǎn)介紹平臺驅(qū)動程序和字符驅(qū)動程序。 提出了簡單的平臺驅(qū)動程序實(shí)現(xiàn)和簡單的字符驅(qū)動程序實(shí)現(xiàn)。
    的頭像 發(fā)表于 11-27 06:32 ?4179次閱讀

    如何使用Linux內(nèi)核實(shí)現(xiàn)USB驅(qū)動程序框架

    Linux內(nèi)核提供了完整的USB驅(qū)動程序框架。USB總線采用樹形結(jié)構(gòu),在一條總線上只能有唯一的主機(jī)設(shè)備。 Linux內(nèi)核從主機(jī)和設(shè)備兩個角度觀察USB總線結(jié)構(gòu)。本節(jié)介紹 Linux內(nèi)核USB驅(qū)動程序
    發(fā)表于 11-06 17:59 ?19次下載
    如何使用Linux內(nèi)核實(shí)現(xiàn)USB<b class='flag-5'>驅(qū)動程序</b><b class='flag-5'>框架</b>

    怎么編寫Framebuffer驅(qū)動程序

    Framebuffer 驅(qū)動程序框架 分為上下兩層: fbmem.c:承上啟下 實(shí)現(xiàn)、注冊 file_operations 結(jié)構(gòu)體 把 APP 的調(diào)用向下轉(zhuǎn)發(fā)到具體的硬件
    的頭像 發(fā)表于 03-22 09:13 ?414次閱讀
    怎么編寫<b class='flag-5'>Framebuffer</b><b class='flag-5'>驅(qū)動程序</b>