驱动开发
Linux驱动开发相关
QtHalcon
大学一直做嵌入式和音视频方向的开发,熟悉Linux,毕业转到了CV方向,现在在深圳从事计算机视觉的工作。
展开
-
1.驱动应该怎么学
1.什么是驱动?驱动就是硬件和应用软件之间的纽带1.1、理解驱动的概念驱动字面意思:驱使硬件设备行动1. 无操作系统时的设备驱动 并不是任何一个计算机系统都一定要有操作系统,在许多情况下,操作系统都不必存在。对于功能比较单一、控制并不复杂的系统,譬如 ASIC 内部、公交车的刷卡机、电冰箱、微波炉、简单的手机和小灵通等,并不需要多任务调度、文件系统、内存管理等复...原创 2018-10-01 20:26:18 · 1009 阅读 · 0 评论 -
I2C、 SPI、 USB驱动架构类比
1 I2C、 SPI、 USB驱动架构根据图12.4, Linux倾向于将主机端的驱动与外设端的驱动分离,而通过一个核心层将某种总线的协议进行抽象,外设端的驱动调用核心层API间接过渡到对主机驱动传输函数的调用。对于I2C、 SPI这类不具备热插拔能力的总线而言,一般在arch/arm/mach-xxx或者arch/arm/boot/dts中会有相应的板级描述信息,描述外设与主机的连接情况。...原创 2018-11-01 21:05:07 · 694 阅读 · 0 评论 -
USB驱动
1 概述 ######1.1 USB总线拓扑结构USB设备的连接如图19.1所示,对于每个PC来说,都有一个或者多个称为主机(Host)控制器的设备,该主机控制器和一个根集线器(Hub)作为一个整体。这个根Hub下可以接多级的Hub,每个子Hub又可以接子Hub,每个USB设备作为一个结点接在不同级别的Hub上1 USB主机控制器(Host Control)USB Hos...原创 2018-10-31 20:07:50 · 1298 阅读 · 1 评论 -
10.块设备驱动
1.正确理解块设备驱动的概念 ###############1.1、块设备和字符设备的差异 @@@@@@(1)块和字符是两种不同的访问设备的策略(2)同一个设备可以同时支持块和字符两种访问策略(3)设备本身的物理特性决定了哪一种访问策略更适合(4)块设备本身驱动层支持缓冲区,而字符设备驱动层没有缓冲(5)块设备驱动最适合存储设备1.2、块设备驱动的特点 @@@@@@@@...原创 2018-10-24 19:12:46 · 261 阅读 · 0 评论 -
并发与竞态
并发(Concurrency)指的是多个执行单元同时、并行被执行,而并发的执行单元对共享资源(硬件资源和软件上的全局变量、静态变量等)的访问则很容易导致竞态(RaceConditions)。例如,对于globalmem设备,假设一个执行单元A对其写入3000个字符“a”,而另一个执行单元B对其写入4000个“b”,第三个执行单元C读取globalmem的所有字符。如果执行单元A、 B的写操作按...原创 2018-10-31 16:03:53 · 671 阅读 · 0 评论 -
9.2 Linux I2C核心、总线与设备驱动
I2C总线仅仅使用SCL、 SDA这两根信号线就实现了设备之间的数据交互,极大地简化了对硬件资源和PCB板布线空间的占用。因此, I2C总线非常广泛地应用在EEPROM、实时钟、小型LCD等设备与CPU的接口中I2C子系统详解###########################I2C总线汇总概览(1)三根通信线:SCL、SDA、GND(2)同步、串行、电平、低速、近距离(3)总线式...原创 2018-10-21 16:20:41 · 5235 阅读 · 1 评论 -
11.网络设备驱动
网络设备驱动概述与字符设备和块设备不同,网络设备并不对应于/dev目录下的文件,应用程序最终使用套接字完成与网络设备的接口。因而在网络设备身上并不能体现出“一切都是文件”的思想。网络设备驱动4个层次:网络协议接口层 网络设备接口层 提供实际功能的设备驱动功能层 网络设备与媒介层 1 Linux网络设备驱动的结构 ##########1)网络协议接口层向网络层协...原创 2018-10-25 19:04:32 · 589 阅读 · 0 评论 -
9.触摸屏驱动移植实战
1.触摸屏驱动概览##########################1.1、常用的2种触摸屏(1)电阻触摸屏。驱动一般分2种:一种是SoC内置触摸屏控制器,一种是外置的专门触摸屏控制芯片,通过I2C接口和SoC通信。(2)电容触摸屏。驱动只有一种,外接专用的电容式触摸屏控制芯片,I2C接口和SoC通信。1.2、X210使用的触摸屏(1)X210V3使用的触摸屏:ft5x06(2)X...原创 2018-10-20 19:30:23 · 1836 阅读 · 0 评论 -
在驱动中利用中断
1.利用中断号产生中断通过执行中断函数来达到利用中断注册中断:request_irq(unsigned int irq, irq_handler_t handler, unsigned long flags, const char *name, void *dev);irq:中断号handler:中断函数flags:中断类型#define IRQF_TR...原创 2018-10-20 15:48:29 · 397 阅读 · 0 评论 -
5.linux设备驱动模型
1.linux设备驱动模型简介1.1、什么是设备驱动模型(1)类class、总线bus、设备device、驱动driver(2)kobject和对象生命周期(3)sysfs(4)udev1.2、为什么需要设备驱动模型(1)早期内核(2.4之前)没有统一的设备驱动模型,但照样可以用(2)2.6版本中正式引入设备驱动模型,目的是在设备越来越多,功耗要求等新特性要求的情况下让驱动...原创 2018-10-10 10:19:43 · 20011 阅读 · 2 评论 -
7.framebuffer驱动详解
1.framebuffer介绍1.1、什么是framebuffer(1)裸机中如何操作LCD(2)OS下操作LCD的难点(3)framebuffer帧缓冲(简称fb)是linux内核中虚拟出的一个设备(4)framebuffer向应用层提供一个统一标准接口的显示设备(5)从驱动来看,fb是一个典型的字符设备,而且创建了一个类/sys/class/graphics1.2、frameb...原创 2018-10-14 19:09:38 · 2579 阅读 · 0 评论 -
s3c的gpio控制接口
经常会遇到这四个,来进行gpio的操作gpio_request(S5PV210_GPD0(2), "GPD0"); //申请gpio,这里会对该gpio进行上锁s3c_gpio_setpull(S5PV210_GPD0(2), S3C_GPIO_PULL_UP); //设置为上升s3c_gpio_cfgpin(S5PV21...原创 2018-10-14 15:39:02 · 901 阅读 · 0 评论 -
6.misc类设备与蜂鸣器驱动
1.板载蜂鸣器驱动测试1.1、驱动部分(1)移植内核已经提供了蜂鸣器驱动源码(2)make menuconfig(3)bug排查。修改Makefile中的宏名,最终可以在系统中看到 /dev/buzzer1.2、应用部分(1)应用编写:打开文件+ioctl(2)测试实践2.misc类设备介绍由于Linux驱动倾向于分层设计,所以各个具体的设备都可以找到它归属的类型,从而套...原创 2018-10-13 19:35:48 · 456 阅读 · 0 评论 -
x210-led.c 解析
#include <linux/module.h>#include <linux/init.h>#include <linux/kernel.h>#include <linux/sched.h>#include <linux/delay.h>#include <linux/platform_device...原创 2018-10-13 16:01:47 · 342 阅读 · 0 评论 -
8.input子系统基础之按键
1.什么是input子系统1.1、何为输入设备1.2、linux中输入设备的编程模型(1)命令行界面的输入类设备应用接口(2)GUI界面带来的麻烦、不同的输入类设备也会带来麻烦(3)struct input_event1.3、input子系统简介(1)linux的input子系统解决了什么问题(2)input子系统分4个部分:应用层 + input event + input c...原创 2018-10-17 21:03:33 · 963 阅读 · 0 评论 -
4.驱动框架入门之LED
1.何谓驱动框架1.1、驱动是谁写的(1)驱动开发工程师(2)内核维护者1.2、驱动编程协作要求(1)接口标准化(2)尽量降低驱动开发者难度1.3、到底什么是驱动框架(1)内核中驱动部分维护者针对每个种类的驱动设计一套成熟的、标准的、典型的驱动实现,然后把不同厂家的同类硬件驱动中相同的部分抽出来自己实现好,再把不同部分留出接口给具体的驱动开发工程师来实现,这就叫驱动框架...原创 2018-10-05 20:11:07 · 596 阅读 · 0 评论 -
3.字符设备驱动高级
参考:https://blog.csdn.net/zqixiao_09/article/details/50839042static struct cdev my_cdev; //设备属性结构体static dev_t dev_from; //设备号static struct class *test_class = NULL;test_class =...原创 2018-10-04 15:17:35 · 799 阅读 · 0 评论 -
2.字符设备驱动基础
1.开启驱动开发之路1.1、驱动开发的准备工作(1)正常运行linux系统的开发板。要求开发板中的linux的zImage必须是自己编译的,不能是别人编译的。(2)内核源码树,其实就是一个经过了配置编译之后的内核源码。(3)nfs挂载的rootfs,主机ubuntu中必须搭建一个nfs服务器。1.2、驱动开发的步骤(1)驱动源码编写、Makefile编写、编译(2)insmo...原创 2018-10-01 20:44:26 · 912 阅读 · 1 评论 -
【Tiny4412--3】Kernel的配置、编译和移植
转载:https://blog.csdn.net/flappy_boy/article/details/73752860阅读说明该系列文章,基于的平台均为Tiny4412SDK 1312;4G EMMC; 1G DDR3带@lamar: 前缀的表示终端里面的命令 带@tiny4412: 前缀的表示开发板终端里的命令 前言此处略 准备linux源码...原创 2018-11-04 11:05:20 · 268 阅读 · 0 评论