Linux驱动:LCD驱动测试

发布者:HappyHearted最新更新时间:2025-01-09 来源: cnblogs关键字:Linux驱动  LCD  驱动测试 手机看文章 扫描二维码
随时随地手机看文章

(1) 进入内核源码目录中,make menuconfig -> Device Drivers -> Graphics support -> [M]Support for frame buffer devices


重新编译内核 make uImage ,然后make modules,将driver/video/下的 fb.ko、cfbfillrect.ko、cfbimgblt.ko、cfbcopyarea.ko拷贝到210的根文件中,分别 insmod 安装到内核中。


(2) 安装lcd.ko驱动模块


(3) 应用层读写 frame buffer 测试程序框架


#include

#include

#include

#include

#include <linux/fb.h>

#include

int main()

{  

    int fbfd = 0;

    struct fb_var_screeninfo vinfo;

    struct fb_fix_screeninfo finfo;

    long int screensize = 0;

    char *fbp = NULL;

    int x,y,r = 0,g = 0, b = 0;

    unsigned int rgb;

    

    /*打开设备文件*/

    fbfd = open('/dev/fb0', O_RDWR);

    

    /*取得屏幕相关参数*/

    ioctl(fbfd, FBIOGET_FSCREENINFO, &finfo);  

    ioctl(fbfd, FBIOGET_VSCREENINFO, &vinfo);

    

    /*计算屏幕缓冲区大小*/

    screensize = vinfo.xres * vinfo.yres * vinfo.bits_per_pixel / 8;

    

    /*映射屏幕缓冲区到用户地址空间*/

    fbp=(char*)mmap(0,screensize,PROT_READ | PROT_WRITE,MAP_SHARED, fbfd, 0);

    if((int)fbp == -1)

    {

        printf('Error: failed to map framebuffer device to memory .n');

        return -1;

    }

    /*下面可通过fbp指针操作缓冲区:显示红 */

    for(y = 0;y<(vinfo.yres);y++)//vinfo.yres = 272

    {    

        for(x = 0;x < vinfo.xres;x++)//vinfo.xres=480

        {    

            long location = x*3 + y * vinfo.xres * 3;//用户缓冲区地址移动,一个像素3字节(24位真彩色)

            r = 256;

            g = 0;

            b = 0;

            rgb = (r << 16) | (g << 8) | b;    //分别获得相应颜色

            *((unsigned short *)(fbp + location)) = rgb;

        }

    }

    /*释放缓冲区,关闭设备*/

    munmap(fbp, screensize);

    close(fbfd);

}


或者直接使用:cat xxxfile > /dev/fb0 现象:出现花屏。


关键字:Linux驱动  LCD  驱动测试 引用地址:Linux驱动:LCD驱动测试

上一篇:Linux驱动:内核等待队列
下一篇:字符设备驱动(1)驱动代码完整源码:charButtons.c

推荐阅读最新更新时间:2026-03-20 15:15

iMX6ULL终结者Linux WIFI驱动实验rtl8723 Wifi联网测试
在迅为i.MX6UL终结者开发板上使用的是usb接口的RTL8723 wifi模块,原理图如图 1所示: 可以看到RTL8723模块的接口非常简单,只有DP1和DM1连接到usb HUB芯片上,就可以完成通信电路。RTL8723是realtek公司的wifi芯片,已经提供了wifi驱动源码,就不需要我们自己去编写了,只需要将提供的wifi驱动源码添加到Linux内核中进行编译就可以了。 1.1 在Linux内核中添加wifi驱动 首先获取wifi驱动源码,放到Linux内核drivers/net/wireless目录下,如图 1.1.1所示: rtl8723BU目录下内容如图 1.1.2所示: 其中Kconfig文件是rtl
[单片机]
iMX6ULL终结者<font color='red'>Linux</font> WIFI<font color='red'>驱动</font>实验rtl8723 Wifi联网<font color='red'>测试</font>
编译可加载lcd驱动linux uImage
pc:Centos5.4 内核:linux 3.0.1 开发板:ok6410 交叉编译器:arm-linux-gcc 4.4.1 LCD驱动程序 怎么写LCD驱动程序? 1. 分配一个fb_info结构体: framebuffer_alloc 2. 设置 3. 注册: register_framebuffer 4. 硬件相关的操作 测试: 1. make menuconfig去掉原来的驱动程序 - Device Drivers - Graphics support M S3C LCD framebuffer support 2. make uImage 出现错误:修改/drivers/media/video/samsung/t
[单片机]
Linux驱动:s3c2440 lcd 驱动分析
一,前言 s3c2440 lcd 驱动分析,涉及到的内容有,LCD图像显示原理、s3c2440的LCD控制器的操作、LCD驱动使用平台总线-设备-驱动模型的实例、LCD相关参数的设置、fb字符设备驱动实例、framebuffer的注册和管理、以及一次LCD显示的完整过程分析。 二,LCD原理和硬件分析 2.1 LCD原理解析 SDRAM:在SDRAM中申请了一块连续的内存作为LCD显示数据的存储,叫做显存(framebuffer)。 LCD控制器:LCD控制器通过硬件电路和LCD屏连接。 LCD屏:作为一个外设通过硬件电路和MCU(引脚配置为LCD引脚)连接。 图像在LCD屏上显示,可以看成是LCD控制器先从显存中取出一帧
[单片机]
linuxLCD设备驱动(1)——framebuffer(帧缓冲)
1、framebuffer 帧缓冲 帧缓冲(framebuffer)是Linux 系统为显示设备提供的一个接口,它将显示缓冲区抽象,屏蔽图像硬件的底层差异,允许上层应用程序在图形模式下直接对显示缓冲区进行读写操作。用户不必关心物理显示缓冲区的具体位置及存放方式,这些都由帧缓冲设备驱动本身来完成。 framebuffer机制模仿显卡的功能,将显卡硬件结构抽象为一系列的数据结构,可以通过framebuffer的读写直接对显存进行操作。用户可以将framebuffer看成是显存的一个映像,将其映射到进程空间后,就可以直接进行读写操作,写操作会直接反映在屏幕上。 framebuffer是个字符设备,主设备号为29,对应于/de
[单片机]
<font color='red'>linux</font>中<font color='red'>LCD</font>设备<font color='red'>驱动</font>(1)——framebuffer(帧缓冲)
linuxLCD设备驱动(4)——基于s3c6410平台
我们这一篇来说与具体的TFT显示器有关的部分,当遇到具体的显示器是我们应该设置什么参数,怎样设置这些参数。 1、在s3cfb_WXCAT43.c (linux2.6.28driversvideosamsung)文件中是有关具体显示器的设置。我们一段一段来看。 #include linux/wait.h #include linux/fb.h #include linux/delay.h #include linux/platform_device.h #include plat/regs-gpio.h #include plat/regs-lcd.h #include s3cfb.h #define S3C
[单片机]
<font color='red'>linux</font>中<font color='red'>LCD</font>设备<font color='red'>驱动</font>(4)——基于s3c6410平台
linux 2.6.32 在arm9(s3c2440)平台的移植 - LCD背光驱动
LCD背光是通过 CPU的 LCD_PWR引脚来控制的, 当LCD_PWR输出1, 亮 , 输出0则灭. 以下的代码均参考mini2440的移植手册 (1)新建/drivers/video/mini2440_backlight.c #include linux/errno.h #include linux/kernel.h #include linux/module.h #include linux/slab.h #include linux/input.h #include linux/init.h #include linux/serio.h #include linux/delay.h #include
[单片机]
S3C2440,LinuxLCD驱动
到了神秘的LCD驱动了,信息还真有点胆怯,但是还是不得不走下去。对刚刚学习的linux驱动坐一下总结,毕竟是Linux内核当中的东东,而且是那么的繁琐。做一总结,等用笔记把学过东西几下来,这样就不会忘了。哈哈! 那就开始!!! 在编写裸机LCD程序的时候,首先就是硬件初始化操作。有一个寄存器当中存放了帧缓冲的起始地址。这个参数是非常重要的。当配置好硬件后,帧缓冲中的数据能够脱离CPU不停地将真缓冲当中的数据写入到LCD屏。如果我们要现实一个图片的话只需要将图片数据放到帧缓冲当中,这样就非常的方便了。 在linux当中,把整个LCD驱动分为两层:LCD帧缓冲区层和LCD硬件驱动层。LCD帧缓冲区层其实就是将内核中的一部分空间当作一个
[单片机]
Linux-2.6.32.2内核在mini2440上的移植(七)---LCD驱动移植
移植环境 1,主机环境:VMare下CentOS 5.5 ,1G内存。 2,集成开发环境:Elipse IDE 3,编译编译环境:arm-linux-gcc v4.4.3,arm-none-linux-gnueabi-gcc v4.5.1。 4,开发板:mini2440,2M nor flash,128M nand flash。 5,u-boot版本:u-boot-2009.08 6,linux 版本:linux-2.6.32.2 7,参考文章: 嵌入式linux应用开发完全手册,韦东山,编著。 Mini2440 之Linux 移植开发实战指南 【1】LCD 驱动基础知识 Linux-2.6.32.2 内核已经支持S3C2440
[单片机]
<font color='red'>Linux</font>-2.6.32.2内核在mini2440上的移植(七)---<font color='red'>LCD</font><font color='red'>驱动</font>移植
小广播
最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

厂商技术中心

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2026 EEWORLD.com.cn, Inc. All rights reserved