首 页文档资料下载资料维修视频包年699元
请登录  |  免费注册
当前位置:精通维修下载 > 文档资料 > 家电技术 > 单元电路介绍 > 其它电路
基于SEP4O2O的Linux frame buffer驱动设计
来源:本站整理  作者:佚名  2009-10-23 10:22:24




    完成可变参数和固定参数的填充之后,要为本驱动申请中断资源,具体函数为requestirq(irq,sep4020fb_irq,SA INTERRUPT,pdev一>name,info),irq为请求的中断号,sep4020fb_irq为中断处理服务子程序,SA_INTERRUPT表示为一个快速中断处理,在执行中断的过程中禁止所有在当前处理器上的其他中断。申请中断完毕之后,就要完成本驱动关键步骤,调用sep4020fb_map_video_memory()函数申请显示缓冲区。在该函数中,首先调用PAGE_ALIGN()函数对齐申请的缓冲区的大小,使即将申请的显示缓冲区大小为页的整数倍;然后调用函数dma_all oc_writecombine(fbi->dev,fbi一>map_size,&fbi一>map_dma,GFP_KERNEL), 分配一块写合并的内存区域作为帧缓存,函数返回值为申请的帧缓存的起始位置的虚拟地址,fbi一>map_dma代表的是该位置的物理地址,fbi一>map_si ze为此内存区的大小。
    完成上面的工作之后,驱动程序在就有了一块内存区域作为帧缓冲,向此区域写入数据就能显示在液晶屏上。后面还要调用sep4020fb_init_registers(info)函数初始化L C D控制器的寄存器;然后调用sep4020fb_check_var(&fbinfo一>var,fbinfo)检查可变参数,最后调用register_framebuffer(fbinfo)注册帧缓冲设备。
3.3 提供给应用程序的接口
    本驱动设计定义了如下几个接口供应用程序调用:fb_ioctl,fb_blank,fb_fillrect.
    部分代码如下:

    
    sep4020_blank函数主要实现了将液晶屏清屏的功能。
    sep4020fb_fillrect函数实现了填充液晶屏一块矩形区域的功能。
    sep4020fb_ioctl函数则为上层应用提供了更多的功能,部分可供上层调用的命令如下:
    FBIOGET_VSCREENINFO表示用户获取屏幕的可变参数;
    FBIOPUT_VSCREENINFO表示用户设置可变的屏幕参数;
    FBIOGET_FSCREENINFO表示用户获得屏幕的固定参数;
    FBIOBLANK表示调用sep4020fb_blank函数清空液晶屏;
    FBIOPUTCMAP表示设置屏幕的颜色表;
    FBIOGETCMAP表示获得颜色表。
3.4 用户空间对帧缓冲设备进行访问
    驱动程序经过编译并加载为模块后,成为/dev/fb0设备,在应用程序中,操作/dev/fb0一般遵循如下步骤:1)打开/dev/fb0设备文件;2)调用ioctl()操作取得屏幕的参数,如屏幕分辨率和每个像素所占的比特数,进而计算出显示缓冲区的大小;3)将屏幕缓冲区映射到用户空间;4)映射之后就可以向缓冲区写入或者读出数据,进行绘图了。


4 测试与结论
    根据前面论述的步骤向屏幕缓冲区写入数据,将每个像素的值设为0xF0F0,在屏幕上显示如下图像:

    测试结果显示,在本课题驱动模块的支持下,可以向屏幕缓冲区写入数据并正确地在屏幕上显示出来,工作完全正常。本文所提出的设计方案已经应用在本单位某产品上。

上一页  [1] [2] [3]  下一页

关键词:

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分)

推荐阅读

图文阅读

热门阅读

Copyright © 2007-2017 down.gzweix.Com. All Rights Reserved .
页面执行时间:246,171.90000 毫秒