专题8-I2C驱动程序设计-第5课-I2C自编设备驱动设计
摘要:1、概述 2、编程 #include <unistd.h> #include <stdio.h> #include <fcntl.h> int main() { int i, fd; char write_data[256]; char read_data[256]; //打开at24c02对应的s
阅读全文
专题8-I2C驱动程序设计-第3课-I2C子系统
摘要:1、概述 (1)I2C子系统架构(2)I2C总线驱动 2、子系统架构
阅读全文
专题8-I2C驱动程序设计-第2课-I2C裸机驱动设计
摘要:1、概述 (1)e2prom简介--通过i2c控制 (2)如何对I2C控制器初始化 ①允许中断,主要中断控制器的寄存器也要设置②设置时钟③设置引脚为串口输出,因为用到的是GPE这一组寄存器 (3)裸机初始化在第二季的代码基础上修改: (4)读写流程图 /* 写过程1.设置处理器为主设备+发送模式2.
阅读全文
专题3-串口驱动程序设计-第2课串口驱动分析-初始化
摘要:1、概述 (1)串口驱动程序结构(2)串口驱动中的重要数据结构体 用户态发生write时->VFS中的sys_write,先经过file_operation中的tty_write,这个tty_fops是在哪里注册的? 2、回溯-初始化分析 两个重要的文件:samsung.c:注册串口驱动程序s5pv
阅读全文
专题3-串口驱动程序设计-第1课tty驱动架构
摘要:1、tty概念解析 在linux中,/dev/目录下有很多设备。tty0 tty1 console,以及/dev/pts目录下。Linux是如何管理这些终端串口的呢。终端是一种字符设备,通常用tty简称各种类型的终端设备。 串口终端:/dev/ttyS串口终端是使用计算机串口连接的终端设备。Linu
阅读全文
专题2-总线设备驱动模型-第2课平台总线设备驱动设计
摘要:1、概述 (1)平台总线概述 linux2.6内核引入的虚拟总线,主要是为了统一管理所有的设备和驱动,提高程序可移植性。这样我们在开发设备驱动的时候就只需要:①定义平台设备:platform_device②注册平台设备③定义平台驱动:platform_driver④注册平台驱动:(2)平台设备①平台
阅读全文
专题1-按键驱动程序设计-第7课-阻塞型驱动程序设计
摘要:1、概述 (1)阻塞必要性(2)内核等待队列(3)阻塞驱动优化 2、内核等待队列 (1)定义等待队列:wait_queue_head_t my_queue(2)初始化等待队列:init_waitqueue_head(&my_queue)(3)定义+初始化等待队列DECLARE_WAIT_QUEUE_
阅读全文
专题1-按键驱动程序设计-第6课-多按键驱动优化
摘要:1、概述 (1)多按键支持(2)按键访问应用程序设计 2、编程 #include <linux/module.h> #include <linux/init.h> #include <linux/miscdevice.h> #include <linux/interrupt.h> #include
阅读全文
专题1-按键驱动程序设计-第5课-按键定时器去抖动
摘要:1、去抖动概述 按键去抖动的方式有两种:(1)硬件电路去抖动 (2)软件延时去抖动:①for循环等待n微妙;②做一个定时器延时。本节主要介绍一下如何实现软件定时器去抖动(例如:按下去10ms判断按键按下)。 2、内核定时器 linux内核使用struct time_list来描述一个定时器。stru
阅读全文
专题1-按键驱动程序设计-第4课-中断分层设计
摘要:1、概述 中断分层技术:(1)中断嵌套(2)中断分层方式(3)使用工作队列实现分层 2、中断嵌套概念 (1)慢速中断概念 (2)快速中断:不接受中断嵌套,其他中断发生会直接丢弃 3、中断分层 为什么要中断分层?中断会做两种事情的工作,一种是跟硬件有关的事情,比如说之前的检查中断发生,清除中断。第二种
阅读全文
专题1-按键驱动程序设计-第3课-按键驱动硬件操作实现
摘要:1、回顾裸机玩中断写的程序 底下这个程序主要就是把GPIO的功能设置为中断功能,这样当中断发生了就通过读该寄存器的值判断。 #define GPFCON (volatile unsigned long *)0x56000050 /* * K1,K2,K3,K4对应GPF1、GPF4、GPF2、GPF
阅读全文
专题1-按键驱动程序设计-第2课-Linux中断程序设计
摘要:1、概述 (1)裸机中断处理流程回顾(2)Linux中断处理流程分析(3)Linux中断处理程序设计 2、裸机中断回顾 (1)中断有一个统一入口:中断向量表(2)然后跳转到中断处理函数中,获取中断源编号,调用相应的处理函数asm_do_IRQ(3)中断处理函数要事先注册到表中 3、中断处理程序的设计
阅读全文
专题1-按键驱动程序设计-第1课-混杂设备驱动模型
摘要:1、混杂设备 什么是上拉电阻和下拉电阻?在GPIO端口中,一般一个芯片例如2440,会分为9组的GPIO端口。GPA GPB ...以GPA为例。GPACON用于设置端口的功能。GPADAT用于读写数据。GPAUP用于决定是否使用上拉电阻 主设备号为10的字符设备称为混杂设备。 为什么要引入混杂设备
阅读全文
专题2-总线设备驱动模型-第1课总线设备驱动模型
摘要:1、引言 待补充,总线是linux设备驱动的一种软件架构思想。 2、总线概述 总线设备驱动一共分为3步,第一是学习总线,第二是学习设备,第三步是学习驱动。 这张图不全,不管是总线还是设备还是驱动,都分为结构描述、注册、注销这三部分。 2.1第一步:总线创建-结构体-注册-注销 如何创建一条总线? b
阅读全文