自定义博客皮肤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)
  • 收藏
  • 关注

转载 proc文件系统API

内核为创建proc文件提供了一套API,相关API如下:struct proc_dir_entry *proc_mkdir(constchar *name, struct proc_dir_entry *parent);该函数用于在proc文件系统中创建一个目录项,大多数时候,当我们期望实现自己的proc文件时,都要先创建一个自己的目录,然后在该目录里创建自己的文件,当然我

2015-09-14 11:23:51 832

转载 Linux块设备驱动

块设备是与字符设备并列的概念,这两类设备在Linux中驱动的结构有较大差异,总体而言,块设备驱动比字符设备驱动要复杂得多,在I/O操作上表现出极大的不同,缓冲、I/O调度、请求队列等都是与块设备驱动相关的概念。本文将详细讲解Linux块设备驱动的编程方法。1.块设备的I/O操作特点字符设备与块设备I/O操作的不同如下:(1)块设备只能以块为单位接受输入

2015-08-04 10:55:09 456

原创 理解驱动程序

驱动程序就是驱使硬件工作的程序,那么程序是如何驱使硬件工作呢?当然是操作CPU芯片内部提供的各模块控制器的控制寄存器,状态寄存器及数据寄存器,针对这些寄存器进行的读写操作就能够完全的控制硬件工作。对于只需要进行单任务循环的应用场合,就不需要使用操作系统。在没有操作系统的情况下,设备驱动的接口被直接提交给了应用软件工程师,应用软件没有跨越任何层次就直接访问了设备驱动的接口。驱动包含的接口函数也与

2015-05-14 15:10:20 1078

原创 Linux驱动程序之poll机制

使用非阻塞I/O的应用程序通常会使用select()和poll()系统调用查询是否可对设备进行无阻塞的访问,这两个系统调用最终又会引发设备驱动中的poll()函数被执行,所以我们的问题就集中到了如何编写设备驱动中的poll()函数就可以了。先来看看设备驱动中的poll()函数原型:unsigned int (*poll)(struct file *filp, struct poll_tab

2015-05-10 14:38:27 1534

转载 net_device详解

网络设备接口层的主要功能是为千变万化的网络设备定义了统一,抽象的数据结构net_device结构体,以不变应万变,实现多种硬件在软件层次上的统一。每一个网络设备都由structnet_device来描述,该结构可使用如下内核函数进行动态分配struct net_device*alloc_netdev(int sizeof_priv, const char *mask, void(*setup)

2015-05-08 20:59:36 6776

转载 Linux应用程序之信号量

一、什么是信号量为了防止出现因多个程序同时访问一个共享资源而引发的一系列问题,我们需要一种方法,它可以通过生成并使用令牌来授权,在任一时刻只能有一个执行线程访问代码的临界区域。临界区域是指执行数据更新的代码需要独占式地执行。而信号量就可以提供这样的一种访问机制,让一个临界区同一时间只有一个线程在访问它,也就是说信号量是用来调协进程对共享资源的访问的。信号量是一个特殊的变

2015-05-07 20:58:24 708

原创 Linux应用程序之文件

Linux中的七种文件和七种宏普通目录S_ISREG()目录文件S_ISDIR() 块设备文件S_ISBLK()字符设备文件S_LSCHR()FIFO(命名管道) S_LSFIFO()套接字 S_LSSOCK()符号链接 S_LSLNK()

2014-10-25 19:07:21 721

转载 struct sk_buff详解

sk_buff是Linux网络代码中最重要的结构体之一。它是Linux在其协议栈里传送的结构体,也就是所谓的“包”,在他里面包含了各层协议的头部,比如ethernet, ip ,tcp ,udp等等。也有相关的操作等。熟悉他是进一步了解Linux网络协议栈的基础。      此结构定义在头文件中,结构体布局大致可分为以下四部分:l       布局(layout)l  

2014-10-06 10:18:22 5990

转载 LINUX中断机制与信号

LINUX中断机制与信号中断和异常 l  中 断(也称硬件中断)定义 :中断是由其他硬件设备依照CPU 时钟周期信号随机产生的。分类 : 可屏蔽中断非可屏蔽中断来源: 间隔定时器和I/O l  异 常(也称软件中断)定义 :当指令执行时由 CPU控制单元 产生的,异常也称为“异步中断”是因为只有在 一条指令终止执行后C

2014-09-20 21:26:29 492

原创 Linux中断机制

一、中断上半部与底半部       所谓中断是指CPU在执行程序的过程中,出现了某些突发事件急待处理,CPU必须暂停执行当前的程序,转去处理突发事件,处理完毕后CPU又返回原程序被中断的位置并继续执行。中断注册函数和中断注销函数:注册中断:int request_irq(unsigned int irq, irqreturn_t (* handler) (int, void* ,str

2014-09-19 21:12:46 438

转载 Linux内核与驱动面试要点

1. 实际经验:所开发驱动程序或内核模块的来龙去脉(需求、设计思想、实现方法、要点难点,特别是硬件调试过程中所遇到的特殊情况),所修复BUG的现象、调试手段、原因分析和解决方案。2. 驱动调试:内核的调试手段、应用程序的调试手段(内核Panic所dump的信息以及Panic的分析、应用程序core dump的分析)。3. 驱动基础:mknod与udev,module相关AP

2014-09-17 19:48:49 671

转载 Linux内核空间和用户空间传递数据

通常情况下,应用程序通过内核接口访问驱动程序,因此,驱动程序需要和应用程序交换数据。Linux将存储器分为“内核空间”和“用户空间”。操作系统和驱动程序在内核空间运行,应用程序在用户空间运行,两者不能简单地使用指针传递数据。因为Linux系统使用了虚拟内存机制,用户空间的内存可能被换出,当内核空间使用用户空间指针时,对应的数据可能不在内存中。Linux内核提供了多个函数和宏用于内核空间和用户空间传

2014-09-13 12:55:47 2754

转载 数字滤波算法

为消除或减弱外界干扰,提高系统的测量精度和可靠性,通过软件滤波的方法即数字滤波算法对测量数据进行处理。 数字滤波方法有很多种,每种方法有其不同的特点和使用范围。从大的范围可分为3类。  1、克服大脉冲干扰的数字滤波法(1)限幅滤波法 (2)中值滤波法2、抑制小幅度高频噪声的平均滤波法(1)算数平均(2)滑动平均(3)加权滑动平均(4)一阶滞后滤波法 3、复合滤波

2014-09-12 17:45:53 9701

转载 字符串匹配KMP算法

字符串匹配是计算机的基本任务之一。  许多算法可以完成这个任务,Knuth-Morris-Pratt算法(简称KMP)是最常用的之一。它以三个发明者命名,起头的那个K就是著名科学家Donald Knuth。      这种算法不太容易理解,网上有很多解释,但读起来都很费劲。直到读到Jake Boxer的文章,我才真正理解这种算法。下面,我用自己的语言,试图写一篇比较好懂的K

2014-09-09 20:04:56 463

转载 哈希表

hash表,有时候也被称为散列表。个人认为,hash表是介于链表和二叉树之间的一种中间结构。链表使用十分方便,但是数据查找十分麻烦;二叉树中的数据严格有序,但是这是以多一个指针作为代价的结果。hash表既满足了数据的查找方便,同时不占用太多的内容空间,使用也十分方便。       打个比方来说,所有的数据就好像许许多多的书本。如果这些书本是一本一本堆起来的,就好像链表或者线性表一样,整个数

2014-09-08 15:23:52 420

转载 深刻理解Linux进程间通信(IPC)

0. 序1. 管道1.1. 管道概述及相关API应用1.2. 有名管道概述及相关API应用1.3. 小结1.4. 参考资料2. 信号(上)2.1. 信号及信号来源2.2. 信号的种类2.3. 进程对信号的响应2.4. 信号的发送2.5. 信号的安装(设置信号关联动作)2.6. 信号集及信号集操作函数

2014-09-07 21:35:46 902

原创 Linux设备驱动模型

在Linux的设备驱动模型中,关心总线、设备和驱动这 3 个实体,总线将设备和驱动绑定。在系统每注册一个设备的时候,会寻找与之匹配的驱动;相反的在系统每注册一个驱动的时候,会寻找与之匹配的设备,而匹配由总线完成。        一个现实的 Linux 设备和驱动通常都需要挂接在一种总线上,对于本身依附于PCI、USB、I2C、SPI等的设备而言,这自然不是问题,但是在嵌入式系统里面,SoC系统

2014-09-05 22:22:09 533

原创 Linux设备访问机制

一.阻塞    阻塞操作是指在执行设备操作时,若不能获得资源,则挂起进程直到满足可操作的条件后再进行操作。被挂起的进程进入休眠状态,被从调度器的运行队列移走,直到等待的条件被满足。通过读写函数中内嵌阻塞代码(信号量,等待队列)来实现不满足条件时的睡眠,等到满足条件了应用程序从睡眠中唤醒,继续下面的操作。         阻塞从字面上听起来似乎意味着低效率,实则不然,如果设备驱动不阻塞,则用

2014-09-05 17:24:01 474

转载 linux 内存与I/O访问机制

内存与IO访问       几乎每一种外设都是通过读写设备上的寄存器来进行的,通常包括控制寄存器、状态寄存器和数据寄存器三大类,外设的寄存器通常被连续地编址。根据CPU体系结构的不同,CPU对IO端口的编址方式有两种:(1)I/O映射方式(I/O-mapped)  典型地,如X86处理器为外设专门实现了一个单独的地址空间,称为"I/O地址空间"或者"I/O端口空间",CPU通过专门的I

2014-09-05 15:24:50 696

转载 linux设备驱动中的并发控制

linux设备驱动中的并发控制并发控制的概念----并发指的是多个执行单元并行执行,而并发的执行单元对共享资源(硬件资源和----软件上的全局变量、静态变量等)的访问则很容易导致竞态。竞态发生的情况----对称多处理器(SMP)的多个CPU----单CPU内进程与抢占它的进程----中断(硬中断、软中断、Tasklet、底半部)与进程之间解决竞态问题的途径

2014-09-04 20:03:37 389

转载 TCP三次握手及四次挥手详细图解

TCP三次握手及四次挥手详细图解Andrew [email protected]    相对于SOCKET开发者,TCP创建过程和链接折除过程是由TCP/IP协议栈自动创建的.因此开发者并不需要控制这个过程.但是对于理解TCP底层运作机制,相当有帮助.    而且对于有网络协议工程师之类笔试,几乎是必考的内容.企业对这个问题热情之高,出乎我的意料:-

2014-08-29 18:51:16 276

转载 Linux线程属性

属性值不能直接设置,须使用相关函数进行操作,初始化的函数为pthread_attr_init,这个函数必须在pthread_create函数之前调用。之后须用pthread_attr_destroy函数来释放资源。线程属性主要包括如下属性:作用域(scope)、栈尺寸(stack size)、栈地址(stack address)、优先级(priority)、分离的状态(detached state

2014-08-28 20:15:18 348

原创 SQLite的使用与常用API

/*************************************************************************************************************************************一、SQLite3自带命令(以"."开头,不需要逗号结束)1  .separator ***   //更改列分割线2  

2014-08-01 17:14:14 405

转载 Linux 之V4L2图像采集程序设计

视频采集基本步骤流程如下: 打开视频设备,设置视频设备属性及采集方式、视频数据处理,关闭视频设备,如下图所示:  一、打开视频设备打开视频设备非常简单,在V4L2中,视频设备被看做一个文件。使用open函数打开这个设备:1.     用非阻塞模式打开摄像头设备int fd;fd = open("/dev/video0", O_RDWR | O_NONBLOCK)

2014-03-14 17:14:48 845

转载 移植USB无线网卡到 mini2440

开发板:mini244内核版本:2.6.32.2交叉编译器:arm-linux-gcc-4.4.3无线网卡:TL-wn721N无线网卡芯片:rtl8192cuTL-wn721N 驱动源码包:RTL8192CURTL8192xC_USB_linux_v3.4.4_4749.20121105 .zip 步奏:准备好usb无线网卡,确定网卡芯片所用的驱动源码包(这里是RT

2014-03-13 19:28:33 639

转载 图的存储结构及遍历算法

一、图的存储结构1.1 邻接矩阵    图的邻接矩阵存储方式是用两个数组来表示图。一个一维数组存储图中顶点信息,一个二维数组(邻接矩阵)存储图中的边或弧的信息。    设图G有n个顶点,则邻接矩阵是一个n*n的方阵,定义为:        看一个实例,下图左就是一个无向图。        从上面可以看出,无向图的边数组是一

2014-03-09 16:59:44 4203

原创 二叉树及其遍历算法

二叉树:任一节点的子节点个数最多2个,且子节点的顺序不能更改。二叉树的存储方式分为:(1)连续存储    (2)链式存储:每个节点可以分为三部分:数据域、左指针域、有指针域。二叉树的遍历算法:(1)先序遍历:先访问根节点,再访问左子树,后访问右子树(根—>左—>右)。    (2)中序遍历:先访问左子树,再访问根节点,后访问右子树(左—>根—>右)。  在每一个二叉树单元中,始

2014-03-07 22:20:13 508

转载 递归算法

递归算法详解分类: 算法详解2013-04-06 18:25 581人阅读 评论(0) 收藏 举报算法                                                                                 递归算法        C语言通过运行时堆栈来支持递归的调用,在我们刚接触递归的时候

2014-03-06 14:57:16 712

转载 linux网络编程--TCP/IP网络编程中socket的行为

熟练掌握Linux下的TCP/IP网络编程,至少有三个层面的知识需要熟悉:1. TCP/IP协议(如连接的建立和终止、重传和确认、滑动窗口和拥塞控制等等)2. Socket I/O系统调用(重点如read/write),这是TCP/IP协议在应用层表现出来的行为。3. 编写Performant, Scalable的服务器程序。包括多线程、IO Multiplexing、

2014-03-03 16:10:02 462

空空如也

空空如也

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

TA关注的人

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