自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(29)
  • 资源 (9)
  • 收藏
  • 关注

转载 test_bit、set_bit和clear_bit

//将addr的第nr(nr为0-31)位置值置为1;  //nr大于31时,把高27的值做为当前地址的偏移,低5位的值为要置为1的位数  extern __inline__ int set_bit(int nr,int * addr)  {      int mask, retval;        addr += nr >> 5;                 //nr大于31时...

2018-03-31 17:27:58 6348

原创 pack 内存对齐操作

#pragma pack(push) //保存对齐状态#pragma pack(4)//设定为4字节对齐#pragma pack(pop)//恢复对齐状态#pragma pack( [show] | [push | pop] [, identifier], n )1,pack提供数据声明级别的控制,对定义不起作用;2,调用pack时不指定参数,n将被设成默认值;3,一旦改变数据类型的alignme...

2018-03-31 09:24:38 552

原创 RESPONSE(x) 宏定义测试代码

#include <iostream>using namespace std;#define LK_STUCK_KEY 111#define LK_SELFTEST_FAILED 112static struct { unsigned char value; unsigned char *name;} lk_response[] = {#define RESPONSE(x) { ...

2018-03-22 14:52:55 186

原创 I2C_ADDRS(addr, addrs...)理解

IIC驱动中的宏定义:/* Internal numbers to terminate lists */#define I2C_CLIENT_END 0xfffeU/* Construct an I2C_CLIENT_END-terminated array of i2c addresses */#define I2C_ADDRS(addr, addrs...) \ ((const unsign...

2018-03-20 19:39:32 2910

转载 cond_resched()

cond_resched()之后,后面的代码什么时候才被再次调度回来执行?

2018-03-20 10:43:01 2806

转载 linux设备驱动模型 - device/bus/driver

在linux驱动模型中,为了便于管理各种设备,我们把不同设备分别挂在他们对应的总线上,设备对应的驱动程序也在总线上找,这样就提出了deivce-bus-driver的模型,硬件上有许多设备总线,那么我们就在设备模型上抽象出bus概念,相应的device就代表设备,driver表示驱动,在代码中它们对应的结构体下面介绍,对于实际的设备及总线,这些结构体就可以嵌入到实际总线上。1. bus了解bus,...

2018-03-19 20:50:40 555

转载 kset_create_and_add

本文中所有代码都是来自linux内核源文件/lib/kobject.c/** * kset_create_and_add - 创建一个动态的kset 结构并添加到sysfs中 * * @name:  kset名称 * @uevent_ops: kset的kset_uevent_ops 结构 * @parent_kobj: kset的付kobject,如果有的话 * * 该方法创建一个动态的kset...

2018-03-19 20:43:28 648

转载 linux设备驱动模型之 kset原理与实例分析

1、 Kset       kset是具有相同类型的kobject的集合,在sysfs中体现成一个目录,在内核中用kset数据结构表示,定义为:struct kset {struct list_head list; //连接该kset中所有kobject的链表头spinlock_t list_lock;struct kobject kobj; //内嵌的kobjectstruct kset_uev...

2018-03-19 20:41:30 203

转载 Linux 设备模型基本概念 (一)

1、设备模型引入Linux 2.6内核最初为了应付电源管理的需要,提出了一个设备模型来管理所有的设备。在物理上,外设之间是有一种层次关系的,比如把一个U盘插到笔记本上,实际上这个U盘是接在一个USB Hub上,USB Hub又是接在USB 2.0 Host Controller (EHCI)上,最终EHCI又是一个挂在PCI Bus上的设备。这里的一个层次关系是:PCI->EHCI->...

2018-03-19 20:39:24 195

转载 Linux 设备模型之 (kobject、kset 和 Subsystem)(二)

1、kobject 结构在Linux内核里,kobject是组成Linux设备模型的基础,一个kobject对应sysfs里的一个目录。从面向对象的角度来说,kobject可以看作是所有设备对象的基类,因为C语言并没有面向对象的语法,所以一般是把kobject内嵌到其他结构体里来实现类似的作用,这里的其他结构体可以看作是kobject的派生类。Kobject为Linux设备模型提供了很多有用的功能...

2018-03-19 20:33:41 205

转载 深入理解l内核v4l2框架之video for linux 2(一)

在看了很多关于v4l2驱动的例程之后,想深入研究下linux内核的v4l2框架,顺便把这些记录下来,以备查用。Video for Linux 2     随着一些视频或者图像硬件的复杂化,V4L2驱动也越来越趋于复杂。许多硬件有多个IC,在/dev下生成多个video设备或者其他的诸如,DVB,ALSA,FB,I2C ,IR等等非V4L2的设备。所以,V4L2驱动程序就要为这些硬件设备提供音视频的...

2018-03-19 20:19:28 500

转载 V4L2 driver(一). 整体框架

1.1 从字符设备说起熟悉v4l2用户空间编程的都知道, v4l2编程主要是调用一系列的ioctl函数去对v4l2设备进行打开, 关闭, 查询, 设置等操作. v4l2设备是一个字符设备, 而且其驱动的主要工作就是实现各种各样的ioctl. v4l2的整体框架如下图所示V4L2的整体框架图 上图中, 淡绿色背景为用户空间, 淡蓝色背景为内核空间. 椭圆表示相关的结构体, 子系统或实例. 方框表示相...

2018-03-19 20:18:50 317

转载 V4L2驱动框架

V4L2驱动框架主设备号: 81次设备号:    0-63    64-67    192-223    224-255/dev/videoX    应用层————————————char驱动————————————V4L2————————————具体的驱动————————————硬件应用层的操作都需要有底层V4L2驱动的支持。内核中有一些非常完善的例子。比如:linux-2.6.26内核目录dr...

2018-03-16 21:15:44 281

转载 视频驱动V4L2子系统驱动架构 - ioctl

基于linux4.6.3,最后会附上一张ioctl调用总图,分析代码还是要用图来说明,这样更清晰一点,我就是这么分析的,不过平时分析的图很随便,而且很大,所以就不能在这里呈现,我在这里会贴出一个简略图ioctl详解进入ioctl都是从cdev->ops->ioctl进入的,一般的驱动cdev都是驱动自己初始化的,在v4l2架构中,cdev都已经初始化完成,不需要驱动开发者来初始化,下面...

2018-03-16 21:09:27 653

转载 视频驱动V4L2子系统驱动架构 - 驱动框架

V4L2驱动框架v4l2驱动架构如图所示,v4l2也就是video for linux two,那么也就是说还有One了,v4l2前面还有v4l图中芯片模块对应Soc的各个子模块,video_device结构体主要用来控制Soc的video模块,v4l2_device会包含多个v4l2_subdev ,每个v4l2_subdev 用来控制各自的子模块,某些驱动不需要v4l2_subdev ,依靠v...

2018-03-16 21:05:27 220

转载 V4L2框架分析学习

Author:CJOKContact:cjok.liao#gmail.comSinaWeibo:@廖野cjok 1、概述Video4Linux2是Linux内核中关于视频设备的内核驱动框架,为上层的访问底层的视频设备提供了统一的接口。凡是内核中的子系统都有抽象底层硬件的差异,为上层提供统一的接口和提取出公共代码避免代码冗余等好处。就像公司的老板一般都不会直接找底层的员工谈话,而是找部门经理了解情况...

2018-03-16 21:02:24 256

转载 camera 原理

转载:http://blog.csdn.net/g_salamander/article/details/80868351、Color Filter Array — CFA随着数码相机、手机的普及,CCD/CMOS 图像传感器近年来得到广泛的关注和应用。 图像传感器一般都采用一定的模式来采集图像数据,常用的有 BGR 模式和 CFA 模式。BGR 模式是一种可直接进行显示和压缩等处理的图像数据模式...

2018-03-16 20:53:02 712

转载 Linux platform总线(1):总体框架

PlatForm设备驱动:  一、platform总线、设备与驱动  1.一个现实的Linux设备和驱动通常都需要挂接在一种总线上,对于本身依附于PCI、USB、I2 C、SPI等的设备而言,这自然不是问题,  但是在嵌入式系统里面,SoC系统中集成的独立的外设控制器、挂接在SoC内存空间的外设等确不依附于此类总线。  基于这一背景,Linux发明了一种虚拟的总线,称为platform总线,相应的...

2018-03-16 20:46:35 231

转载 Linux杂项设备驱动

一、Linux杂项设备驱动简介Linux杂项驱动出现的意义在于:有很多简单的外围字符设备,它们功能相对简单,一个设备占用一个主设备号对于内核资源来说太浪费。所以对于这些简单的字符设备它们共用一个主设备号,不同的设备使用不同的次设备号.杂项驱动特点:主设备号相同,次设备号不同在文件系统中自动生成设备节点杂项设备描述结构体struct miscdevice  {int minor;//次设备号cons...

2018-03-16 19:23:25 800

原创 misc设备驱动源码

/* * Head entry for the doubly linked miscdevice list */static LIST_HEAD(misc_list);static DEFINE_MUTEX(misc_mtx);/* * Assigned numbers, used for dynamic minors */#define DYNAMIC_MINORS 64 /* like dyn...

2018-03-16 19:21:25 208

转载 register_chrdev深入分析

register_chrdev      __register_chrdev(major, 0, 256, name, fops);            struct char_device_struct *cd;            cd = __register_chrdev_region(major, baseminor, count, name);                   ...

2018-03-16 19:14:19 1062

原创 字符设备驱动基本流程

一、申请设备号:    1.动态申请设备号(alloc_chrdev_region)    2.静态申请设备号(register_chrdev_region)二、设备注册:    1.为cdev分配空间(cdev_alloc)    2.初始化cdev(cdev_init)    3.将cdev添加进Kernel(cdev_add)三、生成设备节点    1.创建class(class_creat...

2018-03-16 18:47:04 2433 1

转载 spi总线驱动简单代码

spi-bus.c#include <linux/init.h>  #include <linux/module.h>  #include <linux/kernel.h>  #include <linux/device.h>     int my_match(struct device *dev, struct device_driver *drv...

2018-03-14 19:04:35 623

转载 Linux SPI总线设备驱动模型详解

随着技术不断进步,系统的拓扑结构越来越复杂,对热插拔、跨平台移植性的要求越来越高,早期的内核难以满足这些要求,从linux2.6内核开始,引入了总线设备驱动模型。其实在linux2.4总线的概念就已经提出来了,直到2.6版本的内核才运用。Linux系统中有很多条总线,如I2C、USB、platform、PCI等。以spi为例,假如有M种不同类型CPU,N中不同SPI外设,在写裸机驱动的时候,M种C...

2018-03-14 18:26:59 361

原创 驱动中常见的队列操作函数

/** * destroy_workqueue - safely terminate a workqueue * @wq: target workqueue * * Safely destroy a workqueue. All work currently pending will be done first. */void destroy_workqueue(struct workqueue_...

2018-03-14 17:52:20 525

原创 两种不同方式的设备释放区别

static void cdev_default_release(struct kobject *kobj){ struct cdev *p = container_of(kobj, struct cdev, kobj); struct kobject *parent = kobj->parent; cdev_purge(p); kobject_put(parent);}static voi...

2018-03-14 14:31:33 208

原创 __register_chrdev_region 指针操作分析

/* * Register a single major with a specified minor range. * * If major == 0 this functions will dynamically allocate a major and return * its number. * * If major > 0 this function will attempt to...

2018-03-14 14:11:58 221

原创 register_chrdev_region源码理解

先贴源代码:/** * register_chrdev_region() - register a range of device numbers * @from: the first in the desired range of device numbers; must include *        the major number. * @count: the number of...

2018-03-14 11:53:27 253

转载 Linux之解析鼠标input事件数据

Linux中USB鼠标驱动:http://blog.csdn.net/qq_21792169/article/details/48790745或者直接Linux自带的USB鼠标驱动。/*       * 向输入子系统汇报鼠标事件情况,以便作出反应。       * data 数组的第0个字节:bit 0、1、2、3、4分别代表左、右、中、SIDE、EXTRA键的按下情况;       * data...

2018-03-13 19:29:27 885

VS2017-吉比特can分析仪二次开发

吉比特CAN分析仪二次开发软件小工具,基于VS2017-VC++平台,演示了CAN总线的数据收发,仅供参考。吉比特CAN分析仪二次开发软件小工具,基于VS2017-VC++平台,演示了CAN总线的数据收发,仅供参考。

2019-01-29

VS2017-VC++版本校验和计算小工具

基于VS2017 VC++平台的校验和计算小工具软件,目前支持异或,累加2中算法。

2019-01-14

VS2017-MFC-生成二维码小程序

VS2017-MFC-生成二维码小程序,可以设置二维码的内容,和颜色。VS2017-MFC-生成二维码小程序,可以设置二维码的内容,和颜色。VS2017-MFC-生成二维码小程序,可以设置二维码的内容,和颜色。

2018-12-07

VS2017工程MFC子线程中更新控件的内容

VS2017工程,MFC子线程中更新控件的内容,采用消息机制来实现,简单易懂,非常方便新手的入门。

2018-12-06

VS2017-MFC子线程中更新控件的内容框架代码

VS2017工程,MFC子线程中更新控件的内容,采用全局函数的方法来实现,简单易懂,非常方便新手的入门。

2018-12-06

简单的画时钟程序源码

参考网上的的代码,进行了简化和修改,只使用了一个对话框界面,尽量使用少的函数调用。对新手来说具有一定的参考价值。

2018-12-02

VS2017平台下最简洁的基于C语言开发的串口接收程序测试代码

VS2017平台下最简洁的基于C语言开发的串口接收程序测试代码。VS2017平台下最简洁的基于C语言开发的串口接收程序测试代码。VS2017平台下最简洁的基于C语言开发的串口接收程序测试代码。

2018-11-09

VS2017平台下最简洁的基于C语言开发的串口发送程序

VS2017平台下最简洁的基于C语言开发的串口发送程序测试代码,修改简单灵活,方便用于各种串口调试。VS2017平台下最简洁的基于C语言开发的串口发送程序测试代码,修改简单灵活,方便用于各种串口调试。

2018-11-09

aes加密解密测试代码

aes加密解密测试代码,ubuntu12 gcc下测试验证通过。 这个代码是ST17H26 SDK中的,来自网上开源代码,为了兼容多种平台,里面的宏定义分支很多。

2017-10-14

空空如也

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

TA关注的人

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