驱动开发
pengliang528
这个作者很懒,什么都没留下…
展开
-
GPIO接口解析
GPIO----“通用目的输入/输出端口”----是一个灵活的软件控制的数字信号。许多种类的芯片都会提供,嵌入式linux开发者和硬件定制者会对此比较熟悉。每个GPIO提供一位与特定的管脚(或是“球”,BGA(Ball Grid Array)封装下)相连。单板电路图会显示外部硬件与GPIOs的连接关系。GPIO驱动可写成通用的,便于单板setup代码可以将这些管脚配置数据传递给驱动。转载 2016-10-24 21:49:18 · 1531 阅读 · 0 评论 -
linux驱动说开去(三)--模块的编译
在linux驱动开发(一)--示例中我们将hello模块编译为hello.ko是直接采用Makefile来编译,那么如何修改为linux内核统一的风格呢,接下来将做相关介绍关键点: 1.在menuconfig中添加子项目(Kconfig) 2.在Makefile中添加子项目的编译(Makefile)一.menuconfig菜单添加子项目 Kconfig背景知识:Kconfig总结...原创 2018-02-22 18:06:03 · 332 阅读 · 0 评论 -
linux驱动说开去(四)--程序执行
概述:我们查阅大量资料试图寻找程序被执行过程的说明,发现基本上围绕着预处理、编译、汇编、链接(分别使用预处理器、编译器、汇编器、链接器,这四个程序构成了编译系统)四个步骤,将其翻译成可执行目标程序hello这样一个过程,究竟hello可执行程序是如何被运行的我们依旧是一头雾水,究其原因上述只是一个浅显的概念,那从操作系统层面来讲具体又是如何实现的呢?接下来我们将给出答案.预处理、编译、汇编、链接流...原创 2018-02-23 11:19:22 · 168 阅读 · 0 评论 -
linux驱动说开去(五)--驱动模块的加载-insmod
概述: linux采用整体时的内核结构,一般不支持动态增加新功能,为此linux提供了一套叫做模块的全新机制,可以根据需要在不重新编译连接内核的情况下将新的安装模块动态的插入/移除运行态的内核,使得内核映像保持最小化,从而达到灵活性及扩展性. 模块化并不仅局限于驱动模块同时也支持文件系统,但常见与驱动或与驱动紧密联系的模块,内核提供了4个系统调用以支持动态安装卸载:create_mod...原创 2018-02-23 23:35:48 · 474 阅读 · 0 评论 -
Linux I2C总线详解
概述: 1.I2C概念 2.I2C硬件结构图 3.I2C总线初始化 4.I2C控制器device 节点添加及driver注册 5.I2C设备节点添加及driver注册 5.adapter设备及驱动添加要点及绑定过程 6.client设备及驱动添加要点及绑定过程 7.设备是如何使用I2C通讯的一.I2C概念: I2C是philips提出的外设总线. ...原创 2018-03-12 09:13:51 · 18068 阅读 · 4 评论 -
linux设备树及设备添加
要点: 1.设备树概念:http://blog.csdn.net/smcdef/article/details/77387975 2.传统方式添加设备 方式:arm/mach/mach-s3c2410/mach-s3c2440.c 在代码里面添加设备描述符并有machine-init时调用添加 ...原创 2018-03-13 17:40:58 · 2971 阅读 · 0 评论 -
linux之UART
概述linux下设备分几种: 1.协议类:UART,I2C,SPI,NAND,LCD 2.类似内存的接口:NOR,SDRAM,网卡 针对协议类设备,那么需要满足2个要求: 1.双方约定信号的协议 2.双方满足时序的要求一.UART原理简介 通用异步收发器简称UART,即Universal Asynchronous Receiver/Transmitter...原创 2018-04-08 14:53:08 · 1069 阅读 · 0 评论 -
驱动模块分析之NANDFLASH
硬件原理:NAND FLASH是一个存储芯片引脚图 主芯片连接引脚 NAND FLASH引脚: 引脚说明: 需求分析思考: 那么:这样的操作很合理“都地址A的数据,把数据B写道地址A”问1.原理图上NAND FLASH和S3C2440之间只有数据线, 怎么传输地址?答1.在DATA0~DATA7上及传输数据,又传输地址 当ALE为高电平时传输...原创 2019-09-05 15:36:43 · 177 阅读 · 0 评论 -
裸机开发-spi
概述本节主要分析spi的工作原理,并以eeprom为例详述其操作机制spi原理spi简介SPI,是Serial Peripheral interface的缩写,即串行外围设备接口。是Motorola首先在其MC68HCXX系列处理器上定义的。SPI接口主要应用在 EEPROM,FLASH,实时时钟,AD转换器,还有数字信号处理器和数字信号解码器之间。SPI,是一种高速的,全双工,同...原创 2019-09-30 16:11:02 · 329 阅读 · 0 评论 -
linux驱动说开去(二)--模块安装、调试
关键点: 1.常用安装卸载命令 2.安装卸载涉及的常用符号: 3.常用调试手段一.安装卸载命令 1.lsmod 命令格式:lsmodshell@sc2410_box:/ $ lsmodvcodec_service 33766 0 - Live 0x00000000 2.insmod 命令格式:insmod hello.ko shell...原创 2018-02-22 13:57:27 · 244 阅读 · 0 评论 -
linux驱动说开去(一)--模块示例
本系列将以一个简单的驱动开发例子扩展讲述驱动开发各要点一、基础知识Linux 设备打开依次跨越层次:应用程序->系统调用接口->VFS层->当前设备文件系统(如字符设备)->驱动->硬件Linux设备驱动分为:字符设备、块设备和网络设备。原理图如下: 二、代码实现2.1.1驱动层代码实现创建目录/home/workplace/sc2410_android/kernel/drivers/leon_...原创 2018-02-22 12:41:04 · 323 阅读 · 0 评论 -
Linux 字符设备驱动结构(三)—— file、inode结构体及chardevs数组等相关知识解析
前面我们学习了字符设备结构体cdev Linux 字符设备驱动开发 (一)—— 字符设备驱动结构(上) 下面继续学习字符设备另外几个重要的数据结构。 先看下面这张图,这是Linux 中虚拟文件系统、一般的设备文件与设备驱动程序值间的函数调用关系; 上面这张图展现了一个应用程序调用字符设备驱动的过程, 在设备驱动程序的设计中,一般而言,会关心转载 2016-12-19 21:45:35 · 403 阅读 · 0 评论 -
BSP板载初始化之MACHINE_START->MACHINE_STOP
BSP转载 2017-03-27 22:20:41 · 291 阅读 · 0 评论 -
linux下I2C驱动架构全面分析
linux下I2C驱动架构全面分析转载 2013年12月31日 11:04:31I2C 概述 I2C是philips提出的外设总线. I2C只有两条线,一条串行数据线:SDA,一条是时钟线SCL ,使用SCL,SDA这两根信号线就实现了设备之间的数据交互,它方便了工程师的布线。 因此,I2C总线被非常广泛地应用在EEPROM,实转载 2017-10-17 16:57:21 · 6973 阅读 · 0 评论 -
Linux下的platform总线驱动(一)
Linux下的platform总线驱动(一)原创 2012年12月01日 09:22:43版权所有,转载请说明转自 http://my.csdn.net/weiqing1981127 原创作者:南京邮电大学 通信与信息系统专业 研二 魏清一.Platform设备驱动概念主要讲解平台设备驱动的模型和基本概念,同时因为驱动加载的方转载 2017-10-17 17:30:12 · 217 阅读 · 0 评论 -
Linux input子系统分析之一:软件层次
Linux input子系统分析之一:软件层次标签: input子系统tsliblinux驱动开发linux软件层次linux输入子系统2015-08-23 10:49 2808人阅读 评论(4)收藏举报分类: S5PV210(Cortex A8)(11) LINUX内核、驱动(17) 版权声明:本文为博主原创文章转载 2017-10-17 17:55:19 · 317 阅读 · 0 评论 -
linux虚拟内存管理
原文:http://blog.csdn.net/ywf861029/article/details/6114794Linux内核中,关于虚存管理的最基本的管理单元应该是struct vm_area_struct了,它描述的是一段连续的、具有相同访问属性的虚存空间,该虚存空间的大小为物理内存页面的整数倍。 下面是struct vm_area_struct结构体的定义:转载 2017-12-03 14:08:37 · 450 阅读 · 0 评论 -
linux驱动说开去(六)--驱动模块函数与内核符号表的连接
http://blog.csdn.net/trochiluses/article/details/9446955原创 2018-02-27 15:22:42 · 158 阅读 · 0 评论 -
arm 设备树的初始化
http://blog.csdn.net/liushi558/article/details/54928292本文代码均来自标准 linux kernel 3.10,可以到这里下载 https://www.kernel.org/ 以 arch/arm/mach-msm/board-dt-8960.c 为例,在该文件中的 msm_dt_init 函数的作用就是利用 dt(device tree...转载 2018-02-08 14:50:29 · 334 阅读 · 0 评论 -
linux驱动说开去(七)--驱动模块之应用层访问-mknod
概述: linux下一切皆文件,设备文件也不例外,作为文件系统中代表设备的特殊文件,和普通文件相比不需要存放数据的记录块与之联系,原因在于设备文件的目的不在于存储和读取数据而只在于为应用程序提供一条通向具体设备的访问通道,是应用程序可以和具体的设备建立连接. 基于此,我们查看内核系统调用针对两者的区别:asmlinkage long sys_open(const char * file...原创 2018-02-28 09:57:43 · 202 阅读 · 0 评论 -
linux设备树的识别加载
主要内容:1.设备树文件编译2.设备树文件加载3.设备树文件解析4.设备树上的节点如何与驱动绑定(device与driver如何调用probe)5.如挂在I2C上,则中间I2C如何插入,两者之间如何与I2C交互参考:https://wenku.baidu.com/view/0a71422cb307e87101f696bf.htmlhttp://blog.csdn.net/gzzaigcnforev...原创 2018-03-08 16:19:22 · 1508 阅读 · 0 评论 -
linux设备加载分析
要点:1.设备注册2.设备驱动注册3.设备与驱动如何绑定4.驱动如何初始化设备资源当内核版本:linux 4.6.3以led为例(leds-sunfire.c)在设备树中创建led设备节点,在内核初始化时将所有节点创建出来(内核采用先创建节点,后初始化对应驱动,有设备无驱动则设备不工作,无设备则驱动初始化不起来)当前篇幅我们只分析驱动的加载:一.内核调用sunfire_leds_init流程:在编...原创 2018-03-08 17:14:02 · 472 阅读 · 0 评论 -
linux字符设备驱动
一. 概述本章节以应用开始访问字符设备为切入点,逐步深入分析字符设备的软件层次、组成框架和交互、如何编写字符设备驱动、设备文件的创建和mdev原理,并对相关接口及涉及到的结构体做一个简要介绍,展示字符设备驱动的全面详情二.应用示例int main(void) { char buf[10] = {0,}; int fd = open("/dev/led",O_RDWR...原创 2018-03-15 15:28:03 · 202 阅读 · 0 评论 -
逻辑开发之LCD
概述本节主要阐述LCD的工作原理、控制器特性及使用方法以掌握LCD驱动的编写工作原理常见LCD主要分为4类:TN(扭曲项列型)、STN(超扭曲项列型)、DSTN(双层超扭曲项列型)、TFT(薄膜晶体管型)。其中TN、STN、DSTN基本原理相同,只是晶体的扭曲角度不同;TFT则完全不同工作原理:http://www.szjunxian.com/Article/yjpztnstnt....原创 2019-10-09 23:57:17 · 481 阅读 · 0 评论