自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(22)
  • 收藏
  • 关注

转载 LINUX 2.6 内核下多C文件模块编译方法

MODULE_NAME :=testRESMAN_CORE_OBJS :=hello1.oRESMAN_GLUE_OBJS :=hello2.o$(MODULE_NAME)-objs := $(RESMAN_CORE_OBJS) $(RESMAN_GLUE_OBJS)obj-m :=test.oKERNELDIR ?= /lib/modules/$(shell uname -r

2014-03-26 09:22:01 1435

转载 input子系统学习(2)

下面我们看下handler和input_dev之间是如何联系起来的,handle这个结构体就是联系两者的纽带,在前面分析input_register_handler时曾提到过handle。点击(此处)折叠或打开struct input_handle {    void *private;        //私有数据    in

2014-03-22 15:52:00 413

转载 input子系统学习(1)

input子系统学习进行简单的总结。先看driver/input/input.c入口函数input_init点击(此处)折叠或打开static int __init input_init(void){    //此函数主要代码    input_init_abs_bypass();    err = class_regis

2014-03-22 14:51:33 494

转载 信号量(semaphore)

信号量(semaphore)  Linux内核的信号量在概念和原理上与用户态的System V的IPC机制信号量是一样的,但是它绝不可能在内核之外使用,因此它与System V的IPC机制信号量毫不相干。  信号量在创建时需要设置一个初始值,表示同时可以有几个任务可以访问该信号量保护的共享资源,初始值为1就变成互斥锁(Mutex),即同时只能有一个任务可以访问信号量保护的共享资源。

2014-03-21 10:04:40 655

转载 AWK命令详解(大全)

什么是awk? 你可能对UNIX比较熟悉,但你可能对awk很陌生,这一点也不奇怪,的确,与其优秀的功能相比,awk还远没达到它应有的知名度。awk是什么?与其它大多数UNIX命令不同的是,从名字上看,我们不可能知道awk的功能:它既不是具有独立意义的英文单词,也不是几个相关单词的缩写。事实上,awk是三个人名的缩写,他们是:Aho、(Peter)Weinberg和(Brain)Kernig

2014-03-14 15:11:04 433

转载 堆和栈

一、预备知识―程序的内存分配 一个由c/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)― 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 2、堆区(heap) ― 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。 3、全局区(静态

2014-03-12 15:00:10 362

转载 malloc()和calloc()

malloc()函数有一个参数,即要分配的内存空间的大小:void*malloc(size_tsize);calloc()函数有两个参数,分别为元素的数目和每个元素的大小,这两个参数的乘积就是要分配的内存空间的大小。void*calloc(size_tnumElements,size_tsizeOfElement);如果调用成功,函数malloc()和函数callo

2014-03-12 14:54:58 361

转载 linux驱动加载命令和驱动模块信息查看

驱动操作命令:      insmod / modprobe 加载驱动      rmmod                     卸载驱动      lsmod                       查看系统中所有已经被加载了的所有的模块以及模块间的依赖关系      modinfo                    获得模块的信息  

2014-03-11 15:04:42 923

转载 Qt头文件中的QT_BEGIN_NAMESPACE

在源代码中是这样定义的:1# define QT_BEGIN_NAMESPACE namespace QT_NAMESPACE {2# define QT_END_NAMESPACE }也就是说,如果你定义以下内容:1Q

2014-03-07 19:11:57 776

转载 struct inode 和 struct file

1、struct inode──字符设备驱动相关的重要结构介绍内核中用inode结构表示具体的文件,而用file结构表示打开的文件描述符。Linux2.6.27内核中,inode结构体具体定义如下:struct inode {struct hlist_node    i_hash;struct list_head    i_list;struct list_head    

2014-03-07 10:38:15 350

转载 class_create()函数应用

//主要是在/sys/class/ 下创建一个 “name”的文件夹 ! 从linux内核2.6的某个版本之后,devfs不复存在,udev成为devfs的替代。相比devfs,udev有很多优势,在此就不罗嗦了,提醒一点,udev是应用层的东东,不要试图在内核的配置选项里找到它;加入对udev的支持很简单,以作者所写的一个字符设备驱动为例,在驱动初始化的代码里调用class_cr

2014-03-07 10:13:48 1451

转载 linux驱动结构之class及相关结构体

设备类struct class是一个设备的高级视图,它抽象出低级的实现细节。例如,驱动可以见到一个SCSI磁盘或者一个ATA磁盘,在类的级别,他们都是磁盘,类允许用户空间基于它们作什么来使用设备,而不是它们如何被连接或者它们如何工作。struct class{    const char *name;   //类名称    struct module *owner;   //对应模块

2014-03-07 10:05:14 860

转载 使用cdev_add注册字符设备

1.2.3  使用cdev_add注册字符设备在Linux 2.6内核中的字符设备用cdev结构来描述,其定义如下:struct cdev   {      struct kobject kobj;      struct module *owner; //所属模块      const struct file_operations *ops; //文件操作结构      stru

2014-03-07 09:49:39 576

转载 linux内核cdev_init系列函数(字符设备的注册)

内核中每个字符设备都对应一个 cdev 结构的变量,下面是它的定义:linux-2.6.22/include/linux/cdev.hstruct cdev {   struct kobject kobj;          // 每个 cdev 都是一个 kobject   struct module *owner;       // 指向实现驱动的模块   const

2014-03-06 22:17:46 390

转载 register_chrdev_region和alloc_chrdev_region

分配并注册主次设备号    设备号是在驱动module中分配并注册的,也就是说,驱动module拥有这个设备号(我的理解),而/dev目录下的设备文件是根据这个设备号创建的,因此,当访问/dev目录下的设备文件时,驱动module就知道,自己该出场服务了(当然是由内核通知)。    在Linux内核看来,主设备号标识设备对应的驱动程序,告诉Linux内核使用哪一个驱动程序为该设备(也就是/

2014-03-06 22:05:22 501

转载 void及void指针含义的深刻解析

void的含义void即“无类型”,void *则为“无类型指针”,可以指向任何数据类型。void指针使用规范①void指针可以指向任意类型的数据,亦即可用任意数据类型的指针对void指针赋值。例如:int * pint;void *pvoid;pvoid = pint; /* 不过不能 pint= pvoid; */如果要将pvoid赋给其他类型指针,

2014-03-06 20:40:20 386

转载 linux 内核分析之list_head

本文详细分析了 2.6.x 内核中链表结构的实现,并通过实例对每个链表操作接口进行了详尽的讲解。一、 链表数据结构简介链表是一种常用的组织有序数据的数据结构,它通过指针将一系列数据节点连接成一条数据链,是线性表的一种重要实现方式。相对于数组,链表具有更好的动态性,建立链表时无需预先知道数据总量,可以随机分配空间,可以高效地在链表中的任意位置实时插入或删除数据。链表的开销主要是访问的顺序

2014-03-06 17:17:26 444

转载 _raw_readl() 与ioread32()有什么区别

有啥子区别?都是在驱动中读(写)虚拟地址吧? -- ARM架构下: #define __raw_readl(a)        (__chk_io_ptr(a), *(volatile unsigned int __force   *)(a)) #define ioread32(p)    ({ unsigned int __v = le32_to_cpu((__force

2014-03-06 16:37:37 3796

转载 有关中断的使用

http://book.51cto.com/art/201311/418631.htm

2014-03-06 15:48:14 456

转载 Linux驱动结构学习笔记 pci之pci_dev

每种类的PCI设备都可以用结构类型pci_dev来描述。更为准确地说,应该是每一个PCI功能,即PCI逻辑设备都唯一地对应有一个pci_dev设备描述符。该数据结构的定义如下(include/linux/pci.h):struct pci_dev {struct list_head global_list;/* 全局链表元素global_list:每一个pci_dev结构都通过

2014-03-05 10:59:42 1197

原创 __init, __initdata, __devinit 和 __devinitdata的作用

在LDD中第二章有提到2.7. Initialization and Shutdown    Initialization functions should be declared static, since they are not meant to be visible outside the specific file; there is no hard rule about

2014-03-05 10:35:28 1359

转载 error: asm/arch/regs-gpio.h: No such file or directory 此类问题的解决办法

注:基于linux2.6.31内核的问题解决方案,其思路适用于其他内核版本。不少嵌入式Button或是Led驱动程序的头文件都包含,和等这几个头文件。在这这些头文件中定义了硬件相关的资源描述,如I/O,中断的宏定义。当我们直接include上述头文件时,就会出现如下的错误。error: asm/hardware.h: No such file or directory

2014-03-01 15:46:01 7375

空空如也

空空如也

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

TA关注的人

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