Linux驱动
文章平均质量分 81
loongembedded
本人目前在佛山一家上市公司负责智能终端、服务机器人的研发工作,欢迎大家的指教和交流!。
展开
-
s3c6410 开发板Linux系统支持 K9GAG08U0E的方法
由于NandFlash硬件升级比较快,公司去年一直在使用三星的K9GAG08U0D,现在MLC NandFlash 升级到了第二代,K9GAG08U0D 很快就会处在停产的状态,未雨绸缪,公司选型了K9GAG08U0E 来替代原有的NandFlash芯片。起初。本以为把新Nandflash ID信息增加到Uboot 和 Linux内核的NandFlash ID 列表文件中即可,也就是Uboot 和转载 2014-04-22 16:50:26 · 3213 阅读 · 0 评论 -
nand flash 扇区的管理以及初始化
(1)首先需要了解NAND FLASH的结构。如图: 以镁光MT29F4G08BxB Nand Flash为例,这款Flash(如上图)以4个扇区(sector)组成1个页(page),64个页(page)组成1个块(block),4096个块(block)构成整个Flash存储器;由于每个扇区的容量是512 字节(bytes),整个Flash容量为4224M转载 2014-05-29 11:48:19 · 2629 阅读 · 0 评论 -
Linux内核开发之将驱动程序添加到内核
一 . 概述: 在 linux 内核中增加程序需要完成以下三项工作: 1. 将编写的源代码复制到 Linux 内核源代码的相应目录 2. 在目录的 Kconfig 文件中增加新源代码对应项目的编译配置选项 3. 在目录的 Makefile 文件中增加对新源代码的编译条目 二 . 实例 1. 先把驱动代码 usbtmc( 文件夹 ) 赋值到转载 2014-09-18 18:00:36 · 4905 阅读 · 0 评论 -
Linux内核模块简介
一. 摘要这篇文章主要介绍了Linux内核模块的相关概念,以及简单的模块开发过程。主要从模块开发中的常用指令、内核模块程序的结构、模块使用计数以及模块的编译等角度对内核模块进行介绍。在Linux系统开发过程中,以模块的形式开发其重要性不言自明,而在嵌入式设备驱动开发中将驱动程序以模块的形式发布,更是极大地提高了设备使用的灵活性——用户只需要拿到相关驱动模块,再插入到用户的内核中,即可灵活地转载 2014-08-29 17:23:26 · 1060 阅读 · 0 评论 -
platform_driver_probe与platform_driver_register的区别
Platform Device and Drivers 从我们可以了解Platform bus上面的驱动模型接口:platform_device,platform_driver。和PCI和USB这些大结构的总线不同,虚拟总线 Platform bus使用最小结构来集成SOC processer上的各种外设,或者各种“legacy”之间的互联。Platform device 典型的P转载 2014-08-29 18:30:32 · 2736 阅读 · 0 评论 -
platform_device与platform_driver
做Linux方面也有三个多月了,对代码中的有些结构一直不是很明白,比如platform_device与platform_driver一直分不清关系。在网上搜了下,做个总结。两者的工作顺序是先定义platform_device -> 注册 platform_device->,再定义 platform_driver-> 注册 platform_driver。 (1)platform_devic转载 2014-08-29 13:54:34 · 1206 阅读 · 0 评论 -
platform设备驱动全透析
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://21cnbao.blog.51cto.com/109393/3376091.1 platform总线、设备与驱动在Linux 2.6的设备驱动模型中,关心总线、设备和驱动这3个实体,总线将设备和驱动绑定。在系统每注册一个设备的时候,会寻找与之匹配的驱动;相反的,转载 2014-08-29 16:40:50 · 1028 阅读 · 0 评论 -
Linux Platform Device and Driver
从 Linux 2.6 起引入了一套新的驱动管理和注册机制 :Platform_device 和 Platform_driver 。Linux 中大部分的设备驱动,都可以使用这套机制 , 设备用 Platform_device 表示,驱动用 Platform_driver 进行注册。 Linux platform driver 机制和传统的 device driver 机制 ( 通过转载 2014-08-29 18:20:22 · 1074 阅读 · 0 评论 -
Makefile的obj-y 和 obj-m
目标定义是Kbuild Makefile的主要部分,也是核心部分。主要是定义了要编 译的文件,所有的选项,以及到哪些子目录去执行递归操作。 最简单的Kbuild makefile 只包含一行: 例子: obj-y += foo.o 该例子告诉Kbuild在这目录里,有一个名为foo.o的目标文件。foo.o将从foo.c 或foo.S文件编译得到。 如果foo.o要编译成一模块,那就要用obj转载 2014-11-11 08:53:29 · 3222 阅读 · 0 评论 -
/dev、/sys/dev 和/sys/devices 和udev的关系
/dev,设备文件存储目录,应用程序通过对这些文件的读写和控制,可以访问实际的设备;/sys/devices目录,按照设备挂接的总线类型,组织成层次结构,保存了系统所有的设备;是文件系统管理设备的最重要的目录结构;这是内核设备按总线类型分层放置的目录结构, devices 中的所有设备都是连接于某种总线之下,在这里的每一种具体总线之下可以找到每一个具体设备的符号转载 2014-11-11 09:15:05 · 2076 阅读 · 0 评论 -
内核驱动中常见的miscdevice、platform_device、platform_driver
最近在看驱动模型,是越看越糊涂,以前接触比较多的都是一些字符驱动,对字符驱动的框架有一定的了解。后来因为想在驱动中实现设备文件的创建,又了解了一下,sysfs文件系统和udev设备文件系统,必然就涉及到了驱动模型。可是发现驱动模型和以前接触的字符驱动没什么联系。比如,以前写字符驱动,主要的内容就是实现file_operations结构体里的函数,然后就是申请设备号,注册字符设备,根本就没有涉及转载 2014-11-16 20:22:06 · 1823 阅读 · 0 评论 -
DEVICE_ATTR实例分析
在内核中, sysfs 属性一般是由 __ATTR 系列的宏来声明的,如对设备的使用 DEVICE_ATTR ,对总线使用 BUS_ATTR ,对驱动使用 DRIVER_ATTR ,对类别(class)使用 CLASS_ATTR, 这四个高级的宏来自于 , 都是以更低层的来自 中的 __ATTR/__ATRR_RO 宏实现。在adb shell 终端查看到接口,当我们将数据 echo 到转载 2014-11-16 17:48:58 · 2772 阅读 · 0 评论 -
linux设备和驱动加载的先后顺序
点击打开链接Linux驱动先注册总线,总线上可以先挂device,也可以先挂driver,那么究竟怎么控制先后的顺序呢。Linux系统使用两种方式去加载系统中的模块:动态和静态。静态加载:将所有模块的程序编译到Linux内核中,由do_initcall函数加载核心进程(/init/main.c)kernel_inità do_basic_setup()àdo_i转载 2014-12-05 13:49:19 · 2629 阅读 · 0 评论 -
[驱动注册]platform_driver_register()与platform_device_register()
[驱动注册]platform_driver_register()与platform_device_register() 设备与驱动的两种绑定方式:在设备注册时进行绑定及在驱动注册时进行绑定。 以一个USB设备为例,有两种情形:(1)先插上USB设备并挂到总线中,然后在安装USB驱动程序过程中从总线上遍历各个设备,看驱动程序是否与其相匹配,如果匹配就将两者邦转载 2015-01-11 21:55:13 · 1561 阅读 · 0 评论 -
详解Linux2.6内核中基于platform机制的驱动模型 (经典)
【摘要】本文以Linux 2.6.25 内核为例,分析了基于platform总线的驱动模型。首先介绍了Platform总线的基本概念,接着介绍了platform device和platform driver的定义和加载过程,分析了其与基类device 和driver的派生关系及在此过程中面向对象的设计思想。最后以ARM S3C2440中I2C控制器为例介绍了基于platform总线的驱动开发流程。转载 2015-01-11 22:08:38 · 1430 阅读 · 0 评论 -
飞思卡尔IMX6处理器的GPIO配置方式
在linux或android系统中,假如我们要配置飞思卡尔IMX6处理器的GPIO管脚,比如是GPIO_19这个管脚,那么要像这样:[cpp] view plaincopy#define MX6Q_PAD_GPIO_19__GPIO_4_5 \ (_MX6Q_PAD_GPIO_19__GPIO_4_5 | MUX_PA转载 2015-01-15 13:51:10 · 2084 阅读 · 0 评论 -
Linux加载DTS设备节点的过程(以高通8974平台为例)
DTS是Device Tree Source的缩写,用来描述设备的硬件细节。在过去的ARM Linux中,arch/arm/plat-xxx和arch/arm/mach-xxx中充斥着大量的垃圾代码,相当多数的代码只是在描述板级细节,而这些板级细节对于内核来讲,不过是垃圾,如板上的platform设备、resource、i2c_board_info、spi_board_info以及各种硬件的pla转载 2015-10-08 16:08:30 · 5138 阅读 · 0 评论 -
高通APQ8074 spi 接口配置
高通APQ8074 spi 接口配置8074 平台含有两个BLSP(BAM Low-Speed Peripheral) , 每一个BLSP含有两个QUP, 每一个QUP可以被配置为I2C, SPI, UART, UIM接口, BLSP是高通对于低速接口的一种管理方式。每个QUP是和特定的引脚相关的, 如下图所示,比如下面的引脚是属于BLSP8的, 也就是第二个BLSP的第二个QUP, 注意这些引脚转载 2015-10-08 16:07:25 · 3064 阅读 · 0 评论 -
Device Tree(二):基本概念
一、前言一些背景知识(例如:为何要引入Device Tree,这个机制是用来解决什么问题的)请参考引入Device Tree的原因,本文主要是介绍Device Tree的基础概念。简单的说,如果要使用Device Tree,首先用户要了解自己的硬件配置和系统运行参数,并把这些信息组织成Device Tree source file。通过DTC(Device Tree Compiler),可以将这些转载 2015-10-09 15:31:20 · 996 阅读 · 0 评论 -
Device Tree(三):代码分析
一、前言Device Tree总共有三篇,分别是:1、为何要引入Device Tree,这个机制是用来解决什么问题的?(请参考引入Device Tree的原因)2、Device Tree的基础概念(请参考DT基础概念)3、ARM linux中和Device Tree相关的代码分析(这是本文的主题)本文主要内容是:以Device Tree相关的数据流分析为索引,对ARM linux kernel的代转载 2015-10-09 15:32:35 · 1107 阅读 · 0 评论 -
Device Tree(一):背景介绍
一、前言作为一个多年耕耘在linux 2.6.23内核的开发者,各个不同项目中各种不同周边外设驱动的开发以及各种琐碎的、扯皮的俗务占据了大部分的时间。当有机会下载3.14的内核并准备学习的时候,突然发现linux kernel对于我似乎变得非常的陌生了,各种新的机制,各种framework、各种新的概念让我感到阅读内核代码变得举步维艰。 还好,剖析内核的热情还在,剩下的就交给时间的。首先进入视线的转载 2015-10-09 15:30:19 · 920 阅读 · 0 评论 -
linux内核中的GPIO系统之(2):pin control subsystem
一、前言在linux2.6内核上工作的嵌入式软件工程师在pin control上都会遇到这样的状况:(1)启动一个新的项目后,需要根据硬件平台的设定进行pin control相关的编码。例如:在bootloader中建立一个大的table,描述各个引脚的配置和缺省状态。此外,由于SOC的引脚是可以复用的,因此在各个具体的driver中,也可能会对引脚进行的配置。这些工作都是比较繁琐的工作,需要极大转载 2015-10-28 11:39:12 · 4497 阅读 · 0 评论 -
高通平台点亮LCD个人总结
点击打开链接高通平台LCD模块大致分为两部分:KERNEL和LK。在进行点屏之前,应该认真查看LCD原理图,弄清楚LCD亮屏需要满足的条件和上电时序,同时可以跟LCD IC原厂拿到初始化代码。 首先点亮KERNEL。 在点亮KERNEL之前,先进入bootable/bootloader/lk/target/msm****/rules.mk文件,将DEFINES += DISPL转载 2015-11-26 09:59:55 · 4218 阅读 · 0 评论 -
msm8916 lcd 相关调试点指导
主要代码:LINUX\android\kernel\arch\arm\boot\dts\qcom\dsi-panel-trust-hx8379c-fwvga-video.dtsiLINUX\android\kernel\arch\arm\boot\dts\qcom\msm8916-qrd-skum.dtsi LINUX/android/bootable/bootloader/lk/dev/pmic转载 2015-11-26 10:09:57 · 5856 阅读 · 0 评论 -
Android4.0.3 USB OTG底层插入上报过程分析(1)
下面的两个宏是PM8058的MMP11(R15),MMP12(P15)管脚。#define EXT_CHG_VALID_MPP 10#define EXT_CHG_VALID_MPP_2 11static struct pm8xxx_mpp_init_info isl_mpp[] = { PM8058_MPP_INIT(EXT_CHG_VALID_MPP, D_INPUT, P转载 2016-01-16 14:41:37 · 3464 阅读 · 0 评论 -
针对高通BMS的研究 高通电量计
点击打开链接高通8064 8974 8926等pm芯片都集成了电量计,估计后续芯片都会一直存在,现在许多项目UI状态栏电池都有百分比显示,所以需要深入分析BMS有助于解决电量方面的BUG。一: SOC(荷电状态)计算方法名词:FCC Full-charge capacity UC Remaining capacityCC Coulumb counter UUC转载 2015-12-18 19:42:02 · 5668 阅读 · 0 评论 -
USB port 如何识别不同的Charger类型
基于Qualcom 8960/8921平台一,软件分析1. USB charger types & Power supply typesUSB_INVALID_CHARGER Invalid USB charger.USB_SDP_CHARGER Standard downstream port. Refers to a do转载 2015-12-21 18:06:13 · 5178 阅读 · 0 评论 -
sd 卡驱动--基于高通平台
点击打开链接内容来自以下博客:http://blog.csdn.net/qianjin0703/article/details/5918041 Linux设备驱动子系统第二弹 - SD卡 (有介绍SD卡硬件)http://blog.csdn.net/wavemcu/article/details/7366852 linux2.6内核SD Card Driver详细解析之一http://bl转载 2016-01-12 18:59:19 · 4698 阅读 · 3 评论 -
ARM Linux内核Input输入子系统浅解
--以触摸屏驱动为例第一章、了解linux input子系统 Linux输入设备总类繁杂,常见的包括有按键、键盘、触摸屏、鼠标、摇杆等等,他们本身就是字符设备,而linux内核将这些设备的共同性抽象出来,简化驱动开发建立了一个input子系统。子系统共分为三层,如图1所示。图1 input输入子系统 驱动层和硬件相关,直接捕捉和获取硬件设备的数据信息等(包括触摸屏被按下、转载 2016-03-07 11:38:25 · 1974 阅读 · 0 评论 -
高通平台手机开发之LCD
4.1. LCD 参考文档: 1) 80-NA157-174_E_DSI_Programing_Guide_B-Family_Android_Devices.pdf2) 80-NN766-1_A_Linux_Android_Display_Driver_Porting_Guide.pdf3) 80-NH713-1_F_DSI_Timing_Parameters.xlsmLCD调试主要有三个任务:转载 2016-03-24 15:34:36 · 5266 阅读 · 1 评论 -
mipi 调试经验
以下是最近几个月在调试 MIPI DSI / CSI 的一些经验总结,因为协议有专门的文档,所以这里就记录一些常用知识点:一、D-PHY1、传输模式LP(Low-Power) 模式:用于传输控制信号,最高速率 10 MHzHS(High-Speed)模式:用于高速传输数据,速率范围 [80 Mbps, 1Gbps] per Lane传输的最小单元为 1 个字节,采用小端的方式及 LSB first转载 2016-03-24 16:03:02 · 1936 阅读 · 0 评论 -
高通平台手机开发之LCD
4.1. LCD 参考文档: 1) 80-NA157-174_E_DSI_Programing_Guide_B-Family_Android_Devices.pdf2) 80-NN766-1_A_Linux_Android_Display_Driver_Porting_Guide.pdf3) 80-NH713-1_F_DSI_Timing_Parameters.xlsmLCD调试主要有三个任务:转载 2016-03-28 17:43:44 · 2194 阅读 · 0 评论 -
android 电容屏(一):电容屏基本原理篇
关键词:android 电容屏 tp ITO 平台信息:内核:linux2.6/linux3.0系统:android/android4.0 平台:S5PV310(samsung exynos 4210) 作者:xubin341719(欢迎转载,请注明作者)android 电容屏(一):电容屏基本原理篇android 电容屏(二):驱动调试之基本概念篇android 电容屏(三):驱动调试之驱动转载 2016-04-13 14:34:49 · 1702 阅读 · 0 评论 -
android 电容屏(二):驱动调试之基本概念篇
关键词:android 电容屏 tp 工作队列 中断 多点触摸协议平台信息:内核:linux2.6/linux3.0系统:android/android4.0 平台:S5PV310(samsung exynos 4210) 作者:xubin341719(欢迎转载,请注明作者)参考网站:http://edsionte.com/techblog/archives/1582这部分参考别人的多一点and转载 2016-04-13 14:55:00 · 2044 阅读 · 0 评论 -
android 电容屏(三):驱动调试之驱动程序分析篇
关键词:android 电容屏 tp 工作队列 中断 坐点计算 电容屏主要参数平台信息:内核:linux2.6/linux3.0系统:android/android4.0 平台:S5PV310(samsung exynos 4210) 作者:xubin341719(欢迎转载,请注明作者)android 电容屏(一):电容屏基本原理篇android 电容屏(二):驱动调试之基本概念篇androi转载 2016-04-13 17:57:20 · 3004 阅读 · 0 评论 -
设备驱动--中断开关执行的匹配
近期项目生产过程中出现概率为万分之几异常,此中异常实在是折磨人啊!连续几天的熬夜复现分析,总算是找到异常原因;为加强自己对问题的认知特编辑此文对问题做进一步梳理。 1 问题现象 开机偶见TP失效;2 问题分析 2.1 先后对测量TP各路信号均正常; 2.2 通过 cat /proc/interrupts 查看开机过程中TP中断有成功注册; 2.3 因为问题转载 2016-04-15 17:59:21 · 1959 阅读 · 0 评论 -
input驱动12种事件类型Event types的含义
linux2.6 input subsystem中部分相关结构体的分析 最近在做linux2.6的键盘驱动程序的工作,接触到了input subsystem这一概念,现把我对其中相关结构体的理解写出来。如果我的理解有错误,希望大家指正,谢谢! 1.input_dev说明:输入子系统(input subsystem)的驱动层的核心结构。 头文件:include/linux/input.h成员说转载 2016-04-16 11:08:15 · 5718 阅读 · 0 评论 -
driver: Linux设备模型之input子系统详解
本节从整体上讲解了输入子系统的框架结构。有助于读者从整体上认识linux的输入子系统。在陷入代码分析的过程中,通过本节的知识能够找准方向,明白原理。本节重点: 输入子系统的框架结构 各层对应内核中的文件位置 输入子系统的事件处理机制 输入子系统的驱动层基本操作流程 输入子系统的驱动层常用函数本节难点:转载 2016-04-16 11:39:23 · 1828 阅读 · 0 评论 -
Linux Android 多点触摸协议 原文出自【比特网】,转载请保留原文链接:http://soft.chinabyte.com/os/71/12306571.shtml
为了使用功能强大的多点触控设备,就需要一种方案去上报用户层所需的详细的手指触摸数据。这个文档所描述的多点触控协议可以让内核驱动程序向用户层上报任意多指的数据信息。 使用说明 单点触摸信息是以ABS承载并按一定顺序发送,如BTN_TOUCH、ABS_X、ABS_Y、SYNC。而多点触摸信息则是以ABS_MT承载并按一定顺序发送,如ABS_MT_POSITION_X、ABS_MT_POSITION转载 2016-04-16 16:07:24 · 3351 阅读 · 0 评论 -
linux驱动中printk的使用注意事项
今天在按键驱动中增加printk(KERN_INFO "gpio_keys_gpio_isr()\n");在驱动加载阶段可以输出调试信息,但驱动加载起来后的信息,在串口端看不到输出信息在kernel//* We show everything that is MORE important than this.. */#define MINIMUM_CONSOLE_LOGLEVEL 1 /* Min原创 2016-04-19 14:31:27 · 3059 阅读 · 0 评论