驱动开发初级
文章平均质量分 65
CSDN_Xian
这个作者很懒,什么都没留下…
展开
-
15.平台总线专题4
文章目录原创 2021-10-20 15:12:21 · 138 阅读 · 0 评论 -
14.平台总线专题3
文章目录平台总线作用和设计思想介绍平台总线中的三元素平台总线led驱动之资源的定义平台总线中driver实现的逻辑过程平台总线作用和设计思想介绍平台总线模型:为什么会有平台总线:用于平台升级:三星: 2410, 2440, 6410, s5pc100 s5pv210 4412硬件平台升级的时候,部分的模块的控制方式,基本上是类似的但是模块的地址是不一样 gpio控制逻辑: 1, 配置gpio的输入输出功能: gpxxconf 2, 给gpio的数据寄存器设置高低电平: g原创 2021-10-20 09:49:44 · 143 阅读 · 0 评论 -
13.平台总线专题2
文章目录device的构建和注册driver的构建和注册device的构建和注册device对象:设备对象,描述设备信息,包括地址,中断号,甚至其他自定义的数据struct device {struct kobject kobj; //所有对象的父类const char *init_name;// 在总线中会有一个名字,用于做匹配,在/sys/bus/mybus/devices/名字struct bus_type *bus; //指向该device对象依附于总线的对象void *pla原创 2021-10-18 15:22:28 · 106 阅读 · 0 评论 -
12.平台总线专题1
文章目录设备驱动模型的由来sysfs文件系统的介绍创建bus的代码编程设备驱动模型的由来字符设备驱动模型字符设备驱动模型中不太变化的有1,2,3,5,6;需要变化的有4.为了优化代码,可以把1,2,3,5,6和4分离出来,把动作部分(申请、映射、创建等动作)变成设备驱动对象,把静态部分(地址、中断)变成设备对象,这两部分通过总线对象串联起来。sysfs文件系统的介绍sys目录创建bus的代码编程构建自己的总线...原创 2021-10-15 10:07:15 · 120 阅读 · 0 评论 -
11.中断编程5——按键驱动之异步信号实验、中断下半部tasklet实验、中断下半部工作队列实验
文章目录异步信号通知应用程序编程异步信号通知应用程序编程异步信号通知: 当有数据到时候,驱动会发送信号(SIGIO)给应用,就可以异步去读写数据,不用主动去读写a,应用–处理信号,主要是读写数据void catch_signale(int signo){if(signo == SIGIO){printf(“we got sigal SIGIO”);// 读取数据read(fd, &event, sizeof(struct key_event));if(event.code =原创 2021-10-18 10:37:03 · 197 阅读 · 0 评论 -
10.中断编程4——按键驱动之多路复用poll实现实验
文章目录多路复用select和poll的概念poll函数的使用介绍应用程序poll的编程方式有个问题poll驱动的实现完整代码多路复用select和poll的概念多路复用的使用场景:多个设备都可能有数据到来,可以使用多路复用select、poll进行监控各个fdpoll函数的使用介绍poll的应用:1, 需要打开多个文件(多个设备)2, 利用poll来实现监控fd的读,写,出错 #include <poll.h> int poll(struct pollfd *fds,原创 2021-10-12 15:38:53 · 243 阅读 · 0 评论 -
9.中断编程3——按键驱动之阻塞和非阻塞实验
文章目录阻塞的概念和接口使用阻塞的实现——等待队列的使用非阻塞模式的实现阻塞的概念和接口使用文件io模型:1,非阻塞2,阻塞3,多路复用–select/poll4, 异步信号通知faync阻塞: 当进程在读取外部设备的资源(数据),资源没有准备好,进程就会休眠 linux应用中,大部分的函数接口都是阻塞 scanf(); read(); write(); accept();驱动中需要调用 1,将当前进程加入到等待队列头中 add_wait_queue(wait_qu原创 2021-10-10 15:12:15 · 362 阅读 · 0 评论 -
8.中断编程2——按键驱动之获取按键数据实验
文章目录实现字符设备驱动框架驱动中获取硬件数据并传递给用户的方法用户获取按键数据的方式有个问题实现字符设备驱动框架1.设定一个全局的设备对象(全局)(init函数中)2.申请主设备号3.创建设备节点文件4.硬件的初始化——地址映射或者中断申请5.实现file_operations6.释放资源(exit函数中)驱动中获取硬件数据并传递给用户的方法a,硬件如何获取数据key: 按下和抬起: 1/0读取key对应的gpio的状态,可以判断按下还是抬起 读取key对应gpio的寄原创 2021-10-09 10:56:14 · 257 阅读 · 0 评论 -
7.中断编程1——按键驱动之申请中断实验
文章目录Linux中中断的概念和中断处理机制设备树文件中定义中断号驱动代码中获取中断号码的方法Linux中中断的概念和中断处理机制设备树文件中定义中断号1,中断号–就是一个号码,需要通过一定的方式去获取到在3.14.0内核中,从设备树中获取获取中断号到方法: 1, 宏定义 IRQ_EINT(号码) 2,设备树文件中 arch/arm/boot/dts/exynos4412-fs4412.dts硬件连接: key ---- gpx1_2--- EINT10设备树文件原创 2021-10-09 09:27:17 · 224 阅读 · 0 评论 -
6.字符设备驱动(下)
文章目录驱动和应用程序的设计思想字符设备驱动编写的步骤驱动中面向对象的设计思想做出错处理驱动和应用程序的设计思想应用程序和驱动扮演的是什么角色用户态:应用程序玩策略: 怎么去做1, 一闪一闪2,10s闪一次,也可以1s闪一次3,一直亮4,跑马灯控制权是在应用程序(程序员)--------------------------------------内核态:驱动玩机制: 能做什么led:亮 和 灭字符设备驱动编写的步骤步骤:1,实现模块加载和卸载入口函数module_init(原创 2021-10-08 14:23:18 · 107 阅读 · 0 评论 -
5.字符设备驱动基础(中)
文章目录应用控制驱动的方式用户空间和内核空间的数据交互地址映射ioremap的用法控制led灯的驱动代码实现应用控制驱动的方式应用程序如何去调用文件io去控制驱动–open,read,…//char_app_test.c#include <stdio.h>#include <stdlib.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>int main原创 2021-09-26 10:42:14 · 152 阅读 · 0 评论 -
4.字符设备驱动基础(上)
文章目录字符设备驱动框架申请设备号-register_chrdev接口字符设备驱动框架作为字符设备驱动要素:1,必须有一个设备号,用在众多到设备驱动中进行区分2,用户必须知道设备驱动对应到设备节点(设备文件)linux把所有到设备都看成文件 crw-r----- 1 root root 13, 64 Mar 28 20:14 event0 crw-r----- 1 root root 13, 65 Mar 28 20:14 event1 crw-r----- 1 root root原创 2021-09-24 15:03:23 · 146 阅读 · 0 评论 -
3.驱动模块开发(下)
文章目录最简单的hello驱动代码编写驱动Makefile编写最简单的hello驱动代码编写驱动代码编写分为4个部分:1,头文件2,驱动模块装载和卸载函数入口到声明3,实现模块装载和卸载函数入口4,GPL声明当ko文件加载到内核时调用装载函数当ko驱动文件从内核中卸载时会调用卸载函数//1.头文件#include <linux/init.h>#include <linux/module.h>//2.驱动模块装载和卸载函数入口到声明module_init(he原创 2021-09-23 14:57:47 · 234 阅读 · 0 评论 -
2.驱动模块开发(上)
文章目录编写驱动ko的准备工作内核的编译方法编写驱动ko的准备工作最终目标文件是uImage一部分可以在系统启动的时候就启动,比如要在系统启动的时候让LCD亮,就把LCD的驱动写到uImage里去;但是加载的驱动越多开机速度越慢,因此我们常用ko最终目标文件是ko时,适合在系统启动后再加载驱动,比如wifi内核的编译方法...原创 2021-09-17 11:30:14 · 123 阅读 · 0 评论 -
1.设备驱动环境搭建
文章目录交叉开发模式交叉开发模式在Ubuntu中用vim编写代码,用arm-none-…-gcc编译成arm上能用的可执行文件,给arm运行后有问题再在Ubuntu中修改编译,再交给arm运行,如此称为交叉开发模式。在arm的板子上首先要有linux系统,这就要先进行系统移植...原创 2021-09-16 18:37:31 · 120 阅读 · 0 评论