自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(18)
  • 资源 (19)
  • 收藏
  • 关注

转载 Linux设备驱动六 (1)等待队列

本文转自 reille博客: http://velep.com/archives/815.html等待队列在Linux内核中有着举足轻重的作用,很多linux驱动都或多或少涉及到了等待队列。因此,对于linux内核及驱动开发者来说,掌握等待队列是必须课之一。 Linux内核的等待队列是以双循环链表为基础数据结构,与进程调度机制紧密结合,能够用于实现核心的异步事件通知机制。它有两种数

2016-12-30 12:09:53 920

转载 Linux设备驱动五 (3)platform设备驱动

一、什么是paltform总线一个现实的linux设备和驱动通常都需要挂接在一种总线上,比较常见的总线有USB、PCI总线等。但是,在嵌入式系统里面,SoC系统中集成的独立的外设控制器、挂接在SoC内存空间的外设却不依附与此类总线。基于这样的背景下,2.6内核加入了platform虚拟总线。platform机制将设备本身的资源注册进内核,有内核统一管理,在驱动程序使用这些资源时

2016-12-29 21:08:02 570

转载 Linux设备驱动五 (2)设备模型的分层与面向对象

一、设备管理的分层回想一下之前的设备和驱动函数注册时,它们是自己指定所属的总线。但是,内核开发人员觉得,这样的方法不好,应该由总线来提供设备和驱动的注册函数。当设备和驱动需要注册到指定总线时,那就必须使用该总线为设备和驱动提供的注册函数。所以,将上一节的bus.c修改如下:/*8th_devModule_3/1st/bus.c*/21 /*总

2016-12-29 21:06:23 277

转载 Linux设备驱动五 (1)总线、设备和驱动

一、sysfs文件系统设备模型是2.6内核新引入的特征。设备模型提供了一个独立的机制专门来表示设备,并描述其在系统中的拓扑结构。在2.4内核中,设备的信息放在/proc中。而在2.6内核,内核把设备相关的信息归类在新增加sysfs文件系统,并将它挂载到/sys目录中,把设备信息归类的同时,让用户可以通过用户空间访问。接下来简单介绍一些sys中

2016-12-28 21:42:58 523

转载 Linux设备驱动四 (4)中断下半部分工作队列

1、工作队列的使用按惯例,在介绍工作队列如何实现之前,先说说如何使用工作队列实现下半部。步骤一、定义并初始化工作队列:创建工作队列函数:struct workqueue_struct *create_workqueue(const char *name)函数传参是内核中工作队列的名称,返回值是workqueue_struc

2016-12-28 15:06:13 323

转载 Linux设备驱动四 (2)中断下半部分 软中断

二、软中断软中断一般很少用于实现下半部,但tasklet是通过软中断实现的,所以先介绍软中断。字面理解,软中断就是软件实现的异步中断,它的优先级比硬中断低,但比普通进程优先级高,同时,它和硬中断一样不能休眠。软中断是在编译时候静态分配的,要用软中断必须修改内核代码。在kernel/softirq.c中有这样的一个数组:51 sta

2016-12-28 14:59:34 770

转载 Linux设备驱动四 (3)中断下半部分tasklet

先看一下如何使用tasklet,用完之后再看内核中是如何实现的:步骤一、编写tasklet处理函数,定义并初始化结构体tasklet_struct:内核中是通过tasklet_struct来维护一个tasklet,介绍一下tasklet_struct里面的两个成员:/*linux/interrupt.h*/319 struct tasklet_struct3

2016-12-28 14:58:35 422

转载 Linux设备驱动四 (1)中断上半部分

1、注册中断处理函数        int request_irq(unsigned int irq, irq_handler_t handler,unsigned long irqflags, const char *devname, void *dev_id)        使用:将中断号irq与中断处理函数handler对应        参数:        irq

2016-12-28 14:52:32 347

转载 Linux设备驱动三 (1)自旋锁,信号量

2.12 自旋锁内核中是有很多的锁,自旋锁是其中的一种。它的作用在于,只要代码在进入临界区前加上锁,在进程还没出临界区之前,别的进程(包括自身处理器和别的处理器上的进程)都不能进入临界区。自旋锁的可以这样理解,每个进程进入上锁的临界区前,必须先获得锁,否则在获得锁这条代码上查询(注意,不是休眠,是忙等待,循环执行指令),知道临界区里面的进程走出临界区,别的进程获得锁后进入临界区。有且只有一

2016-12-28 11:35:07 389

转载 Linux设备驱动二 (5)单CPU下的竞态和并发

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx经过上面几节的铺垫,终于要来重点了,由于内核的进程调度和中断(中断还没讲,不过这里会大概的说说),它们都会进入内核共用内核的资源。所以,只要一不留神,自己进程的资源就会在不经意的情况下被别的进程修改了。这节将介绍并讨论如

2016-12-28 11:19:22 275

转载 Linux设备驱动二 (4)上下文切换和抢占

一、什么是上下文切换上下文切换,是指从一个可执行的进程切换到另外一个可执行的进程。在linux内核中,上下文的切换有两种方式:第一种是进程主动让出CPU,这样的操作成为“让步”。第二种是由内核调度程序决定进程运行时间,在在运行时间结束(如时间片耗尽)或者需要切换高优先级进程时强制挂起进程,这样的操作叫“抢占”。抢占是我一直误解的概念,我一直以为抢占是一个进程强制切换到另

2016-12-28 11:15:43 347

转载 Linux设备驱动二 (3)进程调度相关概念

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx进程的调度就是指进程间的切换,进程调度的知识其实我也不太清除,我查找的资料有些说法并不一致,所以我只能说一下一些我的理解。如有错误或不足,望指正。xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

2016-12-28 11:13:34 276

转载 Linux设备驱动二 (2)进程相关的概念

一、什么是进程简单的说,进程就是正在运行的程序,一个程序可以同时有多个进程。学过C语言都知道,程序运行时并不是只有代码,还包含其他的资源,如打开的文件,信号,全局变量等等。我在《操作系统原理》中看过一个很生动很深刻的例子:一个人对照着菜谱做菜。在这例子中,人就是内核,菜谱就是程序,做菜的过程就是进程,而菜、锅就是这个进程的资源。内核为线程提供了两种技术:虚拟处理器和虚拟

2016-12-28 11:11:41 284

原创 Linux设备驱动二 (1)内核传参

module_param函数使用方法:        例:module_param(name, type, perm)        name:内核参数的名称,自己定义;        type:内核参数的类型,常见的类型byte、short、int、long、ulong、bool 、charp(字符指针);        perm:内核参数的权限S_IRUGO(对模块参数具有读权

2016-12-28 11:03:21 298

原创 Linux设备驱动一 (3)异步通知

异步通知,就是让驱动去告诉应用,底层硬件发生了什么事,而不是应用主动地去查询驱动,这对系统的性能有一个很大的提升。   应用层次        1、要用fcntl对此文件进行设置,            fcntl(fd, F_SETOWN, getpid());  设置接收SIGIO信号的进程组 getpid()获取当前进程号            Oflags = fc

2016-12-27 22:35:58 327

原创 Linux设备驱动一 (2)poll

poll函数原型:        unsigned int(*poll)(struct file *filp, struct poll_table *wait);        //第一个参数为file结构体指针,第二个参数为轮询表指针。        这个函数应该进行以下两项工作:        1)对可能引起设备文件状态变化的等待队列调用poll_wait()函数,将对应等

2016-12-27 16:50:00 429

原创 Linux设备驱动一 (1)阻塞型IO及非阻塞型IO

阻塞是指没有获得资源则挂起进程,直到获得资源为止。被挂起的进程进入休眠状态,被调度器的运行队列移走,直到等待条件被满足。非阻塞是不能进行设备操作时不挂起,或放弃,或反复查询,直到可以进行操作为止。驱动程序常需要这种能力:当应用程序进行read(),write()等系统调用时,若设备的资源不能获取,而用户又希望以阻塞的方式访问设备,驱动程序应该在设备驱动程序的xxx_read(), xxx_

2016-12-27 15:39:59 573

原创 secureCRT 设置背景色等操作

1、配置颜色Options(选项) -> Global Options(全局选项) -> General( 常规) -> Default Session(默认的会话设置)-> Edit Default Settings(编辑默认的会话设置)-> Terminal(终端) -> Emulation(仿真)      -> Terminal(终端)中选择Linux并勾选ANSI C

2016-12-27 14:51:47 19451 1

STC与STM单片机GPIO模拟I2C驱动.rar

STC15W4K48S4 STM32F103 两款单片机GPIO模拟IIC的驱动,

2019-09-03

BST-BMP180-DS000-07.pdf

BST-BMP180-DS000-07.pdf英文资料

2016-03-02

88E6061_65原理图allegro版及PDF版原理图 新

88E6061_65原理图allegro版及PDF版原理图

2016-02-26

RTD2271CW_RTD2281CW_Spec_V100_20110119 _2_.pdf

RTD2271CW_RTD2281CW_Spec_V100_20110119 _2_.pdf 芯片说明书

2016-02-26

RTL8211C(L)_DataSheet_1.5芯片说明书

RTL8211C(L)_DataSheet_1.5芯片说明书 相关原理图查看我的其他资源

2016-02-26

RTL8211 原理图 PDF版

RTL8211 原理图 PDF版

2016-02-26

MST705源代码Keil版.zip

MST705源代码Keil版 液晶屏其他资料搜索我的资源

2016-02-26

MST705原理图And PCBDXP版本

MST705原理图And PCBDXP版本

2016-02-26

晶采液晶屏规格书 型号AM-1024600K3TMQW-T18H

晶采液晶屏规格书 型号AM-1024600K3TMQW-T18H.pdf

2016-02-26

88E6061_65原理图allegro版及PDF版原理图

88E6061_65原理图allegro版及PDF版原理图

2016-02-26

88E6085-芯片说明英文版.pdf

88E6085-芯片说明英文版.pdf 相关原理图搜索我的其他资源

2016-02-26

88E6060-芯片说明英文版.pdf

88E6060-芯片说明英文版.pdf 原理图可以搜索我的其他资源

2016-02-26

中华映管液晶屏资料 CLAA070NJ05CW_V0.0

中华映管液晶屏资料 CLAA070NJ05CW_V0.0

2016-02-26

晶采液晶屏资料 型号AM-1280800P3TZQW-10H

晶采液晶屏资料 型号AM-1280800P3TZQW-10H

2016-02-26

晶采液晶屏规格书 型号AM-1024600K7TMQW-T00H

晶采液晶屏规格书 型号AM-1024600K7TMQW-T00H

2016-02-26

STM32F051x 中文用户手册

STM32F051x 中文用户手册,在官网上下载的,不想在这下载的可以上官网下载

2015-07-09

Linux操作系统原理与应用--陈莉君 pdf

Linux操作系统原理与应用--陈莉君 pdf

2015-06-03

Allegro 菜单详解

Allegro 菜单详解 Allegro 菜单详解

2015-06-01

Allegro PCB 模块复用

Allegro PCB 模块复用 避免大量的重复性工作

2015-06-01

空空如也

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

TA关注的人

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