自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Gick

“只是因为三轮车好学,你就要一辈子骑三轮车吗?” – Douglas Englebart

  • 博客(324)
  • 资源 (2)
  • 论坛 (1)
  • 收藏
  • 关注

原创 19年linux驱动笔记

1.管道(pipe)是一种用来连接两个进程的虚拟文件,当进程A欲向进程B发送数据时,它把管道文件视作输出文件,向其中写数据,进程B则可将管道文件视作输入文件,从中读数据。于是,进程A和B之间的通信很像普通文件的读写。2.MINIX中进程的存储空间分为三部分:正文段(即代码段),数据段(即变量),和堆栈段。3.MINIX中一个简单的系统调用getpid返回调用进程的进程标识号,注意在调用fo...

2019-01-31 16:35:22 395

转载 Device Tree

https://blog.csdn.net/qq_35065875/category_8499153.html

2020-10-19 19:51:43 63

转载 关于platform_device一些讲解

从2.6版本开始引入了platform这个概念,在开发底层驱动程序时,首先要确认的就是设备的资源信息,例如设备的地址,在2.6内核中将每个设备的资源用结构platform_device来描述,该结构体定义在kernel\include\linux\platform_device.h中:struct platform_device { const char * name; u32 id; struct device dev; u32 num_resources; struct resou

2020-10-15 11:18:41 433

原创 如何修改dmesg log buffer size

需要修改 Linux 内核源码中的一个控制 log buffer size 的宏:CONFIG_LOG_BUF_SHIFT,buffer size 是 2 ^ shift,加大这个就可以。一、配置$ make menuconfigGeneral setup(18)Kernel log buffer size (16 => 64KB,17 => 128KB)二、源码kernel/printk.c#define __LOG_BUF_LEN (1 << CONFI

2020-09-08 18:57:07 307

转载 Linux input子系统详解

一:前言最近在研究android的sensor driver,主要是E-compass,其中用到了Linux input子系统.在网上也看了很多这方面的资料,感觉还是这篇分析的比较细致透彻,因此转载一下以便自己学习,同时和大家分享!(这篇博客主要是以键盘驱动为例的,不过讲解的是Linux Input Subsystem,可以仔细的研究一下!)键盘驱动将检测到的所有按键都上报给了input子系统。Input子系统是所有I/O设备驱动的中间层,为上层提供了一个统一的界面。例如,在终 端系统中,我们不

2020-05-29 13:37:59 186

原创 Linux fuser命令用法

fuser命令是一个非常聪明的unix实用程序,用于查找哪个进程正在使用文件,目录或套接字。它还提供有关拥有进程和访问类型的用户的信息。 fuser工具显示使用指定文件或文件系统的每个进程的进程标识(PID)。fuser用法如下:如下修改/sys/power/state,显示资源被占用:则使用fuser查看占用的进程如下:...

2020-03-27 11:27:10 234

原创 Linux驱动中delayed workqueue用法

在驱动中,有时不能使用中断(这种情况很少遇到), 此时delayed_workqueue就可以发挥其巨大的功效了。也可以用其它同类的内核API实现:如timer。delayed_workqueue的使用过程如下: --> 定义workqueue: struct workqueue_struct *test_workqueue;...

2020-03-12 17:24:15 440

原创 USB学习之一:USB总线驱动程序

USB总线驱动程序的作用1. 识别USB设备1.1 分配地址1.2 并告诉USB设备(set address)1.3 发出命令获取描述符描述符的信息可以在include\linux\usb\Ch9.h看到2. 查找并安装对应的设备驱动程序3. 提供USB读写函数将一个USB设备接到开发板上,看输出信息:usb 1-1: new full speed USB device ...

2020-03-12 16:24:12 219

原创 高通平台ADC开发-AT+QTEMP

1.高通平台AP内部没有集成ADC电路,使用的是PMU内部的ADC,通过PMU的GPIO或者AMUX采集接口,AT+QADC命令采集电压信息,AT+QTEMP命令将采集的电压信息转换为温度信息,信息通过spmi总线发送给AP处理。sdx55平台使用的PMU型号为PMX55,内部集成的ADC channel信息如下:PMX55 ADC功能图:ADC channel定义在qcom,sp...

2019-12-26 10:51:25 1262

转载 register_chrdev_region()、register_chrdev()、 alloc_chrdev_region()函数的区别

https://blog.csdn.net/welbell_uplooking/article/details/83654312

2019-11-17 15:25:36 105

原创 Linux驱动加载后kernel panic的oops信息分析

kernel panic表示Linuxkernel走到了一个不知道该怎么走下一步的状况,一旦到这个情况,kernel就尽可能把它此时能获取的全部信息都打印出来,至于能打印出多少信息。首先看一下出错的kernel panic 现象,下面是一个kernel panic的出错log:如上崩溃信息,可知发生崩溃的函数为proslic_api_char_dev_init函数,偏移为0xf4的位置...

2019-11-14 09:57:18 330

转载 class_create() 、device_create()详解

在刚开始写Linux设备驱动程序的时候,很多时候都是利用mknod命令手动创建设备节点,实际上Linux内核为我们提供了一组函数,可以用来在模块加载的时候自动在/dev目录下创建相应设备节点,并在卸载模块时删除该节点,当然前提条件是用户空间移植了udev。内核中定义了struct class结构体,顾名思义,一个struct class结构体类型变量对应一个类,内核同时提供了class_cre...

2019-11-07 20:02:11 551

转载 udev 和 mdev 总结

关于udev和mdev之间的区别与联系我发现自己现在还没有把它完整的给区分开来和联系起来.设备文件系统有devfs,mdev,udevmdev是udev的简化版本,是busybox中所带的程序,最适合用在嵌入式系统,而udev一般用在PC上的linux中,相对mdev来说要复杂些,devfs是2.4内核引入的,而在2.6内核中却被udev所替代,他们有着共同的优点,只是de...

2019-11-07 19:41:30 194

转载 linux内核sysfs详解

https://blog.csdn.net/skyflying2012/article/details/11783847

2019-11-03 14:50:34 126

原创 platform_driver_register( )过程追踪

以下代码源于linux3.1.9。platform_driver_register( ) 是内核中非常著名的函数 。platform_driver_register( )负责注册平台驱动程序,如果在内核中找到了使用驱动程序的设备,调用probe( )。刨去参数检查、错误处理,platform_driver_register的主要过程如下:。。。{ 。。。 retur...

2019-09-28 14:59:53 2033

原创 Linux kernel debug技巧----开启DEBUG选项

kernel的source code中有很多使用pr_debug/dev_dbg输出的日志信息(例如device tree解析的代码,drivers/of/fdt.c)。默认情况下,kernel不会将这些日志输出到控制台上,比如dev_dbg定义如下:#if defined(CONFIG_DYNAMIC_DEBUG)#define dev_dbg(dev, format, ...) ...

2019-09-25 20:30:47 4886 2

转载 Linux 下C语言获取文件大小

Linux 下C语言获取文件大小C语言是一种比较底层的语言,有时在其他语言中很容易操作的事情,在c语言中就比较麻烦,例如获取一个文件的大小。Java中File类有个length函数,Python中os.path包中有个getsize函数,C语言中却没有直接对应的函数获取文件大小。 目前,网上有一种流传很广的方法,读取文件到内存,然后跳转到文件末尾,查看跳转的长度。代码如下:...

2019-09-18 11:18:49 1484

转载 perl子程序详解

定义子程序:使用关键字sub,例如sub marine{$n+=1;print "Hello,sailor number $n!\n";}子程序可以定义在程序的任意位置,如果定义了两个重名的子程序,后面的会覆盖掉前面的可以在子程序中使用任何全局变量调用子程序:可以在任意表达式中使用子程序名(前面加上&)来调用,如&mari...

2019-09-11 11:38:34 173

转载 用户层和内核交互小方法

proc_create的使用方法proc文件系统是个有用的东东。创建一个proc虚拟文件,应用层通过读写该文件,即可实现与内核的交互。proc虚拟文件是如何创建的呢?先看看比较简单的,创建proc文件夹。调用以下函数,即可实现proc文件夹的创建:struct proc_dir_entry *proc_mkdir(const char *name, struct proc_dir_...

2019-09-11 09:37:45 164

原创 高通平台电源管理regulator介绍

1. 前期参考资料文档链接: 1).https://blog.csdn.net/longwang155069/article/details/53129378 2).https://blog.csdn.net/longwang155069/article/details/531614682. 高通sdx20平台上电后check regulator如下,一...

2019-08-21 10:23:30 1546

转载 linux内核kallsyms机制分析

一、前言 Linux内核是一个整体结构,而模块是插入到内核中的插件。尽管内核不是一个可安装模块,但为了方便起见,Linux把内核也看作一个模块。那么模块与模块之间如何进行交互呢,一种常用的方法就是共享变量和函数。但并不是模块中的每个变量和函数都能被共享,内核只把各个模块中主要的变量和函数放在一个特定的区段,这些变量和函数就统称为符号。 因此,内核也有一个module结构,叫做kernel...

2019-08-18 17:02:02 430

转载 I2C总线时序以及ACK和NACK(NAK)

额外资料:https://www.jianshu.com/p/ded5a26bf3aa关于i2c的响应问题:对于每一个接收设备(从设备,slaver),当它被寻址后,都要求在接收到每一个字节后产生一个响应。因此,the master device 必须产生一个额外的时钟脉冲(第九个脉冲)用以和这个响应位相关联。在这个脉冲期间,发出响应的从设备必须将SDA拉低并在时钟脉冲的高电平期间保持住。...

2019-08-17 14:13:58 2261

转载 内核调试 /proc/kmsg 和 dmesg

dmesg 打印内核启动过程的所有信息,/proc/kmsg也是打印内核的信息, 但是与dmesg 有不同, 第一次执行/proc/kmsg 打印到目前位置的所有内核信息,再次执行/proc/kmsg,不打印打印过了的信息,打印第一次执行之后的信息,下面举个例子:第一次执行dmesg打印:ABC第一次执行/proc/kmsg打印:ABC第二次执行dmes...

2019-08-09 14:54:53 1062

原创 高通uart调试总结

配置驱动选项1.1 首先通过原理图确定其串口号,比如UART1、UART3_HS,同时查看该串口引脚是否有复用功能,比如用作SIM卡引脚。如果有复用,需要在设备树配置中取消复用功能的选项,然后选中串口功能,高通平台设备树路径为:kernel\msm-xxx\arch\arm\boot\dts\qcom或者kernel\msm-xxx\arch\arm64\boot\dts\qcom,这个路径视...

2019-07-09 16:27:53 3981

原创 STM32笔记

1.51单片机的供电电压为5V,STM32的供电电压一般为3.3V2.总线是指一个主设备下面挂接多个从设备,通过一条通信线进行通信。比如SPI总线、IIC总线。3.不同通信协议的UART:4.spi总线5.IIC驱动&应用6.晶体管(三极管)的作用:开关作用、放大作用。三级管是电流控制器件,场效应管是电压控制器件。7.发光二极管的正向导通电压为0.7...

2019-07-01 23:31:39 137

原创 平台设备驱动框架二

从Linux 2.6起引入了一套新的驱动管理和注册机制:Platform_device和Platform_driver。Linux中大部分的设备驱动,都可以使用这套机制, 设备用Platform_device表示,驱动用Platform_driver进行注册。通过bus(实质是一个链表)的.match来匹配,匹配上再调用drive中的probe函数:Linux platform drive...

2019-06-30 15:40:59 145

原创 Linux电源管理-Linux regulator framework

1.kernel中有关regulator framework的介绍写的相当好(Documentation\power\regulator\*),先看官方文档。2.窝窝科技regulator介绍:http://www.wowotech.net/pm_subsystem/regulator_framework_overview.html...

2019-06-28 16:37:29 357

转载 从windows到linux的换行转换工具dos2unix

同学们也许知道,windows中的文本文件的换行符是"\r\n",而linux中是"\n"。由于换行符的不同,所以有的时候会发生一些莫名其妙的状况。至于具体什么状况我就不举栗子了,场景要说起来比较多。反正具体的情况是酱婶的:你在windows下写了一个文本文件:拷贝到linux下之后,用cat -v afile.txt查看文件,结果变成了酱紫:^M什么鬼??结果也许会演变成...

2019-06-20 08:57:39 512

原创 led驱动程序框架

//led_app.c#include <stdio.h>#include <fcntl.h>#include <unistd.h>#include <stdlib.h>#include <sys/ioctl.h>#define LED_MAGIC 'L'#define LED_ON _IOW(LED_MAGIC, 0...

2019-06-16 16:05:53 418

转载 设备树详解

设备树详解:https://blog.csdn.net/qq_28992301/article/details/53321610U-BOOT之寻找dtb位置:https://blog.csdn.net/qq_28992301/article/details/51873201设备树详解2:https://blog.csdn.net/woshidahuaidan2011/article/det...

2019-05-14 21:15:30 235

转载 Virtual Box内虚拟机的硬盘扩容方式

https://blog.csdn.net/orange_612/article/details/79597905

2019-04-23 13:31:04 234

转载 gpio_tlmm_config()

http://www.voidcn.com/article/p-fndehkgz-wk.html先来看一下这个函数的原型:void gpio_tlmm_config(uint32_t gpio, uint8_t func, uint8_t dir, uint8_t pull, uint8_t drvstr, uint32_t enab...

2019-04-20 14:02:42 1266

转载 /proc/interrupts

cat /proc/interrupts读取到的内容从左到右,分别为:1、逻辑中断号,2、中断在各CPU发生的次数,3、中断所属设备类名称,4、硬件中断号,5、中断处理函数。如下图:代码实现分析如下红色字体1~ 5 .489 int show_interrupts(struct seq_file *p, void *v)490 {491 static in...

2019-04-03 10:03:42 1289

原创 linux驱动开发--中断:按键中断

https://blog.csdn.net/waldmer/article/details/19189023韦东山源码#include <linux/module.h>#include <linux/kernel.h>#include <linux/fs.h>#include <linux/init.h>#include &lt...

2019-04-02 23:00:06 161

转载 class_create(),device_create自动创建设备文件结点

从linux 内核2.6的某个版本之后,devfs不复存在,udev成为devfs的替代。相比devfs,udev有很多优势,在此就不罗嗦了,提醒一 点,udev是应用层的东东,不要试图在内核的配置选项里找到它;加入对udev的支持很简单,以作者所写的一个字符设备驱动为例,在驱动初始化的代码里调用class_create为该设备创建一个class,再为每个设备调用 class_device_cre...

2019-04-02 22:13:40 146

转载 linux spi驱动开发学习-----spidev.c和spi test app

http://www.cnblogs.com/sankye/p/3955630.html

2019-03-28 17:19:01 606

转载 Linux ALSA声卡驱动之一:ALSA架构简介

声明:本博内容均由http://blog.csdn.net/droidphone原创,转载请注明出处,谢谢!一.概述ALSA是Advanced Linux Sound Architecture 的缩写,目前已经成为了linux的主流音频体系结构,想了解更多的关于ALSA的这一开源项目的信息和知识,请查看以下网址:http://www.alsa-project.org/。...

2019-03-27 19:22:23 534 2

转载 linux ioctl()详解

https://blog.csdn.net/coolwriter/article/details/78242256

2019-03-27 10:33:19 172

原创 关于ioctl,unlocked_ioctl和compat_ioctl执行的顺序

关于ioctl,unlocked_ioctl和compat_ioctl执行的顺序对于ioctl操作,优先执行f_op->unlocked_ioctl,如果没有unlocked_ioctl,那么执行f_op->ioctlsys_ioctl==> vfs_ioctl==> file_ioctl==> do_ioctlstatic long do_ioctl(s...

2019-03-26 18:49:04 265

转载 linux如何通过ioctl调用驱动的

ioctl作用:应用层的ioctl函数传入的cmd和arg参数会直接传入驱动层的ioctl接口,在对应驱动文件里会对相应的命令进行操作对于传递的ioctl命令有一定的规范,具体可以参考:/include/asm/ioctl.h,/Documentation/ioctl-number.txt 这两个文件应用层和驱动程序联系如下:最终ioctl是通过系统调用sys_ioctl软中断陷...

2019-03-26 16:40:42 1713

SourceInsight仿Sublime配置文件下载

文件是SourceInsight的配置文件,在SI软件项目栏选择Options->Load Configuration后选择本文件即可将打开的文件风格和Sublime一样

2018-05-05

SourceInsight4.0使用手册英文版

SourceInsight4.0使用手册英文版。全文400多页,详细介绍了SI的使用方法,英文版通俗易懂,现在开始你的英文学习之路吧!

2018-05-05

Gick的留言板

发表于 2020-01-02 最后回复 2020-05-25

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人 TA的粉丝

提示
确定要删除当前文章?
取消 删除