《Linux驱动:s3c2440 lcd 驱动分析--终结篇》

发布者:Heavenly999最新更新时间:2024-07-09 来源: elecfans关键字:Linux驱动  s3c2440  lcd  驱动 手机看文章 扫描二维码
随时随地手机看文章

    fb_notifier_call_chain(FB_EVENT_FB_REGISTERED, &event);

    return 0;

}

六,一次LCD显示的过程

应用程序app: file = open('/dev/fb0',0)

将要显示的图像数据,使用write接口写入,

write->

    fb_write->

        // 如果lcd驱动的fbops中存在write函数,则使用lcd驱动中的数据

        if (info->fbops->fb_write)

            return info->fbops->fb_write(info, buf, count, ppos);

    否则使用fb_write写到显存中


    产生一个LCD中断,进入中断处理函数

    static irqreturn_t s3c2410fb_irq(int irq, void *dev_id)

    {

        struct s3c2410fb_info *fbi = dev_id;

        unsigned long lcdirq = readl(S3C2410_LCDINTPND);


        if (lcdirq & S3C2410_LCDINT_FRSYNC) {

            if (fbi->palette_ready)

                s3c2410fb_write_palette(fbi);

            // 控制LCD控制器开始从显存中取数据传输到LCD屏,显示图像

            writel(S3C2410_LCDINT_FRSYNC, S3C2410_LCDINTPND);

            writel(S3C2410_LCDINT_FRSYNC, S3C2410_LCDSRCPND);

        }


        return IRQ_HANDLED;

    }


static struct fb_ops s3c2410fb_ops = {

    .owner      = THIS_MODULE,

    .fb_check_var   = s3c2410fb_check_var,

    .fb_set_par = s3c2410fb_set_par,

    .fb_blank   = s3c2410fb_blank,

    .fb_setcolreg   = s3c2410fb_setcolreg,

    .fb_fillrect    = cfb_fillrect,

    .fb_copyarea    = cfb_copyarea,

    .fb_imageblit   = cfb_imageblit,

};


[1] [2] [3] [4]
关键字:Linux驱动  s3c2440  lcd  驱动 引用地址:《Linux驱动:s3c2440 lcd 驱动分析--终结篇》

上一篇:s3c2440裸机-时钟编程-1-2440时钟体系介绍
下一篇:《Linux驱动:s3c2440 lcd 驱动分析》

推荐阅读最新更新时间:2026-03-06 16:26

s3c2440 linux lcd驱动解读
s3c2440 linux lcd驱动解读 驱动层即s3c2410fb.c定义platform_driver 如下面文件定义了s3c2410fb_driver: \linux\linux-2.6.29\drivers\video\S3c2410fb.c static struct platform_driver s3c2410fb_driver = { .probe = s3c2410fb_probe, .remove = s3c2410fb_remove, .suspend = s3c2410fb_suspend, .resume = s3c2410fb_resume, .driver = { .name = s3c2410-
[单片机]
Linux驱动:s3c2410/s3c2440 ts驱动分析 之二》
一,前言 前面结合“平台总线-设备-驱动”模型分析了ts(触摸)驱动的加载过程,现在进入驱动程序分析下其具体的实现。涉及到输入子系统详解、input核心层程序分析、evdev事件处理层程序分析、ts设备驱动层程序分析以及s3c2440的ADC转换和触摸控制器的操作。 二,涉及的寄存器 image.png 三,调用probe函数 根据上一篇的分析,驱动层通过platform_driver_register注册后,会调用到该驱动层的probe函数。 四,s3c2410ts_probe函数分析 4.1 硬件寄存器设置 4.1.1 获取设备参数 struct s3c2410_ts_mach_info *info; info
[单片机]
s3c2440液晶屏驱动 (非内核自带) linux-4.1.24
对于,不想逐一检查内核自带驱动,想自己编写驱动。 1,make menuconfig 去掉 编译到内核,改为 M 编译为 模块(因为要用到里面的3个.ko 驱动) Device Drivers --- Graphics support --- Support for frame buffer devices --- M S3C2410 LCD framebuffer support 2,make uImage && make modules 生成新内核 和 模块文件 烧写新内核或使用 nfs bootm 使用编译为 M 模块的内核启动。 复制 3个 ko 文件到 文件系统,这里用的是 NFS 网络文件
[单片机]
Linux驱动:s3c2410/s3c2440 ts驱动分析 之二
一,前言 前面结合“平台总线-设备-驱动”模型分析了ts(触摸)驱动的加载过程,现在进入驱动程序分析下其具体的实现。涉及到输入子系统详解、input核心层程序分析、evdev事件处理层程序分析、ts设备驱动层程序分析以及s3c2440的ADC转换和触摸控制器的操作。 二,涉及的寄存器 三,调用probe函数 根据上一篇的分析,驱动层通过platform_driver_register注册后,会调用到该驱动层的probe函数。 四,s3c2410ts_probe函数分析 4.1 硬件寄存器设置 4.1.1 获取设备参数 struct s3c2410_ts_mach_info *info; info = ( str
[单片机]
基于S3C2440的嵌入式Linux驱动——SPI子系统解读(三)
该系列文章将分为四个部分: 第一部分,将对SPI子系统整体进行描述,同时给出SPI的相关数据结构,最后描述SPI总线的注册。 基于S3C2440的嵌入式Linux驱动——SPI子系统解读(一) 第二部分,该文将对SPI的主控制器(master)驱动进行描述。 基于S3C2440的嵌入式Linux驱动——SPI子系统解读(二) 第三部分,即本篇文章,该文将对SPI设备驱动,也称protocol 驱动,进行讲解。 第四部分,通过SPI设备驱动留给用户层的API,我们将从上到下描述数据是如何通过SPI的protocol 驱动,由bitbang中转,最后由master驱动将数据传输出 去。 基于S3C
[单片机]
S3C2440 Linux驱动移植——NAND驱动
1. 修改分区表 打开文件arch/arm/plat-s3c24xx/common-smdk.c,修改mtd_partition结构体数组。 修改后如下: view plain copy static struct mtd_partition smdk_default_nand_part = { = { .name = Uboot , .size = 0x00040000, .offset = 0x00000000, }, = { .name = K
[单片机]
<font color='red'>S3C2440</font> <font color='red'>Linux</font><font color='red'>驱动</font>移植——NAND<font color='red'>驱动</font>
linux2.6.32.2 mini2440平台移植-- LCD 显示驱动 ( W35屏 )
1.4.1 LCD 驱动基础知识 Linux-2.6.32.2 内核已经支持 S3C2440 的 LCD 控制器驱动,但在此我们先介绍一下关于 2440 LCD 控制器以及驱动相关的 LCD 的一些基础知识。 注意:在此我们只讨论 TFT LCD,也就是真彩屏。 LCD 驱动中最关键的就是时钟频率(Clock frequency)的设置,时钟频率设置不对,LCD 的显示就会闪,或者根本没有显示。一般 LCD 的 Datasheet 上会写有一个推荐的频率,比如 mini2440 所用的统宝 3.5 LCD,在它的数据手册第 13 页,有这样一个表格:可以看到,这里推荐的时钟频率是 6.39MHz,近似于 6.4MHz,
[单片机]
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(帧缓冲)
小广播
最新单片机文章
何立民专栏 单片机及嵌入式宝典

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

厂商技术中心

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

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