- 博客(9)
- 收藏
- 关注
原创 Linux下IIC驱动编写(驱动adxl345传感器)
Linux下IIC驱动编写(驱动adxl345传感器) 基于正点原子IMX6ILL Mini开发板
2022-03-20 11:08:22
1635
原创 Linux内核定时器
Linux内核定时器 1.新旧差异 旧的Linux内核使用init_timer()来初始化一个定时器,新的内核不再使用该函数,改为使用timer_setup()。 timer结构体也有变化,旧的结构体类型成员: struct timer_list { 14 /* 15 * All fields that change during normal runtime grouped to the 16 * same cacheline 17
2021-12-22 12:31:22
1202
原创 Linux设备驱动读写FIFO
把设备驱动中的全局内存变成一个FIFO,只有当 FIFO 中有数据的时候(即有进程把数据写到这个 FIFO 而且没有被读进程读空),读进程才能把数据读出,而且读取后的数据会从 globalfifo 的全局内存中被拿掉; 只有当 FIFO 非满时(即还有一些空间未被写,或写满后被读进程从这个 FIFO 中读出了数据),写进程才能往这个 FIFO 中写入数据。 #define BUF_SIZE 15 struct demo_device{ char *buffer; int value;
2021-12-14 12:18:04
1834
原创 Linux原子操作
并发问题 现代操作系统支持多任务的并发,并发在提高计算资源利用率的同时也带来了资源竞争的问题。假如一个任务正在读取文件一的情况下,此时又有另一个任务想要读取文件一,会造成读取混乱问题。可以使用原子操作实现资源互斥。 原子操作 原子操作指的是在执行过程中不会被别的代码路径所中断的操作。 1.设置原子变量的值 void atomic_set(atomic_t *v, int i); //设置原子变量的值为 i atomic_t v = ATOMIC_INIT(0); //定义原子变量 v 并初始化为 0
2021-12-14 10:35:11
3405
原创 Linux简易设备驱动
1.包含头文件 #include<linux/init.h> #include<linux/module.h> 2.驱动模块的出口和入口 module_inti(); module_exit(); 3.实现功能 static int __init hello_init(void) { printk(KERN_INFO "Enter: %s\n",__func__); return 0; } static void __exit hello_exit(void) { pri
2021-12-13 18:42:31
185
原创 编写Linux设备驱动中的read、open函数
1.前期准备 前面已经定义了驱动层的字符数组大小为1000。 #define BUF_SIZE 1000; struct demo_device{ char *buffer[100]; struct miscdevice *mdev; }; struct demo_device *demo_dev; 2.设备驱动读函数open 废话不多说,直接上代码!简单粗暴。 static ssize_t demo_read(struct file *file, char __user *buf,
2021-12-09 23:47:31
1865
原创 const用法
1.const的作用 (1)定义变量为常量 *常量C的值不能再被修改 *常量在定义时就要被初始化 const int C=10; (2)修饰函数参数,函数体内不能改变该参数 (3)修饰函数返回值 若返回值为指针,则返回的指针的内容不能被修改。且返回值只能赋给被const修饰的指针。 const int *GetValue(); const int *value; value = GetValue(); 2.易混用法 (1)修饰一般常量 int conxt a = 10; const int a = 10
2021-12-08 22:55:28
268
原创 Linux简易设备驱动程序
1.包含头文件 #include<linux/init.h> #include<linux/module.h> 2.驱动模块的出口和入口 module_inti(); module_exit(); 3.实现功能 static int __init hello_init(void) { printk(KERN_INFO "Enter: %s\n",__func__); return 0; } static void __exit hello_exit(void) { pri
2021-12-08 22:29:26
310
原创 Linux 设备驱动分类
Linux 设备驱动分类 1.字符设备驱动 字符设备驱动是以不定长度的字元来传送资料,字符设备是一个顺序的数据流设备,对这种设备的读写是按字符进行的,而且这些字符是连续地形成一个数据流。 字符设备驱动的关键数据结构有cdev(用来描述一个字符设备)和file_operations结构体的操作 struct cdev { struct kobject kobj; struct module *owner;
2021-12-06 15:48:25
570
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅