linux字符设备驱动
颖念
看前面黑洞洞,我打迈腿来,将其看个真真切切。致电子之路
展开
-
LCD显示深究day01 mmap知识补充
Linux中的mmap的使用 原创 2016年03月26日 16:36:57 标签:原创 2020-03-31 22:21:50 · 613 阅读 · 0 评论 -
浅谈关于SRAM与DRAM的区别
从名字上看,SRAM与DRAM的区别只在于一个是静态一个是动态。由于SRAM不需要刷新电路就能够保存数据,所以具有静止存取数据的作用。而DRAM则需要不停地刷新电路,否则内部的数据将会消失。而且不停刷新电路的功耗是很高的,在我们的PC待机时消耗的电量有很大一部分都来自于对内存的刷新。那么为什么我们不用SRAM来作为内存呢? 首先来看一张SRAM的基本单元结构图 ...转载 2018-03-19 21:17:48 · 31338 阅读 · 1 评论 -
在中断程序里修改全局变量的童鞋注意啦~(C中的volatile作用 转载~)
一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。下面是volatile变量的几个例子: 1). 并行设备的硬件寄存器(如:状态寄存器) 2). 一个中断服务子程序中会访问到的非自动变量(Non-automatic v...转载 2018-03-19 21:39:17 · 6820 阅读 · 0 评论 -
nandflash与文件系统,oob区数据扫盲。后面还会补充实际生产烧录的心得体验,依据不同的文件系统
原创 2018-03-19 23:41:32 · 1106 阅读 · 0 评论 -
linux内核字符设备文件的自动创建
手动创建:mknod 自动创建设备文件的步骤: 1.保证根文件系统支持mdev可执行程序 mdev将来是创建设备文件的真正的人! which is mdev //查看mdev的路劲 2.保证文件系统的etc目录下有fstab文件,文件内容必须有: proc /proc proc defaults 0 0 说明:将procf...原创 2018-03-20 00:54:12 · 548 阅读 · 0 评论 -
linux设备:cdev和kobj_map
先看kobj_map相关的代码涉及到的文件<linux/kobj_map.h><drivers/base/map.c>[objc] view plain copy print?typedef struct kobject *kobj_probe_t(dev_t, intint *, voidvoid *); struct kobj_map; int kobj_map(s...转载 2018-06-21 18:34:31 · 434 阅读 · 0 评论 -
mdev详解
mdev是busybox提供的一个工具,用在嵌入式系统中,相当于简化版的udev,作用是在系统启动和热插拔或动态加载驱动程序时, 自动创建设备节点。文件系统中的/dev目录下的设备节点都是由mdev创建的。在加载驱动过程中,根据驱动程序,在/dev下自动创建设备节点。以下内容摘自busybox-1.23.1的mdev.txt文件:Mdev has two primary uses: initial...转载 2018-06-14 10:45:37 · 1628 阅读 · 0 评论 -
1.the linux device model--kobject kset学习笔记
http://blog.chinaunix.net/uid-22547469-id-4590385.html?utm_source=jiancoolLinux设备模型就是一栋规模宏大的建筑,为了构建它,需要基本的建筑材料钢筋:kobject、若干钢筋组成的钢架结构:kset,还需要一种机制sysfs,来向外界(用户空间的程序)展示其内部构造。并且通过文件接口的方式实现与外界沟通与互动。 设备文件...转载 2018-06-22 10:02:26 · 179 阅读 · 0 评论 -
sysfs接口函数的建立_DEVICE_ATTR
最近在弄Sensor驱动,看过一个某厂家的成品驱动,里面实现的全都是sysfs接口,hal层利用sysfs生成的接口,对Sensor进行操作。说道sysfs接口,就不得不提到函数宏 DEVICE_ATTR原型是#define DEVICE_ATTR(_name, _mode, _show, _store) \struct device_attribute dev_attr_##_name = __...转载 2018-06-22 16:18:02 · 373 阅读 · 0 评论 -
把寄存器做成一个结构体,赋值初始地址后寄存器赋值的操作
原创 2018-06-01 11:31:20 · 2395 阅读 · 0 评论 -
linux内核源代码分析----内核基础设施之klist
概述 klist是list的线程安全版本,他提供了整个链表的自旋锁,查找链表节点,对链表节点的插入和删除操作都要获得这个自旋锁。klist的节点数据结构是klist_node,klist_node引入引用计数,只有点引用计数减到0时才允许该node从链表中移除。当一个内核线程要移除一个node,必须要等待到node的引用计数释放,在此期间线程处于休眠状态,为了方便线程等待,klist引入等...转载 2018-06-25 17:44:30 · 1560 阅读 · 0 评论 -
linux 函数学习--kzalloc()
使用 include <linux/slab.h> void *kmalloc(size_t size, int flags); static inline void *kzalloc(size_t size, gfp_t flags) { return kmalloc(size, flags | __GFP_ZERO); } 123456说明给...转载 2018-06-20 10:41:36 · 306 阅读 · 0 评论 -
Linux设备驱动之Kobject、Kset
LDD3中说,Kobject的作用为: 1、sysfs 表述:在 sysfs 中出现的每个对象都对应一个 kobject, 它和内核交互来创建它的可见表述。 2、热插拔事件处理 :kobject 子系统将产生的热插拔事件通知用户空间。 3、数据结构关联:整体来看, 设备模型是一个极端复杂的数据结构,通过其间的大量链接而构成一个多层次的体系结构。kobject 实现了该结构并将其聚...转载 2018-06-20 15:28:50 · 159 阅读 · 0 评论 -
kmalloc/kfree,vmalloc/vfree函数用法和区别
1.kmalloc1>kmalloc内存分配和malloc相似,除非被阻塞否则他执行的速度非常快,而且不对获得空间清零.< tiger说明:在用kmalloc申请函数后,要对起清零用memset()函数对申请的内存进行清零。> 2>kamlloc函数原型:#include<Linux/slab.h>Void *kmalloc(size_t size, int f...转载 2018-06-28 15:32:18 · 2579 阅读 · 0 评论 -
nfs牛b的使用
原创 2018-10-02 17:12:07 · 108 阅读 · 0 评论 -
函数 devm_kzalloc()
函数 devm_kzalloc() 和kzalloc()一样都是内核内存分配函数,但是devm_kzalloc()是跟设备(device)有关的,当设备(device)被detached或者驱动(driver)卸载(unloaded)时,内存会被自动释放。另外,当内存不在使用时,可以使用函数devm_kfree()释放。而kzalloc()则需要手动释放(使用kfree()),但如果工程师检查不仔...原创 2018-03-15 15:53:59 · 871 阅读 · 0 评论 -
linux字符设备驱动之字符之异步通知
在前面的博文中记录的都是应用层主动查询读取驱动按键状态。驱动可不可以在有信号之后,主动上报通知应用层事件呢?当然可以,linux如此博大精深。我们使用异步通信机制,signal的办法实现该功能。所谓的异步,就是进程可以在信号没到前干别的事情,等到信号到来了,进程就会被内核通知去做相应的信号操作。进程是不知道信号什么时候来的。First of all,我们学习一下,应用层是怎样使原创 2020-02-16 15:30:48 · 106 阅读 · 0 评论