易截截图软件、单文件、免安装、纯绿色、仅160KB

Linux内核以及驱动技术—简单

无论是VC还是VB,还是C#,还是JSP PHP等等语言,在学习他们之前总是先来一个HELLO
WORLD的例子,这个好像成了我们程序入门的必经之路。所以在驱动程序的学习上,也离不开这个步骤。但是驱动程序的开发是运行在内核空间的,而应用程序
是运行在用户空间的,所以驱动程序的开发盒调试和应用程序的开发都有很大的区别。对于这个hello world的程序我也化了不少时间才搞清楚。
 
 
驱动程序作为系统内核的一部分,它工作在核心态,而应用程序工作在用户态。也就是说,不能直接通过指针,把用户空间的数据地址传递给内核(因为MMU映射
的地址根本不一样)。要想在应用程序和驱动程序之间传递数据(指针),就需要经过转换。把用户态“看到”的空间地址转换成内核态可访问的地址。
Linux系统提供了一系列方便的函数实现这种转换,如get_user、put_user、copy_from_user、copy_to_user等,它们自己负责访问权限的检查,使用时,不需要关系更多的问题。
 
 
Linux内核把驱动程序划分为3种类型:字符设备、块设备和网络设备。字符设备和块设备可以像文件一样被访问。它们的主要区别不在于能否seek,而是
在于系统对于这两种类型设备的管理方式。应用程序对于字符设备的每一个I/O操作,都会直接传递给系统内核对应的驱动程序;而应用程序对于块设备的操作,
要经过系统的缓冲区管理,间接传递给驱动程序处理。块设备的这种管理方式是为存储提供优化的;而字符设备的管理方式是为操作提供优化的。

于网络设备,它在Linux系统中是一类比较特殊的设备它不像字符设备或块设备那样通过对应的设备文件节点去访问,内核也不再通过read和write等
调用去访问网络设备。Linux的网络系统主要是基于BSD
UNIX的套接字机制,在系统和驱动程序之间有专门的数据结构进行数据传输,系统支持对数据发送和数据接收缓存,提供流量控制机制,提供更多的协议支持。
    在linux系统中,驱动程序都做成模块的形式,也就是module。简单的说,一个模块提供一个功能,这些模块是可以按照需要随时装入内核空间和从内核空间卸载的。因此,内核模块是为了给内核动态增减功能而设计的,并不仅仅是限于驱动程序。
    因为内核模块需要加载到内核空间,所以其程序的编写与一般应用程序不同,在里面再也找不到类似main()这样的入口函数,下面对应函数相应的源代码hello.c,分析一个驱动模块的写法。
#ifndef __KERNEL__


相关文档:

linux下写程序检测ip冲突(ARP)

原理其实很简单,那就是广播一个arp包,然后recv,如果没有数据(这里要设置延时),那么说明这个ip是可用的,否则就检测这个数据是否为回复我们发出的arp的应答包.如果是则证明ip已被使用,否则继续等待.
这里可以看下busybox的dhcp中的检测程序。
networking/udhcp/arpping.c
C代码
/* vi: set sw=4 ......

嵌入式linux系统与主机通过串口传输文件

嵌入式linux系统与主机通过串口传输文件
     我想如果要从PC机下载东西到开发板的嵌入式linux系统里面,很多人首先会想到用tftp sftp等网络工具从网口下载。但如果网络用不了,只能通过串口下载怎么办呢?这个时候有两个工具能帮到你:一个是zmrx、zmtx,另外一个是lsz、lrz。个人觉得zmrx/zmtx没有l ......

Linux音频编程指南

虽然目前Linux的优势主要体现在网络服务方面,但事实上同样也有着非常丰富的媒体功能,本文就是以多媒体应用中最基本的声音为对象,介绍如何在Linux平台下开发实际的音频应用程序,同时还给出了一些常用的音频编程框架。
一、数字音频
音频信号是一种连续变化的模拟信号,但计算机只能处理和记录二进制的数字信号,由自然 ......

Linux内核设备模型(5)

译者:郭少悲
2009/12/02
原文:linux/Documentation/driver-model/device.txt
基本的设备数据结构
~~~~~~~~~~~~~~~~~~
struct device {
        struct list_head g_list;
        struct list_head node;
      ......

Linux桌面占有率为何如此波动?






<!--
@page { margin: 2cm }
P { margin-bottom: 0.21cm }
-->
         一般人总是认为,
Linux
用户是不会轻易地倒向
Windows
一边的。但是,实际情况让你大跌眼镜。
 
       大家知道,网站
www.w3c ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号