欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

LCD驅(qū)動(dòng)

1,概念

寧洱ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書(shū)未來(lái)市場(chǎng)廣闊!成為創(chuàng)新互聯(lián)的ssl證書(shū)銷(xiāo)售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話(huà)聯(lián)系或者加微信:18980820575(備注:SSL證書(shū)合作)期待與您的合作!

電子槍?zhuān)河脕?lái)打像素點(diǎn)

像素點(diǎn):即分辨率

RGD:三原色 在計(jì)算機(jī)領(lǐng)域中,每個(gè)像素點(diǎn)又RGB三原色組成像素點(diǎn)的要素值。屏幕上的一個(gè)點(diǎn)對(duì)應(yīng)一個(gè)具體的數(shù)值,該初始值包含紅綠藍(lán)三者的值

 

顯存:它會(huì)從DDRAM中劃出一部分當(dāng)顯存用,操作LCD就變成操作顯存和LCD對(duì)應(yīng)的值。那我們LCD驅(qū)動(dòng)主要工作就是配置LCD控制器,往顯卡中傳輸要在LED上顯示的內(nèi)容,

LCD驅(qū)動(dòng)開(kāi)發(fā)的主要工作:申請(qǐng)顯存,配置LED控制器,讓LED控制器自動(dòng)的,周期性的,讀取顯存中的數(shù)據(jù),按照一定的時(shí)序(點(diǎn)和點(diǎn)時(shí)間間隔,換行時(shí)間,換屏?xí)r間)將讀取到的數(shù)據(jù)發(fā)送給LCD屏LCD硬件會(huì)完成像素點(diǎn)的顯示,也就是配置他們之間傳數(shù)據(jù)要和它打點(diǎn)速度兼容

framebuffer:導(dǎo)出LCD物理緩沖區(qū)(顯存)到用戶(hù)空間(0~3G),用戶(hù)空間要顯示一副圖像到LCD屏,在用戶(hù)空間直接操作顯存,在用戶(hù)空間直接操作顯存,將要顯示的圖像拷貝到顯存中的相應(yīng)位置,要實(shí)現(xiàn)mmap

LCD驅(qū)動(dòng)

 

 

 

#include<stdio.h>

#include<stdlib.h>

#include<fcntl.h>

#include<sys/mmap.h>

#include<linux/fb.h>

srtuct?。妫猓撸妫椋撸螅悖颍澹澹睿椋睿妫铩。妫猓妫椋。健。埃?;

struct fb_var_screeninfo?。妫猓觯幔颉。健。埃?;

int?。妫猓常病。健。危眨蹋?;

 

#define?。茫希蹋希遥撸遥牛摹。埃埃埃妫妫埃埃埃?/p>

#define?。茫希蹋希遥撸牵遥牛牛巍。埃兀埃埃埃埃疲疲埃?/p>

#define?。茫希蹋希遥撸拢蹋眨拧 。埃兀埃埃埃埃埃埃疲?/p>

/*記錄顯存大?。?/p>

long screensize?。健。?;

int?。恚幔椋睿ǎ?/p>

  ?。椋睿簦妫洹。健。?;

  ?。椋睿簟。。健。?;

   int?。。健。?;

   fd?。健。铮穑澹睿?/p>

  ?。妫洹。健。铮穑澹睿ǎⅲ洌澹觯妫猓埃ⅲ?;

if(fd<0)

?。穑颍椋睿簦妫ǎⅲ铮穑澹睢。洌澹觯妫猓埃。妫幔椋欤澹洌 。埽睿ⅲ?/p>

 ?。颍澹簦酰颍睢。?;

/*獲取屏幕固定信息*/

ioctl(fd,FBIOGET_FSCREENINFO,&fbfox);

/*獲得屏幕可變信息*/

ioctl(fd,FBIOGET_VSCREENINFO,&fbvar);

screensize?。健。妫猓觯幔颍颍澹蟆。妫猓觯幔颍颍澹蟆。ǎ妫猓觯幔颍猓椋簦螅撸穑澹颍撸穑椋澹欤?;

fb32?。健。恚恚幔穑ǎ?,screensize,PROT_READ,MAP_SHARED,fd,0);

 

if(fb32?。健。剑危眨蹋蹋?/p>

   ?。穑颍椋睿簦妫ǎⅲ恚恚幔稹。妫颍幔恚澹猓酰妫妫澹颉。簦铩。酰螅澹颉。螅穑幔悖濉。妫幔椋欤澹洌 。埽睿ⅲ?;

return?。保?/p>

/*操作顯存*/

if(fbvar.bits_per_pixel?。剑剑福?/p>

printf("starting 8?。猓穑稹。妫颍幔恚澹猓酰妫妫澹颉。簦澹螅簟。。埽睿ⅲ?;

else if(fbvar.bits_per_pixel?。剑剑保叮?/p>

printf("starting?。保丁。猓穑稹。妫颍幔恚澹猓酰妫妫澹颉。簦澹螅簟。。埽睿ⅲ?;

if(fbvar.bits_per_pixel?。剑剑玻矗?/p>

printf("starting?。玻础。猓穑稹。妫颍幔恚澹猓酰妫妫澹颉。簦澹螅簟。。埽睿ⅲ?/p>

 

if(fbvar.bits_per_pixel?。剑剑常玻?/p>

printf("starting 32?。猓穑稹。妫颍幔恚澹猓酰妫妫澹颉。簦澹螅簟。。埽睿ⅲ?;

for(;y<fbvar.yres/3;y++)

for(x=0;x<fbvar.xres;x++)

?。ǎ妫猓常病。。妫猓觯幔颍颍澹螅健。茫希蹋希遥撸遥牛模?/p>

 

for(;y<fbvar.yres2/3;y++)

for(x=0;x<fbvar.xres;x++)

?。ǎ妫猓常病。。妫猓觯幔颍颍澹螅健。茫希蹋希遥撸牵遥牛牛危?/p>

 

 

for(;y<fbvar.yres;y++)

for(x=0;x<fbvar.xres;x++)

 *(fb32?。。妫猓觯幔颍颍澹螅健。茫希蹋希遥撸拢蹋眨?;

munmap(fd32,screensize);

close(fd);

return?。?;

 

一般芯片把不確定的信息變成可調(diào)節(jié)的信息

LCD 管腳:VD0~VD23:數(shù)據(jù)管腳   傳送RGB

HSYNC:當(dāng)該管腳收到信號(hào)是,電子槍由最右端跳回最左端

VSYNC:該管腳收到信號(hào)時(shí),電子槍由右下角跳回左上角

VCLK::每個(gè)VCLK信號(hào)使電子槍跳到下一個(gè)像素點(diǎn)

VNEN:視頻數(shù)據(jù)使能電子槍接收VD0~VD23上的數(shù)據(jù)。

3.時(shí)序圖

 HSPW:水平同步脈沖寬度

 HBPD:從水平同步信號(hào)到下一行有效信號(hào)的寬度,即電子槍從最右端回到最左端的時(shí)間

HOZVAL:一行像素個(gè)數(shù)

HFPD:打完一行像素到下一個(gè)水平同步信號(hào),

VSPW垂直同步脈沖寬度

VBPD:一針結(jié)束后,垂直同步信號(hào)以后的無(wú)效行數(shù)

 LINEVAL:一共有多少行

VFPD:一針結(jié)束后,垂直同步信號(hào)以前的無(wú)效行數(shù)

極性:信號(hào)的極性根據(jù)外接LCD相應(yīng)極性可配置

 

 

 

linux中framebuffer框架

linux下LCD驅(qū)動(dòng)開(kāi)發(fā)的最主要數(shù)據(jù)結(jié)構(gòu)

struct fb_info{

atomic_t count;

int node;

int flags;

struct mutex lock;/* Lock for open/release/ioctl funcs */

struct mutex mm_lock;/* Lock for fb_mmap and smem_* fields */

struct fb_var_screeninfo var;/* Current var */

struct fb_fix_screeninfo fix;/* Current fix */

struct fb_monspecs monspecs;/* Current Monitor specs */

struct work_struct queue;/* Framebuffer event queue */

struct fb_pixmap pixmap;/* Image hardware mapper */

struct fb_pixmap sprite;/* Cursor hardware mapper */

struct fb_cmap cmap;/* Current cmap */

struct list_head modelist;      /* mode list */

struct fb_videomode *mode;/* current mode */

 

struct fb_ops *fbops; //重點(diǎn)

#endif

char __iomem *screen_base;/* Virtual address *///顯存的起始虛擬地址3G~4G

unsigned long screen_size;/* Amount of ioremapped VRAM or 0 */ //記錄顯存大小

}

 

 

struct fb_var_screeninfo {

__u32 xres;/* visible resolution*/

__u32 yres;

__u32 xres_virtual;/* virtual resolution*/

__u32 yres_virtual;

__u32 xoffset;/* offset from virtual to visible */

__u32 yoffset;/* resolution*/

 

__u32 bits_per_pixel;/* guess what*/

__u32 grayscale;/* != 0 Graylevels instead of colors */

 

struct fb_bitfield red;/* bitfield in fb mem if true color, */

struct fb_bitfield green;/* else only length is significant */

struct fb_bitfield blue;

struct fb_bitfield transp;

}

 

struct fb_fix_screeninfo {

char id[16];/* identification string eg "TT Builtin" */

unsigned long smem_start;/* Start of frame buffer mem */顯存的起始位置且是物理的

/* (physical address) */

__u32 smem_len;/* Length of frame buffer mem */顯存大小

__u32 type;/* see FB_TYPE_**/

__u16 reserved[3];/* Reserved for future compatibility */

};

 

 

如果要自己寫(xiě)個(gè)LCD驅(qū)動(dòng),框架應(yīng)該怎么寫(xiě)

1)分配一個(gè)fb_info

  s3cfb_alloc_framebffer()

2)設(shè)置/填充該結(jié)構(gòu)體

3)初始化硬件 如:配置GPIO管腳功能,時(shí)序初始化配置,申請(qǐng)顯存,將申請(qǐng)到的顯存起始地址告訴LCD控制器

4)注冊(cè)fb_info結(jié)構(gòu)

  s3cfb_register_framebuffer(...);

5)內(nèi)核中的驅(qū)動(dòng)程序

通過(guò)make menuconfig可以得到一個(gè)路徑和變量。我的變量和路徑是:Graphics support->Support for frame buffer devices(S5P Framebuffer support (Defined at drivers/video/samsung/Kconfig:5  CONFIG_FB_S5P  )  )  Select LCD Type (WA101S)(CONFIG_FB_S5P_WA101S)

->Select LCD Type

平臺(tái)設(shè)備總線架構(gòu)

bus

device:evs.c

driver:s3cfb.c

資源 static struct resource s3cfb_resource={}

platfirm_data

核心文件是 fbmen.c

s3cfb.c   s3cfb_fimd6x.c

s3cfb.c ->需要完成的驅(qū)動(dòng)程序   ,s3cfb_fimd6x.c封裝了功能函數(shù),供s3cfb.c調(diào)用

LCD手冊(cè)中

thpw:1~40:20

thb:46

HBPD:46-20

s3cfb_init_global(fbdev)

{

s3cfb_set_polarity(ctrl);

s3cfb_set_timing(ctrl);

}

struct file_operations fb_fops

{

.opem

.read

.write

.mmap

.ioctl

      

}

找對(duì)應(yīng)關(guān)系的算法register_fb[minor] =fb_info

用戶(hù)空間 open()

fb_ops.open()

{

看/dev/fbn對(duì)應(yīng)的fb_info.fbops->ops

存在則調(diào)用fb_info.fbops->open不存在執(zhí)行默認(rèn)操作

}

5驅(qū)動(dòng)程序要驅(qū)動(dòng)的硬件和CPU連接方式

1,gpio連接  

2. 類(lèi)似于內(nèi)存接口,有數(shù)據(jù)線,地址線,控制線BANK

3,協(xié)議類(lèi)接口

文章名稱(chēng):LCD驅(qū)動(dòng)
本文網(wǎng)址:http://aaarwkj.com/article32/pccipc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供移動(dòng)網(wǎng)站建設(shè)、域名注冊(cè)、定制開(kāi)發(fā)、服務(wù)器托管網(wǎng)頁(yè)設(shè)計(jì)公司、網(wǎng)站內(nèi)鏈

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都網(wǎng)頁(yè)設(shè)計(jì)公司
欧洲一区二区在线激情| 国产黄片免费高清观看| av在线免费播放观看| 91av国产一区二区| 青青草针对华人在线视频| 亚洲精品紧身裙女教师av| 欧美日韩亚洲国产激情| 无码精品人妻一区二区三区中| 亚洲成人有码在线观看| 国产精品五月婷婷六月丁香| 偷拍丝袜美腿在线观看| 在线看片国产精品自拍| 日韩欧美麻豆不卡一区二区| 国产精品久久久天美传媒| 欧美香蕉视频播放二区| 久久免费少妇高潮99精品| 久久婷亚洲综合五月天| 国产亚洲一区二区三区日韩| 深夜福利视频一区二区| 亚洲日本成人av在线观看| 亚洲日本在线观看午夜视频| 日日夜夜天天操天天干| 精品人妻中文字幕一区有码| 国产精品三级竹菊影视| 超碰av之男人的天堂| 日韩视频播放一区二区| 国产av专区久久伊人亚洲| 五月婷婷六月丁香免费视频| 日韩精品中文字幕有码在线| 麻豆色视频在线观看免费| 91日本视频在线播放| 天堂中文在线免费观看av| 天堂av中文字幕在线不卡| 97成人在线免费视频| 色婷婷激一区二区三区| 国产亚洲理论片在线观看| 日本加勒比高清在线播放| 四虎久久久最新网址| 日韩精品a区二区在线电影| 久青青国产综合自拍视频在线观看| 黄色录像黄色片黄色片|