- 博客(9)
- 收藏
- 关注
原创 Linux下IIC驱动编写(驱动adxl345传感器)
Linux下IIC驱动编写(驱动adxl345传感器)基于正点原子IMX6ILL Mini开发板
2022-03-20 11:08:22
1460
原创 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
1109
原创 Linux设备驱动读写FIFO
把设备驱动中的全局内存变成一个FIFO,只有当 FIFO 中有数据的时候(即有进程把数据写到这个 FIFO 而且没有被读进程读空),读进程才能把数据读出,而且读取后的数据会从 globalfifo 的全局内存中被拿掉; 只有当 FIFO 非满时(即还有一些空间未被写,或写满后被读进程从这个 FIFO 中读出了数据),写进程才能往这个 FIFO 中写入数据。#define BUF_SIZE 15struct demo_device{ char *buffer; int value;
2021-12-14 12:18:04
1738
原创 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
3316
原创 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
158
原创 编写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
1756
原创 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
225
原创 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
241
原创 Linux 设备驱动分类
Linux 设备驱动分类1.字符设备驱动 字符设备驱动是以不定长度的字元来传送资料,字符设备是一个顺序的数据流设备,对这种设备的读写是按字符进行的,而且这些字符是连续地形成一个数据流。 字符设备驱动的关键数据结构有cdev(用来描述一个字符设备)和file_operations结构体的操作 struct cdev { struct kobject kobj; struct module *owner;
2021-12-06 15:48:25
523
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人