framebuffer驱动详解4——framebuffer驱动分析2(probe函数讲解)

以下内容源于朱有鹏《物联网大讲堂》课程的学习,如有侵权,请告知删除。

主要在填充fbdev这个结构体。

二、framebuffer驱动分析2

1、probe函数分析


(1)struct s3c_platform_fb

  • 这个结构体是fb的platform_data结构体;
  • 这个结构体变量就是platform设备的私有数据,这个数据在(结构体platform_device中的)(成员元素结构体device中)platform_data中存储。
  • 在mach-x210文件填充着这些数据;
  • 在probe函数中,通过传参的platform_device指针取出来。

(2)struct s3cfb_global

  • 这个结构体主要作用是在驱动部分的2个文件(s3cfb.c和s3cfb_fimd6x.c)的函数中做数据传递用的。

(3)struct resource

(4)regulator:整流器,负责供电管理。


2、platform_data的传递过程

(1)to_fb_plat


(2)platform_data定义在s3cfb_set_platdata函数中

  • 之前我们一般提前就已经定义好了(因为简单固定),不用再使用函数来设置。
  • 而这里因为lcd情况复杂,因此使用函数来设置。


(3)mdkc110_machine_init





三、framebuffer驱动分析3

1、struct s3cfb_lcd(fbdev->lcd = (struct s3cfb_lcd *)pdata->lcd;

  • pdata->lcd是lcd的一些硬件参数信息。
  • 换屏幕时,修改的就是这些参数。

2、pdata->cfg_gpio:初始化lcd用到的一些GPIO;

3、pdata->clk_on:打开lcd有关的时钟;

4、resource的处理

(1)platform_device中提供resource结构体数组

(2)probe中platform_get_resource取出resource并且按FLAG分头处理



四、framebuffer驱动分析4

1、硬件操作函数集合文件:s3cfb_fimd6x.c文件

(1)s3cfb_set_vsync_interrupt0

(2)s3cfb_set_global_interrupt

2、s3cfb_init_global

以上内容主要是填充fbdev这个结构体。

3、向框架注册该fb设备

(1)s3cfb_alloc_framebuffer

(2)s3cfb_register_framebuffer





五、framebuffer驱动分析5

1、一些硬件操作

(1)s3cfb_set_clock:设置像素时钟

(2)s3cfb_set_window

(3)s3cfb_display_on

2、驱动中处理中断

(1)platform_get_irq

(2)request_irq

3、logo显示


  • s3cfb_probe
  •        fb_prepare_logo
  •              fb_find_logo真正查找logo文件
  •        fb_show_logo
  •              fb_show_logo_line真正显示logo
  •                     fb_do_show_logoinfo->fbops->fb_imageblit实际操作硬件fb进行显示工作的函数



本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/461163.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

XenDesktop 5 SQL Server Mirror事务日志比较大的原因分析

在实施XenDesktop5项目过程中,发现XenDesktop5版本的数据库镜像事务日志很大,在XenDesktop4和XenApp版本中不存在该问题;于是我根据该现象探究XenDesktop5及以上版本镜像数据库事务日志为何如此之大以及我们今后实施的过程中该如何来维护这么…

input子系统详解1——input子系统简介

以下内容源于朱有鹏嵌入式课程的学习与整理,如有侵权请告知删除。 转载博客:input输入子系统 - 涛少& - 博客园​​​​​​​ 前言 Linux系统支持的输入设备繁多,例如键盘、鼠标、触摸屏、手柄等等,Linux系统是如何管理如此…

【04】Effective Java - 类和接口

为什么80%的码农都做不了架构师?>>> 1、使类和成员的可访问性最小化 封装是软件设计的基本原则之一,它的好处就是解除组成系统的各个模块之间的耦合关系,使得这些模块可以独立地开发、测试、优化、使用、理解 修改,同…

input子系统详解3——input子系统框架核心层分析

以下内容源于朱有鹏嵌入式课程的学习,如有侵权请告知删除。 一、前言 由input子系统简介可知,input子系统分为三层: 1、上层输入事件驱动层 涉及的文件有x210_kernel\drivers\input\evdev.c、mousedev.c 和 joydev.c文件,分别对应…

Gitlab Merge Request Builder Plugin 配置小记

2019独角兽企业重金招聘Python工程师标准>>> 以前在给一些开源项目贡献代码的时候,在github上一提交pull request或者提交的分支代码更新了的时候,jenkins就会自动把代码进行merge并且运行单元测试,当时看了心里就2个字&#xff1…

IOS:屏幕旋转与Transform

IOS:屏幕旋转与Transform iTouch,iPhone,iPad设置都是支持旋转的,如果我们的程序能够根据不同的方向做出不同的布局,体验会更好。 如何设置程序支持旋转呢,通常我们会在程序的info.plist中进行设置Supporte…

input子系统详解4——输入事件驱动层源码分析

以下内容源于朱有鹏嵌入式课程的学习与整理,如有侵权请告知删除。 一、前言 由input子系统简介可知,input子系统分为三层: ​ 1、上层输入事件驱动层 涉及的文件有x210_kernel\drivers\input\evdev.c、mousedev.c 和 joydev.c文件&#xff0…

java公钥加密私钥解密过程_GPG加密解密过程

GPG加密解密过程一、Linux系统下1.安装yum安装[rootPOC-ORACLE ~]# yum install gnupg下载安装包安装https://www.gnupg.org/download/index.en.html查看gpg帮助[rootPOC-ORACLE ~]# gpg --helpgpg (GnuPG) 2.0.14libgcrypt 1.4.5Copyright (C) 2009 Free Software Foundation,…

十分钟让你明白Objective-C的语法(和Java、C++的对比)

2019独角兽企业重金招聘Python工程师标准>>> 很多想开发iOS,或者正在开发iOS的程序员以前都做过Java或者C,当第一次看到Objective-C的代码时都会头疼,Objective-C的代码在语法上和Java, C有着很大的区别,有的同学会感觉…

I2C子系统详解1——I2C总线设备的驱动框架

以下内容源于朱有鹏嵌入式课程的学习与整理,如有侵权请告知删除。 参考博客 I2C总线驱动框架详解 linux内核I2C子系统详解 一、I2C总线的物理特征 这部分内容的简介可见博客:SPI、I2C、UART(即串口)三种串行总线详解。 &#x…

神经网络编程入门

本文主要内容包括: (1) 介绍神经网络基本原理, (2) AForge.NET实现前向神经网络的方法, (3) Matlab实现前向神经网络的方法 。 第0节、引例 本文以Fisher的Iris数据集作为神经网络程序的测试数据集。Iris数据集可以在http://en.wikipedia.or…

软考复习之路—组成原理

计算机系统的基础知识应该是作为一个编程人员必备的一门课程,仅仅有了解了计算机的组成,程序在计算 机中的存储状态,运算等基本内容,我们才干继续对计算机有更深层次的认识,更easy学习与上手。比方说要 想学习操作系统…

python内存管理机制错误_Python内存管理机制和垃圾回收机制的简单理解

一、内存管理机制1.由c开发出来的cpython2.include / objests3.需要下载python源码包4.Pyobject:floatPyVarObject:5.在python中所有东西创建对象的时候,内部都会存储一个数据// 维护双向链表struct _object *_ob_next;struct _object *_ob_p…

求背包问题所有解(C++实现)

这是我学习数据结构时的一道上机作业&#xff0c;那时还没养成写注释的习惯&#xff0c;所以各位得受点苦了。 只是简易背包问题。 代码&#xff1a; 展开 1 // 背包问题所有解2 // 作者:王锦 3 // 邮箱:jinkswvip.qq.com4 5 #include "stdafx.h"6 #include <iost…

JAVA--自制斐波那契数列输出

累了&#xff0c;写点简单的。 1 public class hello {2 3 /**4 * param args5 */6 public static void main(String[] args) {7 int Fabnum 10;8 int sum 0;9 System.out.print("Serial:\t"); 10 for(int i 1…

9、C语言 —— 指针的用处

为什么80%的码农都做不了架构师&#xff1f;>>> 1、用函数实现两个数的交换 ‍‍在没用函数之前&#xff0c;可以这样实现‍‍#include <stdio.h>int main() {int a 3;int b 7;int c;printf("交换前&#xff0c;a%d&#xff0c;b%d\n", a, b); …

java动态代理二cglib

2019独角兽企业重金招聘Python工程师标准>>> java动态代理 转载于:https://my.oschina.net/u/1430510/blog/290215

中断的上下半部

以下内容源于朱有鹏嵌入式课程的学习与整理&#xff0c;如有侵权请告知删除。 前言 因为输入类设备的输入都是异步事件&#xff0c;因此一般使用中断来处理和响应。 中断处理程序处于中断上下文中&#xff0c;不能和用户空间数据交互&#xff08;不能使用copy_to(from)_usr函数…

图片播放器小项目(详解)

以下内容源于朱有鹏《物联网大讲堂》课程的学习整理&#xff0c;如有侵权&#xff0c;请告知删除。一、开始动手写代码 1、Makefile介绍 &#xff08;1&#xff09;这是一个通用的项目管理的Makefile体系&#xff0c;自己写的&#xff08;有子文件夹组织的&#xff09;项目可以…

Telnet远程访问思科交换机、路由器

一、实验目的Telnet远程访问思科交换机、路由器二、实验拓扑三、实验步骤1、PC1远程管理S11&#xff09;配置交换机的管理IPS1(config)#int vlan 1S1(config-if)#ip add 192.168.1.100 255.255.255.0S1(config-if)#no shu2&#xff09;开启S1的telnet远程管理服务S1(config)#li…