驱动相关
木木总裁
车载BSP
手机BSP
展开
-
Poll 机制的简单分析
Poll 机制的简单分析用户空间应用程序向设备驱动请求数据时,一般有以下几种方式:1.不断查询,条件不满足的情况下就是死循环,这种情况下非常耗费CPU。2.休眠唤醒的方式,如果条件不满足,应用程序则一直休眠下去。3.poll机制,如果条件不满足,休眠指定时间,休眠时间内条件满足唤醒进程;如果条件一直不满足,达到指定超时时间后,进程自动唤醒在来判断条件是否满足。4,异步...原创 2019-06-19 18:30:40 · 364 阅读 · 0 评论 -
移动设备中的ALSA(ASoC)
网上的介绍都是互相抄抄 这边自己整理了一下。ALSA是Advanced Linux Sound Architecture 的缩写,目前已经成为了linux的主流音频体系结构,它提供了linux操作系统的音频与MIDI功能,想了解更多的关于ALSA的这一开源项目的信息和知识,请查看以下网址:http://www.alsa-project.org/。 在内核设备驱动层,ALSA提供了al...原创 2019-06-27 17:07:28 · 379 阅读 · 0 评论 -
【平台设备驱动】中module_platform_driver的定义和使用
该函数实际是一个宏,它在include/linux/platform_device.h中定义如下:[cpp]view plaincopy/*module_platform_driver()-Helpermacrofordriversthatdon'tdo *anythingspecialinmoduleinit/exit.Thiselim...原创 2019-06-27 14:25:43 · 3952 阅读 · 0 评论 -
Ubuntu18.04安装arm-linux-gcc交叉编译工具(附arm-linux-gcc 5.4.0包)
Ubuntu18.04安装arm-linux-gcc交叉编译工具(附arm-linux-gcc 5.4.0包)一、下载arm-linux-gcc 5.4.0包下载(百度云)链接:https://pan.baidu.com/s/1AeqzkboWkJDJjU9HxtXhrA 提取码:uzup二、在/usr/local目录下新建arm文件夹,并且给予最高权限后进入新建的文件目录里...转载 2019-07-02 15:21:29 · 1890 阅读 · 1 评论 -
主设备号和次设备号
主设备号和次设备号 Linux的设备管理是和文件系统紧密结合的,各种设备都以文件的形式存放在/dev目录下,称为设备文件。应用程序可以打开、关闭和读写这些设备文件,完成对设备的操作,就像操作普通的数据文件一样。为了管理这些设备,系统为设备编了号,每个设备号又分为主设备号和次设备号。主设备号用来区分不同种类的设备,而次设备号用来区分同一类型的多个设备。对于常用设备,Linux有约定...转载 2019-06-18 14:25:02 · 2078 阅读 · 0 评论 -
字符设备与块设备的区别
字符设备与块设备的区别字符设备与块设备的区别在LINUX里面,设备类型分为:字符设备、块设备以及网络设备,PCI是一种和ISA为一类的总线结构,归属于网络驱动设备~~~字符设备、块设备主要区别是:在对字符设备发出读/写请求时,实际的硬件I/O一般就紧接着发生了,而块设备则不然,它利用一块系统内存作为缓冲区,当用户进程对设备请求能满足用户的要求时,就返回请求的数据,如果不能就调...转载 2019-06-18 13:46:31 · 15682 阅读 · 0 评论 -
linux 驱动module_init()本质
linux 驱动module_init()本质--->不同驱动加载顺序对应不同的优先级阶段一:kernel-3.18\include\linux\init.h中Linux内核为不同驱动的加载顺序对应不同的优先级,定义了一些宏:#define pure_initcall(fn) __defin...转载 2019-06-17 15:15:33 · 2720 阅读 · 0 评论 -
《linux设备驱动开发详解》笔记——15 linux i2c驱动
《linux设备驱动开发详解》笔记——15 linux i2c驱动15.1 总体结构 如下图,i2c驱动分为如下几个重要模块核心层core,完成i2c总线、设备、驱动模型,对用户提供sys文件系统访问支持;为i2c内部adpter等提供注册接口。 adpter,适配器,实际就是CPU集成的IIC控制器,有cpu控制,完成i2c物理总线操作,busses文件夹里,有各个cpu...转载 2019-06-11 17:21:31 · 562 阅读 · 0 评论 -
SPI4种模式
SPI4种模式经常忘记SPI4种工作模式,学了忘了,现在记下方便以后查阅。在芯片资料上极性和相位一般表示为CPOL(Clock POLarity)和CPHA(Clock PHAse), 极性和相位组合成4种工作模式。CPOL CPHAMODE0 0 0MODE1 0 1MODE2 1 0MODE3 1 1CPOL: SPI空闲时的时钟信号电平(1:高电平, 0:低电平)CPHA...原创 2019-06-11 14:19:15 · 1904 阅读 · 0 评论 -
Linux中断申请之request_threaded_irq
在linux里,中断处理分为顶半(top half),底半(bottom half),在顶半里处理优先级比较高的事情,要求占用中断时间尽量的短,在处理完成后,就激活底半,有底半处理其余任务。底半的处理方式主要有soft_irq, tasklet, workqueue三种,他们在使用方式和适用情况上各有不同。soft_irq用在对底半执行时间要求比较紧急或者非常重要的场合,主要为一些subsy...原创 2019-06-04 17:15:00 · 1243 阅读 · 0 评论 -
Linux驱动调试中的Debugfs的使用简介
在调试linux驱动的时候,可以用debugfs来调试,debugfs类似字符设备驱动一样,甚至更简单,不需要主设备号次设备号等等,只需要实现一个file_operations,然后通过debugfs_create_file就可以在debugfs中建立一个文件结点,就像字符设备驱动那样,只需要对这个文件结点进行open就可以进行read、write、ioctl,等等操作,这些操作对应到我们在驱动里...转载 2019-06-04 14:40:00 · 2810 阅读 · 0 评论 -
ioctl与unlocked_ioctl区别
今天调一个程序调了半天,发现应用程序的ioctl的cmd参数传送到驱动程序的ioctl发生改变。而根据《linux设备驱动》这个cmd应该是不变的。因为在kernel 2.6.36 中已经完全删除了struct file_operations 中的ioctl 函数指针,取而代之的是unlocked_ioctl ,所以我怀疑二者是不是兼容的。上网查了一些资料,很多文章只是泛泛谈了一下,说在应用...转载 2019-06-04 12:44:45 · 776 阅读 · 0 评论 -
Linux异步通知 fasync
Linux异步通知 fasync我们知道,驱动程序运行在内核空间中,应用程序运行在用户空间中,两者是不能直接通信的。但在实际应用中,在设备已经准备好的时候,我们希望通知用户程序设备已经ok,用户程序可以读取了,这样应用程序就不需要一直查询该设备的状态,从而节约资源,这就是异步通知。这个过程如何实现呢?两方面的工作。1.驱动方面:1.在设备抽象的数据结构中增加一个stru...原创 2019-06-19 18:34:10 · 629 阅读 · 0 评论 -
platform_set_drvdata() platform_get_drvdata()
platform_set_drvdata 和 platform_get_drvdata驱动中常用到platform_set_drvdata 和 platform_get_drvdata这两个函数,用于保存局部变量:include/linux/platform_device.h中:static inline void *platform_get_drvdata(const s...转载 2019-06-27 19:29:13 · 629 阅读 · 0 评论