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

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

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

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

嵌入式開(kāi)發(fā)愛(ài)好者 ? 來(lái)源:嵌入式開(kāi)發(fā)愛(ài)好者 ? 2024-03-22 09:13 ? 次閱讀

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

1020db28-e79e-11ee-a297-92fbcf53809c.png

主設(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)體:

10981756-e79e-11ee-a297-92fbcf53809c.png

分配 fb_info

framebuffer_alloc

設(shè)置 fb_info

var

fbops

硬件相關(guān)操作

注冊(cè) fb_info

register_framebuffer

審核編輯:黃飛

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

    關(guān)注

    19

    文章

    810

    瀏覽量

    47860
  • Framebuffer
    +關(guān)注

    關(guān)注

    0

    文章

    8

    瀏覽量

    8030

原文標(biāo)題:Framebuffer 驅(qū)動(dòng)程序框架

文章出處:【微信號(hào):嵌入式開(kāi)發(fā)愛(ài)好者,微信公眾號(hào):嵌入式開(kāi)發(fā)愛(ài)好者】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Framebuffer 驅(qū)動(dòng)程序框架

    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
    的頭像 發(fā)表于 05-11 08:49 ?637次閱讀
    <b class='flag-5'>Framebuffer</b> <b class='flag-5'>驅(qū)動(dòng)程序</b>框架

    請(qǐng)問(wèn)怎樣去設(shè)計(jì)Framebuffer驅(qū)動(dòng)程序?

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

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

    顯示內(nèi)存的物理地址和長(zhǎng)度等。另外一個(gè)重要成員是fb_ops,其是LCD底層硬件操作接口集。如何編寫Framebuffer驅(qū)動(dòng)程序分配fb_info使用framebuffer_alloc
    發(fā)表于 05-13 11:32

    Windows XP驅(qū)動(dòng)程序編寫方法

    Windows XP驅(qū)動(dòng)程序編寫方法—Step by StepVS.NET+WIN XP DDK+DriverStudio3.2開(kāi)發(fā)環(huán)境版1.  驅(qū)動(dòng)程序的開(kāi)發(fā)環(huán)境    本電子講義可以作
    發(fā)表于 03-25 14:36 ?122次下載

    Windows98/2000驅(qū)動(dòng)程序編寫方法

    Windows98/2000驅(qū)動(dòng)程序編寫方法1.  驅(qū)動(dòng)程序的開(kāi)發(fā)環(huán)境對(duì)于VxD的開(kāi)發(fā),需要的開(kāi)發(fā)環(huán)境是:Visual C++ 5.0/6.0Windosw 95DDK &nbs
    發(fā)表于 03-25 14:38 ?29次下載

    實(shí)時(shí)系統(tǒng)VxWorks下設(shè)備驅(qū)動(dòng)程序編寫詳解

    實(shí)時(shí)系統(tǒng)VxWorks下設(shè)備驅(qū)動(dòng)程序編寫詳解
    發(fā)表于 03-29 12:26 ?15次下載

    ARM Boot分析及驅(qū)動(dòng)程序編寫舉例

    ARM Boot分析及驅(qū)動(dòng)程序編寫舉例
    發(fā)表于 07-22 17:20 ?57次下載

    編寫Small RTOS51 的驅(qū)動(dòng)程序

    編寫Small RTOS51 的驅(qū)動(dòng)程序 函數(shù)的可重入我們?cè)?b class='flag-5'>編寫一個(gè)驅(qū)動(dòng)程序之前要判斷該函數(shù)是否為可重入函數(shù)。如果一個(gè)函數(shù)可能被
    發(fā)表于 09-26 17:05 ?1694次閱讀

    Windows設(shè)備驅(qū)動(dòng)程序編寫時(shí)的主要問(wèn)題及解決方案

    Windows設(shè)備驅(qū)動(dòng)程序編寫時(shí)的主要問(wèn)題及解決方案 結(jié)合“通用高速PCI總線目標(biāo)模塊”的驅(qū)動(dòng)程序設(shè)計(jì),全面地討論了Windows設(shè)備(特別
    發(fā)表于 05-03 11:58 ?1624次閱讀

    Linux設(shè)備驅(qū)動(dòng)程序編寫

    本站提供的Linux設(shè)備驅(qū)動(dòng)程序編寫資料,希望對(duì)你的學(xué)習(xí)有幫助。 世界各地都有人在鉆研Linux內(nèi)核,大多是在寫設(shè)備驅(qū)動(dòng)程序。盡管每個(gè)驅(qū)動(dòng)程序都不一樣,而且你還要知道自己設(shè)備
    發(fā)表于 05-25 16:24 ?108次下載

    Linux系統(tǒng)網(wǎng)絡(luò)驅(qū)動(dòng)程序編寫

    驅(qū)動(dòng)程序編寫 一.Linux系統(tǒng)設(shè)備驅(qū)動(dòng)程序概述 1.1 Linux設(shè)備驅(qū)動(dòng)程序分類 1.2 編寫驅(qū)動(dòng)程
    發(fā)表于 11-07 10:40 ?0次下載

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

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

    如何為L(zhǎng)inux編寫用戶空間設(shè)備驅(qū)動(dòng)程序

    了解如何為L(zhǎng)inux編寫用戶空間設(shè)備驅(qū)動(dòng)程序。 用戶空間驅(qū)動(dòng)程序為某些設(shè)備提供內(nèi)核空間驅(qū)動(dòng)程序的替代方案
    的頭像 發(fā)表于 11-22 07:04 ?3677次閱讀

    如何編寫基于ARM的裸機(jī)程序和基于Linux的驅(qū)動(dòng)程序

    在嵌入式開(kāi)發(fā)中,ADC應(yīng)用比較頻繁,本文主要講解ADC的基本原理以及如何編寫基于ARM的裸機(jī)程序和基于Linux的驅(qū)動(dòng)程序。
    的頭像 發(fā)表于 09-13 09:25 ?3243次閱讀
    如何<b class='flag-5'>編寫</b>基于ARM的裸機(jī)<b class='flag-5'>程序</b>和基于Linux的<b class='flag-5'>驅(qū)動(dòng)程序</b>

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

    大概是能看的出來(lái)兼容adx112的,采用的是spi的接口,在這個(gè)章節(jié)我們主要講是如何編寫驅(qū)動(dòng)程序,所以先跳過(guò)一些重要信息。
    發(fā)表于 08-02 14:59 ?1031次閱讀
    如何<b class='flag-5'>編寫</b>ADX122<b class='flag-5'>驅(qū)動(dòng)程序</b>?