![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Linux内核驱动
文章平均质量分 58
eurphan_y
这个作者很懒,什么都没留下…
展开
-
linux驱动获取系统当前时间方法
linux驱动中如果要获取系统当前的时间,可以按如下操作。头文件#include <linux/time.h>#include <linux/timex.h>#include <linux/rtc.h>代码static int get_time_str(char *output){ struct timex txc; struct rtc_time tm; /* 获取当前的UTC时间 */ do_gettimeo原创 2020-07-22 17:39:55 · 2030 阅读 · 1 评论 -
linux下eMMC读写速度测试
文章目录1.读取速度测试:2.写入性能测试:测试环境:kernel: linux-4.14.98emmc版本:eMMC5.1emmc型号:Skhynix H26M64208EMRAemmc容量:32GB测试工具:dd注意:每次测试前需使用命令清除一次缓存:echo 3 > /proc/sys/vm/drop_caches使用如下命令可查看缓存情况free -h1.读取速度测试:命令:dd if=/dev/block/mmcblk0 of=/dev/null bs=块大原创 2020-07-02 19:45:06 · 11481 阅读 · 0 评论 -
dev_info、dev_dbg、dev_err及动态调试
目前在kernel驱动代码中,都不再建议直接使用printk直接添加打印信息,而是使用dev_info,dev_dbg,dev_err之类的函数代替,虽然这些dev_xxx函数的本质还是使用printk打印的,但是相比起printk:支持打印模块信息、dev信息支持动态调试(dynamic debug)方式下面简述下这几个dev_xxx函数的基本使用规则,以及动态调试使用方式。dev_info(): 启动过程、或者模块加载过程等“通知类的”信息等,一般只会通知一次,例如probe函数;de.原创 2020-05-23 17:03:08 · 1726 阅读 · 0 评论 -
Linux下TF卡和U盘的自动挂载卸载
文章目录前言:一、U盘的自动挂载和卸载1.修改mdev.conf文件2.创建udisk_insert文件3.创建udisk_remove文件二、TF卡的自动挂载和卸载1.修改mdev.conf文件2.创建sd_insert文件3.创建sd_remove文件注意:前言: mdev是busybox自带的一个简化版的udev。作用是在系统启动和热插拔或动态加载驱动程序时,自动产生所需的节点文件...原创 2020-05-02 11:24:22 · 2412 阅读 · 0 评论 -
Linux下cpufreq子系统的使用
linux内核中,自带了cpufreq子系统用来控制cpu的频率和频率控制策略。本文我们以imx6ul为例来讲解cpufreq子系统的使用。 首先,编译内核之前,make menuconfig,进入菜单Power management and ACPI options->CPU Frequency scaling将相关的项选上可以将cpufreq子系统编译入内核,默认的调频策...原创 2020-05-02 10:20:04 · 1250 阅读 · 0 评论 -
linux驱动中并发和竞争的处理
linux驱动中并发和竞争的处理文章目录linux驱动中并发和竞争的处理前言一、原子操作1.1 原子操作介绍1.2 原子整形操作API函数1.3 原子位操作API函数二、自旋锁2.1 自旋锁介绍2.2 自旋锁API函数三、信号量3.1 信号量介绍3.2 信号量API函数四、互斥体4.1 互斥体介绍4.2 互斥体API函数前言 Linux 是一个多任务操作系统,肯定会存在多个任务共同操...原创 2020-02-16 15:52:21 · 294 阅读 · 0 评论 -
linux下imx6ul处理器用户空间操作GPIO方法
linux下imx6ul处理器用户空间操作GPIO方法一、在用户空间配置并操作GPIO的必要性 有时,为了快速方便的测试IO口,我们可以将GPIO暴露给用户空间,直接在用户空间配置并操作GPIO,前提是没有驱动使用这个GPIO。二、IMX6UL处理器GPIO编号算法GPIO计算公式: id = (m - 1) * 32 + n例如: 有gpio3....原创 2020-02-15 15:01:31 · 1193 阅读 · 0 评论 -
linux驱动中如何自动生成设备文件节点?
如何在驱动中自动生成设备文件节点?一、自动生成设备文件的必要性 在我们初学驱动开发的时候,我们的设备文件需要我们在知道设备号之后,使用命令 “mknod c|b dev_name major minor” 来生成,这样的设备文件生成方法在实际项目中显然是不行的,当驱动程序过多的时候,我们很难有精力来管理这么多的设备文件。因此,在驱动中,使得设备文件能够自动生成非常有必要。下面,将介绍在...原创 2020-02-15 13:25:52 · 2217 阅读 · 0 评论 -
platform设备驱动框架详解
platform设备驱动详解 前面我们讲了设备驱动的分离,并且引出了总线(bus)、驱动(driver)和设备(device)模型,比如 I2C、SPI、USB 等总线。但是在 SOC 中有些外设是没有总线这个概念的,但是又要使用总线、驱动和设备模型该怎么办呢?为了解决此问题,Linux 提出了 platform 这个虚拟总线,相应的就有 platform_driver 和 platfo...原创 2020-02-11 22:02:19 · 1675 阅读 · 0 评论 -
misc设备驱动
misc设备驱动 misc 的意思是混合、杂项的,因此 MISC 驱动也叫做杂项驱动,也就是当我们板子上的某些外设无法进行分类的时候就可以使用 MISC 驱动。MISC 驱动其实就是最简单的字符设备驱动,通常嵌套在 platform 总线驱动中,实现复杂的驱动,本章我们就来学习一下 MISC 驱动的编写。一、MISC 设备驱动简介 所有的 MISC 设备驱动的主设备号都为 10...原创 2020-02-11 21:00:39 · 1132 阅读 · 0 评论 -
最简单的字符设备驱动
最简单的字符设备一、字符设备简介 字符设备是 Linux 驱动中最基本的一类设备驱动,字符设备就是一个一个字节,按照字节流进行读写操作的设备,读写数据是分先后顺序的。比如我们最常见的点灯、按键、IIC、SPI、LCD 等等都是字符设备,这些设备的驱动就叫做字符设备驱动。 在 Linux 中一切皆为文件,驱动加载成功以后会在“/dev”目录下生成一个相应的文件,应用程序通过对这个...原创 2020-02-10 22:46:43 · 377 阅读 · 0 评论 -
Linux驱动模块Makefile编写
Linux驱动模块Makefile编写一、序言Linux驱动在从内核源码分离出来之后,在以模块单独编译时,需要单独的Makefile,而且PC上需要存在对应的Linux内核源码,以便Makefile指定路径供模块调用。二、Makefile源码export ARCH=armexport CROSS_COMPILE=arm-linux-gnueabihf-obj-m := xxx.o...原创 2020-01-19 21:22:50 · 1387 阅读 · 0 评论 -
linux下中断相关API介绍
linux下中断相关API介绍文章目录linux下中断相关API介绍1. Linux的中断处理程序架构2.Linux中断编程2.1.申请和释放中断2.2 使能和屏蔽中断2.3 底半部机制1. Linux的中断处理程序架构中断分层顶半部简单地读取寄存器中中断状态,并处理中断标志后就进行“登记中断”的工作。“登记中断”:将底半部放在该设备的底半部执行队列中,以加快顶半部的执行速度...原创 2019-06-18 23:46:56 · 630 阅读 · 0 评论 -
基于mini2440的Linux-3.18.108下LCD驱动移植
基于mini2440的Linux-3.18.108下LCD驱动移植其实原生的Linux-3.18.108本身就支持mini2440的LCD,只需修改一下配置信息就好了。本人使用的是统宝的3.5寸LCD(T35),所以只需要根据Linux-2.6.32下T35的配置修改一下就好了。进入Linux-3.18.108源码根目录,输入如下命令,编辑配置文件:vi arch/arm/m...原创 2018-12-21 20:39:02 · 200 阅读 · 0 评论 -
基于mini2440的Linux-3.18.108下以太网DM9000驱动的移植
基于mini2440的Linux-3.18.108下以太网DM9000驱动的移植其实Linux3.18.108自带mini2440的DM9000驱动,只不过在开发板和宿主几互ping的时候,偶尔ping不通,偶尔又可以ping通但丢包率很高,且通过NFS挂载根文件系统不成功,所以说明自带的驱动还有很明显的BUG。进入内核源码目录,输入如下命令,编辑dm9000驱动vi drivers/...原创 2018-12-21 20:42:31 · 199 阅读 · 0 评论 -
基于mini2440的Linux-3.18.108下TouchScreen驱动及ADC驱动的移植
基于mini2440的Linux-3.18.108下TouchScreen驱动及ADC驱动的移植因触摸屏和ADC驱动共用了ADC,所以本文在介绍触摸屏驱动移植之前先介绍ADC驱动的移植。1. ADC驱动移植从Linux 2.6.32中,将mini2440_adc.c和s3c24xx-adc.h 两个文件复制到Linux 3.18.108目录drivers/char中,输入命令vi dri...原创 2018-12-21 21:01:35 · 326 阅读 · 0 评论 -
Linux下驱动模块化编译与装载、卸载
Linux下驱动模块化编译与装载、卸载我们在修改完驱动后,如果每次都需要重新编译内核烧录的话,太过麻烦了,我们可以通过NFS来挂载根文件系统、然后驱动程序单独编译,再将.ko文件copy到根文件系统,动态装载上去的方式,来减少这种麻烦。具体方法我们看下面。我们将驱动源程序文件单独放到一个文件夹,然后新建一个Makefile文件,编辑输入类似于如下的内容,这是mini2440 LCD背光驱动的...原创 2018-12-21 21:03:51 · 431 阅读 · 0 评论 -
I2C设备驱动分析-基于imx6下总线驱动
I2C设备驱动分析-基于imx6下总线驱动1. 主要数据结构说明1. struct i2c_adapter(include/linux/i2c.h)struct i2c_adapter描述了MPU的I2C外设。struct i2c_adapter { struct module *owner; unsigned int class; /* classes to allow pr...原创 2019-05-25 18:12:21 · 1316 阅读 · 0 评论 -
I2C设备驱动分析-基于imx6下tsc2007电阻触摸屏驱动
I2C设备驱动分析–基于imx6下tsc2007电阻触摸屏驱动1. 主要数据结构说明1.of_device_id (include/linux/mod_devicetable.h)/* 用来和设备树中的节点匹配 */struct of_device_id { char name[32]; char type[32]; char compatible[128]; const voi...原创 2019-05-18 15:47:18 · 1850 阅读 · 0 评论 -
字符设备驱动笔记
字符设备驱动笔记一、简介在所有Linux设备驱动中,字符设备驱动最为基础,本笔记将讲解Linux字符设备驱动的结构,并解释其主要组成部分的编程方法。二、主要结构体及API函数cdev结构struct cdev { struct kobject kobj;/*内嵌的kobject对象*/ struct module *owner;/*所属模块*/ const stru...原创 2019-05-18 16:03:22 · 170 阅读 · 0 评论 -
linux驱动中串口打印调试函数汇总说明
linux串口打印调试函数汇总说明1. printkprintk和应用层下的printf的区别是在参数最前面多了一个宏,宏如下:#define KERN_EMERG KERN_SOH "0" /* system is unusable */#define KERN_ALERT KERN_SOH "1" /* action must be taken immediately */#def...原创 2019-05-27 23:25:13 · 1615 阅读 · 0 评论 -
platform总线驱动分析
platform总线驱动分析1.前言在Linux的设备模型中,关心总线、设备和驱动这3个实体,总线将设备和驱动绑定。在系统每注册一个设备的时候,会寻找与之匹配的驱动;相反的,在系统每注册一个驱动的时候,会寻找与之匹配的设备,而匹配由总线完成。一个现实的Linux设备和驱动通常都需要挂接在一种总线上,对于本身依附于PCI、USB、I2C、SPI等的设备而言,这自然不是问题,但是在嵌入式系统里...原创 2019-06-07 12:14:39 · 160 阅读 · 0 评论 -
基于mini2440的Linux-3.18.108下backlight驱动移植
本文记录的是基于Linux-3.18.108下mini2440 LCD背光驱动的移植经过测试,发现原生的Linux3.18.108并不支持mini2440的LCD背光驱动,所以需从Linux-2.6.32移植backlight驱动过来。将Linux-2.6.32源码目录中 /drivers/video/mini2440_backlight.c复制到Linux-3.18.108源码目录 **...原创 2018-12-21 20:32:24 · 256 阅读 · 0 评论