自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

小破猴的专栏

Erin is running

  • 博客(30)
  • 资源 (1)
  • 收藏
  • 关注

转载 Linux驱动编程 step-by-step (八)

阻塞型字符设备驱动前面说到了 如何实现read write 等操作,但如果设备缓冲已满,现在想而用户此时又想写入设备,此请求就无法立即执行,那怎么办呢?第一种情况是:驱动程序想用户返回请求失败的信息。第二种情况是:使调用进程阻塞等待设备可以被操作。而用户更希望自己选择在请求无法满足时候如何操作,所以在用户空间有了O_NONBLOCK标志在打开设备的时候如果用户指定了此标志(

2011-11-26 21:55:17 349

转载 Linux驱动编程 step-by-step (七)

并发 竞态 (信号量与自旋锁)代码传至并发竞态控制并发进程 导致竞态的一个例子前面所述的字符驱动都是没有考虑并发竟态的情况,想象一下一个进程去读一个字符设备,另一个进程在同一时间向这个设备写入(完全有这种情况)原来设备中存有 A B C D 要想设备写入1 2 3 4 每次读写一个字节t1t2t3t4t5t6t7t8

2011-11-26 21:54:01 409

转载 Linux驱动编程 step-by-step (六)

说点上节没有讲完的话题用户地址检测 简单模块调试 以及一些杂项检测用户空间地址的有效性上一节中提到在read write时候要检测用户空间传递的参数地址是否是有效地址,有的内核函数会自行检测,但是在调用轻量级的内核函数时候,就可能不去检测用户空间的地址是否有效,如果此时用户无传递一个无效地址,而内核函数去操作了它,这时棘手的问题出现了,轻则内核oops 关机重启就OK了,在特别严重

2011-11-26 21:52:21 373

转载 Linux驱动编程 step-by-step (五)

主要的文件操作方法实现文件操作函数有很多的操作接口,驱动编程需要实现这些接口,在用户编程时候系统调用时候会调用到这些操作view plaincopy to clipboardprint?struct file_operations {      ...      loff_t (*llseek) (struct file *, loff_t, int);

2011-11-26 21:50:23 264

转载 Linux驱动编程 step-by-step (四)

似乎每一章介绍的内容比较少,但学习是一个循序渐进的过程,不在于一天学多少,重要的一天能真正的学懂多少,所以我主张一步一步来,从多个渠道去学习知识,实现互补。本节测试代码传到此处了:char_step1 大家可以下载测试一下。字符设备的注册与设备节点的自动创建cdev 结构内核内部使用struct cdev来表示一个字符设备struct cdev {    struc

2011-11-26 21:48:33 306

转载 Linux驱动编程 step-by-step (三)

字符设备中 重要的数据结构大部分字符驱动设计三个重要的数据结构struct file_operationsstruct filestruct inode 一、文件操作           在之前的一篇文章中已经有介绍了如何去生情字符设备设备号,但是没有做任何的工作,也就只能写一个不能工作的字符设备;struct file_operations 结构域用来

2011-11-26 21:44:44 286

转载 Linux驱动编程 step-by-step (二)

简单字符设备驱动1、主次设备号主设备号标识设备连接的的驱动,此设备好由内核使用,标识在相应驱动下得对应的设备在linux中设备号是一个32位的dev_t类型typedef __u32    __kernel_dev_t;typedef __kernel_dev_t    dev_t;crw------- 1 root  root  10, 1 Apr 1

2011-11-26 21:43:42 305

转载 Linux驱动编程 step-by-step (一)

第三次看了LDD3了(虽然现在已经是kernel3.0但从这本书商还是能学到很多) 每次都有一些收获 现在终于能够些一些代码了驱动程序的作用:简单来说 驱动程序就是使计算机与设备通信的特殊的代码,在作单片机时候(无OS)我们自己定义接口及自定义的结构来操作相关硬件,而在有OS的模式下我们操作的硬件是去实现对应的接口(这些接口是已定义好的,我们需要实现这些接口)而无需自己定义接口,这样既能正

2011-11-26 21:41:39 323

转载 剖析Windows消息处理机制

1.窗口   Windows程序是由一系列的窗口构成的,每个窗口都有自己的窗口过程,窗口过程就是一个拥有有固定 Signature 的 C函数,具体格式如下:   LRESULT CALLBACK WindowProc(HWND hwnd,       UINT uMsg,       WPARAM wParam,       LPARAM lParam   );

2011-11-14 20:30:20 313

转载 TCP/IP三次握手详解

TCP握手协议  在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。  第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;  第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;

2011-11-14 20:20:43 338

转载 利用内存映射文件处理大文件(转载)(修改程序版)

----原来作者的程序有些问题,现在文章中的程序已经修改正确---VC中用内存映射文件处理大文件 摘要:本文通过内存映射文件的使用来对大尺寸文件进行访问操作,同时也对内存映射文件的相关概念和一般编程过程作了较为详细的介绍。  关键词:内存映射文件;大文件处理;分配粒度  引言  文件操作是应用程序最为基本的功能之一,Win32 API和MFC均提供有支持文件处理

2011-11-14 20:17:44 855 1

转载 VPC上linux(Radhat9.0)通过smb服务共享windows文件

VPC上linux(Radhat9.0)通过smb服务共享windows文件(此文系转自http://blog.csdn.net/jiumingmao11982/archive/2007/03/02/1519680.aspx红色部分和图片为weiloujushi所加

2011-09-23 21:18:51 775

转载 vpc中redhat 9花屏解决方法

是由于VPC不支持Linux的24色,只用16色,而Linux默认的是24色1,重启虚拟机VPC,在出现grub后,在安装的系统上面按“e”,然后出现grub的配置文件,按键盘移动光标到第二行“Ker……”,再按“e”,然后在这一行的结尾加上:空格 single,然后按“b”

2011-09-22 15:03:23 648

转载 BIOS中断

BIOS中断:1、显示服务(Video Service——INT 10H) 00H —设置显示器模式0CH —写图形象素01H —设置光标形状0DH —读图形象素02H —设置光标位置0EH —在Teletype模式下显示字符03H —读取光标信息0FH —读

2011-09-15 17:52:33 305

转载 一致与非一致性代码段

之所以出现这个定义是因为系统要安全:内核要和用户程序分开..内核一定要安全.不能被用户程序干涉.但是有时候用户程序也需要读取内核的某些数据,怎么办呢?于是os将内核程序开辟一些可以供用用户程序访问的段.但是不允许用户程序写入数据.1.内核不用知道用户程序的数据.内核不

2011-08-31 20:39:44 300

转载 话说智能卡的文件种类

  按照ISO7816-4的定义,智能卡的数据存储也是按照文件的方式进行的。这里所说的数据多指可以通过终端进行访问的数据,一些智能卡的内部数据(不能通过终端进行访问的)究竟采取什么样的存储方式完全取决于智能卡OS的设计者。   从大类来分,智能卡的文件类型分为专用文件DF(Dedicated File)和基本文件EF(Elementary File)。其中DF的作用类似于计算机系统中的目录

2011-06-16 22:13:00 651

转载 签名密钥和加密密钥

由于公钥所具有的两种不同用途,在实际应用中,需要分别配置用于数字签名/验证的密钥对和用于数据加密/解密的密钥对,这里分别称为签名密钥对和加密密钥对。这两对密钥由于用途不同,因此,对于密钥的管理也就有着不同的要求。(1)签名密钥对的管理签名密钥对由签名私钥和验证公钥组成。签名私钥是发送方身份的证明,具有日常生活中公章、私章的效力。为保证其惟一性,签名私钥绝对不能够做备份和

2011-06-12 02:05:00 2554

转载 ARM指令集

一、ARM 微处理器的指令的分类与格式   ARM微处理器的指令集是加载/存储型的,也即指令集仅能处理寄存器中的数据,而且处理结果都要放回寄存器中,而对系统存储器的访问则需要通过专门的加载/存储指令来完成。ARM微处理器的指令集可以分为跳转指令、数据处理指令、程序状态寄存器(PSR)处理指令、加载/存储指令、协处理器指令和异常产生指令六大类。下面是ARM微处理器的基本指令。助记符    指

2011-06-07 23:16:00 588

转载 ARM的Load/Store指令

ARM的数据存取指令Load/Store是唯一用于寄存器和存储器之间进行数据传送的指令。ARM指令集中有三种基本的数据存取指令: 1 单寄存器的存取指令(LDR,STR) 2 多寄存器存取指令(LDM,STM) 3 单寄存器交换指令(SWP) 具体可以演化成:   LDR  字数据加载指令   LDRB  字节数据加载指令   LDRSB  有符号字节数据加载指令   LDRH  半字数据加载

2011-06-07 22:53:00 6002

转载 深入浅出大端小端

<br />文章一: <br />端模式(Endian)的这个词出自Jonathan Swift书写的《格列佛游记》。这本书根据将鸡蛋敲开的方法不同将所有的人分为两类,从圆头开始将鸡蛋敲开的人被归为Big Endian,从尖头开始将鸡蛋敲开的人被归为Littile Endian。小人国的内战就源于吃鸡蛋时是究竟从大头(Big-Endian)敲开还是从小头(Little-Endian)敲开。在计算机业Big Endian和Little Endian也几乎引起一场战争。在计算机业界,Endian表示数据在存储器

2011-04-19 10:32:00 394

转载 数据公钥加密和认证中的私钥公钥

   加密和认证  首先我们需要区分加密和认证这两个基本概念。  加密是将数据资料加密,使得非法用户即使取得加密过的资料,也无法获取正确的资料内容,所以数据加密可以保护数据,防止监听攻击。其重点在于数据的安全性。身份认证是用来判断某个身份的真实性,确认身份后,系统才可以依不同的身份给予不同的权限。其重点在于用户的真实性。两者的侧重点是不同的。  公钥和私钥  其次我们还要了解公钥和私钥的概念和作用。  在现代密码体制中加密和解密是采用不同的密钥(公开密钥),也就是非对称密钥密码系统,每个通信方均需要两个

2011-04-14 23:57:00 377

转载 密码学基础

<br />本文简要地介绍了现代密码学的一些基础理论,供参考。<br />  1 加密技术概述<br />  一个密码系统的安全性只在于密钥的保密性,而不在算法的保密性。<br />  对纯数据的加密的确是这样。对于你不愿意让他看到这些数据(数据的明文)的人,用可靠的加密算法,只要破解者不知道被加密数据的密码,他就不可解读这些数据。<br />  但是,软件的加密不同于数据的加密,它只能是“隐藏”。不管你愿意不愿意让他(合法用户,或 Cracker)看见这些数据(软件的明文),软件最终总要在机器上运行,对机

2011-04-14 20:09:00 543

转载 USB 基本知识(五)-----高速USB设计PCB布线要求(partial)

1-2 is omited, for more detail please refer to www.usb.org........3 Layout Guidelines3.1 General Routing and PlacementUse the following general routing and placement guidelines when laying out a new design. Theseguidelines will help to minimize signal qual

2011-04-11 11:39:00 2842

转载 USB 基本知识(四)----- usb全接触之usb function----usb传输(2)

简介:本节介绍usb full speed function的四种传输类型。上节中我们了解到了usb host 与usb function 之间采用的是一种“非对称”的传输,也就是说,无论usb接受数据还是发送数据,都是由usb host首先发起。即传输的第一个packet总是由usb host发出的。这个packet将声明本次即将进行的数据传输方向,数据传输地址和数据传输类型。 1 控制式传输(Control Transfers): 或许你已经注意到了,一个usb host端口并不是仅仅支持一个Usb f

2011-04-11 11:38:00 858

原创 USB 基本知识(三)----- usb全接触之usb function----usb传输(1)

<br />简介:从本节开始,我们将介绍usb的传输机制。这节先介绍usb现有传输方式的背景知识,做为对下节将要展开的四种传输类型,描述符,等相关知识的一个导引。<br />2。usb传输。<br />我们在上一节中了解到了usb的“packet”的感念,了解到了usb传送一个packet总是以sync开始,以eop结束,这个称为delimiter,即标记packet的始末。有了packet,我们就可以在usb总线上传输数据了。但是这还不够,比如数据传送方向,即传回usb主机还是传下usb从机,数据传送的地

2011-04-11 11:36:00 1059

转载 USB基本知识(二)

<br />usb作为一种串行接口,应用日益广泛。如同每个工程设计人员必须掌握I2C,RS232这些接口一样,我们也必须掌握usb.<br />但是usb的接口协议实在有点费解,linux uhci驱动作者之一Alan Stern曾经就说过“The USB documentation is downright evil. Most    of it is just crap, written by a committee. You're better off ignoring most of it ”。<b

2011-04-11 11:34:00 693

转载 USB基本知识(一)

<br />USB的重要关键字:<br />1、端点:位于USB设备或主机上的一个数据缓冲区,用来存放和发送USB的各种数据,每一个端点都有惟一的确定地址,有不同的传输特性(如输入端点、输出端点、配置端点、批量传输端点)<br />2、帧:时间概念,在USB中,一帧就是1MS,它是一个独立的单元,包含了一系列总线动作,USB将1帧分为好几份,每一份中是一个USB的传输动作。<br />3、上行、下行:设备到主机为上行,主机到设备为下行<br /> <br />下面以一问一答的形式开始学习吧。<br />问题

2011-04-11 11:31:00 414

转载 逻辑地址,线性地址,物理地址

段页式内存管理中,逻辑地址,线性地址,物理地址的区别  逻辑地址(Logical Address) 是指由程序产生的与段相关的偏移地址部分。例如,你在进行C语言指针编程中,可以读取指针变量本身值(&操作),实际上这个值就是逻辑地址,它是相对于你当前进程数据段的地址,不和绝对物理地址相干。只有在Intel实模式下,逻辑地址才和物理地址相等(因为实模式没有分段或分页机制,Cpu不进行自动地址转换);逻

2007-12-20 15:42:00 872

转载 X86,ARM的虚拟地址转换

I. 什么是MMU,MMU的作用MMU是Memory Management Unit的缩写. 针对各种CPU, MMU是个可选的配件. MMU负责的是虚拟地址  物理地址的转换. 提供硬件机制的内存访问授权. 现代的多用户多进程操作系统, 需要MMU, 才能达到每个用户进程都拥有自己的独立的地址空间的目标. 使用MMU, OS划分出一段地址区域, 在这块地址区域中, 每个进程看到的内容都不一定

2007-05-23 11:47:00 624

转载 编写可靠的Windows CE代码

编写可靠的本机代码 2003年1月 Nat Frampton(请参阅 Nat 的 eMVP 传记)Real Time Development Corp.Microsoft Embedded MVP 主管适用于:    Microsoft(r) Windows(r) CE .NET    Microsoft(r) eMbedded Visual C++(r)    Microsoft(r

2007-05-23 11:44:00 1799

win32串口编程原理及代码

在工业控制中,工控机(一般都基于Windows平台)经常需要与智能仪表通过串口进行通信。这里提供了win32串口编程原理及代码

2011-02-24

空空如也

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

TA关注的人

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