
Android驱动开发
实际项目中开发的驱动总结
binn_chern
这个作者很懒,什么都没留下…
展开
-
一字符驱动管理多个设备及不同设备数据隔离
1、每个设备一份数据,不同设备的数据通过minor号从全局数据读取2、hrtimer通过指针达到在这里插入代码片数据隔离#include <linux/delay.h>#include <asm/io.h>#include <asm/uaccess.h>#include <linux/module.h>#include <linux...原创 2019-09-26 12:35:53 · 448 阅读 · 0 评论 -
kernel中实现的循环buffer及使用方式
在kernel中轮询设备数据,用户空间通过阻塞式读取数据,难免在kernel中需要buffer存在,因此实现可配置的循环buffer,供大家参考,待优化部分是buffer加上信号量。代码如下:data_queue.h#ifndef __DATA_QUEUE_H__#define __DATA_QUEUE_H__#include <linux/types.h>typedef...原创 2019-11-22 17:07:51 · 1020 阅读 · 0 评论 -
字符设备阻塞式轮询实现
在kernel中有一个数据buffer,在用户空间需要轮询读取,一般情况都会采用select、poll。因此需要在驱动中实现对select、poll的支持。在驱动中,对这两种的支持都只需实现一个poll函数即可。实例如下:#include <linux/init.h>#include <linux/module.h>#include <linux/fs.h&g...原创 2019-11-22 17:22:12 · 276 阅读 · 0 评论 -
RS485通信总结
RS485 的接口非常简单,与 RS232 所使用的 MAX232 是类似的,只需要一个 RS485转换器,就可以直接与单片机的 UART 串口连接起来,并且使用完全相同的异步串行通信协议。但是由于 RS485 是差分通信,因此接收数据和发送数据是不能同时进行的,也就是说它是一种半双工通信。那我们如何判断什么时候发送,什么时候接收呢?RS485 转换芯片很多,这节课我们以典型的 MAX485 为...原创 2020-02-21 20:09:13 · 5031 阅读 · 0 评论 -
M1卡id号的计算算法
1、读取到卡的UID,如:33:6c:57:162、对UID的4位顺序置反:16:57:6c:333、对该十六位数进行取反加1: ~0x16576c33+1=-3748280834、取绝对值,即:374828083原创 2019-12-04 14:23:45 · 5428 阅读 · 2 评论