
linux
文章平均质量分 77
jw212
这个作者很懒,什么都没留下…
展开
-
VT6656移植
<br />VT6656 移植 收获很大(2010-3-18) 手头上有一个VT6656的无线网卡模块,可是tq2440却只支持TP系列的网卡。上帝,需要移植。开始以为很容易。可到via公司网站下来了最新的1.20的vt6656 linux for x86驱动.简单进行交叉编译,出奇的顺利的通过。接着下载到开发板,可是加载驱动模块的时候老是把错,segment fault。很是郁闷。一点头绪都没有。 网上到处都是arm-wince 的vt6656驱动,可闭口不提arm-linux的驱动。郁闷。 今天突然在网转载 2011-01-28 09:39:00 · 2222 阅读 · 0 评论 -
Linux设备驱动学习笔记
这次的主要内容:1.linux设备驱动程序的作用2.内核模块和用户空间程序的区别3.Hello world程序. 4.Makefile文件5.编译,加载内核模块6.Other tips7.好书和网站1.linux设备驱动程序的作用简单的说,驱动程序告诉了我们可以提供了那些能力,但转载 2011-07-20 16:59:13 · 761 阅读 · 0 评论 -
网络数据包收发流程(一):从驱动到协议栈
网络数据包收发流程(一):从驱动到协议栈早就想整理网络数据包收发流程了,一直太懒没动笔。今天下决心写了一、硬件环境intel82546:PHY与MAC集成在一起的PCI网卡芯片,很强大bcm5461: PHY芯片,与之对应的MAC是TSEC转载 2011-09-01 10:32:46 · 7179 阅读 · 0 评论 -
网络数据包收发流程(三):e1000网卡和DMA
一、硬件布局每个网卡(MAC)都有自己的专用DMA Engine,如上图的 TSEC 和 e1000 网卡intel82546。上图中的红色线就是以太网数据流,DMA与DDR打交道需要其他模块的协助,如TSEC,PCI controller以太网数据在 TSECD转载 2011-09-01 10:37:19 · 8441 阅读 · 4 评论 -
raw socket编程例子
转自:http://bbs.chinaunix.net/viewthread.php?tid=876233&extra=page%3D3前几天看了看>第一卷,为了加深理解,便写了几个简单的程序,最近好忙,但是又怕忘记前面所学的知识,就粗糙的整理了一下,贴出来,希望能给初学者以转载 2011-09-01 18:47:33 · 2503 阅读 · 1 评论 -
网络数据包收发流程(二):不配置NAPI的情况
上一篇讲的是内核配置成NAPI的情况,那也是绝大多数内核使用的配置现在讲讲内核不配置成NAPI时的情况一、no NAPI 数据结构不配置NAPI的时候,网络设备不使用自己的napi_struct结构,所有网络设备驱动都使用同一个napi_struct,即c转载 2011-09-01 10:34:37 · 3736 阅读 · 0 评论 -
网络数据包收发流程(四):协议栈之packet_type
进入函数netif_receive_skb()后,skb正式开始协议栈之旅。先上图,协议栈大致过程如下所示:跟OSI七层模型不同,linux根据包结构对网络进行分层。比如,arp头和ip头都是紧跟在以太网头后面的,所以在linux协议栈中arp和ip地位相同(如上转载 2011-09-01 10:38:35 · 10113 阅读 · 2 评论 -
ERRNO错误代码
ERRNO错误代码 #ifndef _ASM_GENERIC_ERRNO_H#define _ASM_GENERIC_ERRNO_H#define EPERM 1 #define ENOENT 2翻译 2011-09-02 09:46:57 · 1337 阅读 · 0 评论 -
jiffies溢出与时间先后比较 + linux的HZ, Tick, Jiffies
Linux核心几个重要跟时间有关的名词或变数,底下将介绍HZ、tick与jiffies。(1)HZLinux核心每隔固定周期会发出timer interrupt (IRQ 0),HZ是用来定义每一秒有几次timer interrupts。举例来说,HZ为1000,代表每秒转载 2011-08-16 10:16:22 · 2791 阅读 · 0 评论 -
TCP/IP 通訊協定及網路架構研析
一、TCP/IP 整體架構概述二、利用 TCP/IP 傳送訊息 TCP 資料頭格式 IP 資料頭格式 Ethernet 資料頭格式三、IP 網路架構概述 IP 功能概述 IP 的定址方式 次級網路(Subnet)转载 2011-08-17 16:32:02 · 1139 阅读 · 0 评论 -
linux 实现简单定时器的功能
对于程序中需要定时去check某些变量或者function返回结果的功能,最早就是用最简单的sleep()的一行语句,虽然可以实现,但是需要主程序一直等待一段时间,无论是否提前有返回值。后面就想到可以用time()来实现相同的功能,和sleep不同的地方就是,如果check到原创 2011-08-19 18:08:42 · 1137 阅读 · 1 评论 -
“asm/semaphore.h: No such file or directory”
今天编译发现一个error: “asm/semaphore.h: No such file or directory” ,发现2.6.19和2.6.31对这个信号量声明并不相同[patch] include linux/semaphore.h for kernel 2.6原创 2011-08-19 16:02:34 · 8227 阅读 · 1 评论 -
驱动开发的一些错误解决方法
驱动开发的一些错误解决方法In file included from /linux-2.6.32/arch/arm/include/asm/timex.h:15,from include/linux/timex.h:转载 2011-08-19 16:04:19 · 7208 阅读 · 0 评论 -
socket编程——TCP/UDP数据传输
socket()——生成socket句柄#include ; #include ; int socket(int domain, int type, int protocol); domain : "AF_INET"type : SOCK_ST转载 2011-08-26 17:42:14 · 1822 阅读 · 0 评论 -
Linux网络编程一步一步学+基础
http://blogold.chinaunix.net/u1/48325/showart.php?id=413841·Linux网络编程基础(一)·Linux网络编程基础(二)·Linux网络编转载 2011-08-26 17:59:01 · 1414 阅读 · 0 评论 -
linux sock_raw原始套接字编程
sock_raw原始套接字编程可以接收到本机网卡上的数据帧或者数据包,对与监听网络的流量和分析是很有作用的.一共可以有3种方式创建这种socket1.socket(AF_INET, SOCK_RAW, IPPROTO_TCP|IPPROTO_UDP|IPPROTO_ICM转载 2011-08-26 18:05:15 · 854 阅读 · 0 评论 -
linux多进程和多线程分析之一
多线程 or 多进程?中级 | 2010-08-16 16:38 | 分类:①Unix/Linux、服务器技术 ②评比 | 2,638 次阅读作者:diaoyf | 文章来源:http://programmerdigest.cn在U转载 2011-08-30 10:44:10 · 5340 阅读 · 1 评论 -
kbuild系统-编译到内核和编译成模块的区别
代码编译到内核和编译成模块在代码中有什么区别呢? 从模块的代码中看是一样的。入口函数都是MODULE_init(fun),但是代码中的条件编译会使宏module_init()在编译到内核和编译成模块的情况下替换成不同的代码。 include/linux/init.h中可知转载 2011-07-20 16:37:16 · 621 阅读 · 0 评论 -
谈EXPORT_SYMBOL使用
EXPORT_SYMBOL只出现在2.6内核中,在2.4内核默认的非static 函数和变量都会自动导入到kernel 空间的, 都不用EXPORT_SYMBOL() 做标记的。2.6就必须用EXPORT_SYMBOL() 来导出来(因为2.6默认不到处所有的符号)。 1、EXP转载 2011-07-21 19:42:15 · 645 阅读 · 0 评论 -
linux udev详解
udev简介: 早期的linux的/dev目录下有一大堆设备文件,不管你的主机上是否有这些设备,相当于提供一个标准接口,比 如 /dev/sda 一般表示 SISC 盘第一块磁盘,但你主机上即使没有这种磁盘,/dev/sda还是存在。 于是,这就有个问题:/dev/下会有很多实际转载 2011-07-12 18:53:05 · 1004 阅读 · 0 评论 -
Linux 无线网卡驱动RT73 VT6656的移植
<br />http://blogold.chinaunix.net/u2/61797/showart_1946175.html<br /> <br />VT6656 driver for linux <br />1. download driver<br />wget http://www.viaarena.com/Driver/VT6656_Linux_src_v1.19_12_x86.zip<br /><br />2. unzip &&<br /> copy directory driver转载 2011-01-28 09:40:00 · 3045 阅读 · 0 评论 -
linux进程调度方法(SCHED_OTHER,SCHED_FIFO,SCHED_RR)
linux进程调度方法(SCHED_OTHER,SCHED_FIFO,SCHED_RR) linux内核的三种调度方法:1,SCHED_OTHER 分时调度策略,2,SCHED_FIFO实时调度策略,先到先服务3,SCHED_RR实时调度策略,时间片轮转 linux内核的三种调度方法:1,SCHED_OTHER 分时调度策略,2,SCHED_FIFO实时调度策略,先到先服务 3,SCHED_RR实时调度策略,时间片轮转 实时进程将得到优先调用,实时进程根据转载 2011-01-28 11:16:00 · 738 阅读 · 0 评论 -
Linux驱动程序开发学习步骤
<br />1. 学会写简单的makefile <br /> <br />2. 编一应用程序,可以用makefile跑起来 <br /> <br />3. 学会写驱动的makefile <br /> <br />4. 写一简单char驱动,makefile编译通过,可以insmod, lsmod, rmmod. 在驱动的init函数里打印hello world, insmod后应该能够通过dmesg看到输出。 <br /> <br />5. 写一完整驱动, 加上read, write, ioctl, pol转载 2011-02-16 14:07:00 · 564 阅读 · 0 评论 -
getopt
<br />getopt被用来解析命令行选项参数。就不用自己写东东处理argv了。<br />#include <unistd.h><br />extern char *optarg; //选项的参数指针<br />extern int optind, //下一次调用getopt的时,从optind存储的位置处重新开始检查选项。 <br />extern int opterr, //当opterr=0时,getopt不向stderr输出错误信息。<br />extern int optopt; //当命令行转载 2011-05-09 15:41:00 · 566 阅读 · 0 评论 -
如何看懂描述SNMP中MIB的ASN.1
<br /><br />一、介绍<br />Abstract Syntax Notation One (ASN.1)是一种独立于机器的描述语言,用于描述在网络上传递的消息<br />标准包括: <br />ISO 8824-1 | ITU-T X.680: Specification of basic notation, <br />ISO 8824-2 | ITU-T X.681: Information object specification, <br />ISO 8824-3 | ITU-T X.6转载 2011-05-13 11:49:00 · 1163 阅读 · 0 评论 -
Linux内核的同步机制
本文详细的介绍了Linux内核中的同步机制:原子操作、信号量、读写信号量和自旋锁的API,使用要求以及一些典型示例。转载 2011-05-18 14:44:00 · 512 阅读 · 0 评论 -
等待队列和异步信号
<br /> <br />DECLARE_WAIT_QUEUE_HEAD()的说明 <br /><br />(name) -- 生成一个等待队列头wait_queue_head_t,名字为name<br />-----------------------------------------------------------------<br />#define DECLARE_WAIT_QUEUE_HEAD (name) /<br />wait_queue_head_t name = __WAIT_QU转载 2011-05-18 14:58:00 · 813 阅读 · 1 评论 -
Linux定时器
struct--timer_list <--> 定时器(动态定时器/内核定时器)2007年08月04日 星期六 09:52struct timer_list<br />|-----------------------------------|<br />|struct list_head entry |<br />|unsigned long expires |<br />|void (*function)(unsigned long)|<br />|unsigned longdata |<br />|st转载 2011-05-18 15:20:00 · 894 阅读 · 0 评论 -
Linux环境进程间通信(五): 共享内存(上)
采用共享内存通信的一个显而易见的好处是效率高,因为进程可以直接读写内存,而不需要任何数据的拷贝。对于像管道和消息队列等通信方式,则需要在内核和用户空间进行四次的数据拷贝,而共享内存则只拷贝两次数据[1]:一次从输入文件到共享内存区,另一次从共享内存区到输出文件。实际上,进程之间在共享内存时,并不总是读写少量数据后就解除映射,有新的通信时,再重新建立共享内存区域。而是保持共享区域,直到通信完毕为止,这样,数据内容一直保存在共享内存中,并没有写回文件。共享内存中的内容往往是在解除映射时才写回文件的。因此,采用共转载 2011-05-05 10:18:00 · 699 阅读 · 0 评论 -
Linux环境进程间通信(五): 共享内存(下)
<br />系统调用mmap()通过映射一个普通文件实现共享内存。系统V则是通过映射特殊文件系统shm中的文件实现进程间的共享内存通信。也就是说,每个共享内存区域对应特殊文件系统shm中的一个文件(这是通过shmid_kernel结构联系起来的),后面还将阐述。<br />1、系统V共享内存原理<br />进程间需要共享的数据被放在一个叫做IPC共享内存区域的地方,所有需要访问该共享区域的进程都要把该共享区域映射到本进程的地址空间中去。系统V共享内存通过shmget获得或创建一个IPC共享内存区域,并返回相转载 2011-05-05 10:20:00 · 543 阅读 · 0 评论 -
linux内核IOCTL网络控制框架实现分析
linux内核IOCTL网络控制框架实现分析 作者:松哥email:jccz_zys@tom.comMSN: jccz_zys@163.netQQ: 15210449 目录 一、概述... 3二、用户空间ioctl控制函数调用形式... 3三、内核主要函数调用框架... 3四、IOCTL框架源代码分析... 4转载 2011-06-29 15:32:00 · 1784 阅读 · 0 评论 -
Linux下Rtl8139too网卡设备驱动程序关键函数剖析
static int __devinit rtl8139_init_one (struct pci_dev *pdev, const struct pci_device_id *ent)函数功能描述:赋给pci_driver结构体中的probe函数指针,用于当PCI核心检测到一个转载 2011-07-07 10:10:22 · 933 阅读 · 0 评论 -
深入剖析uClinux
uclinux表示micro-control linux.即“微控制器领域中的Linux系统”,,是Lineo公司的主打产品,uCLinux是Lineo公司的主打产品,同时也是开放源码的嵌入式Linux的典范之作。uCLinux主要是针对目标处理器没有存储管理单元MMU(Memo转载 2011-07-12 10:54:35 · 633 阅读 · 0 评论 -
linux kernel 2.4 和 2.6 的区别
随着Linux2.6的发布,由于2.6内核做了教的改动,各个设备的驱动程序在不同程度上要进行改写。为了方便各位Linux爱好者我把自己整理的这分文档share出来。该文当列举了2.6内核同以前版本的绝大多数变化,可惜的是由于时间和精力有限没有详细列出各个函数的用法。特别声明:该文转载 2011-07-12 10:38:04 · 689 阅读 · 0 评论 -
网络设备驱动基础
在已挂装磁盘和数据包发送接口之间,存在着一些非常重要的不同。首先,磁盘在 /dev 目录中作为一个特殊文件而存在,而网络接口并没有类似的 /dev 目录入口点。普通的文件操作(读取、写入等等)对网络接口来讲没有任何意义,因此,无法将 Unix 的“所有东西都是文件”这一思想应用于翻译 2011-07-12 17:27:44 · 784 阅读 · 0 评论 -
linux udev 自动创建node
我们知道,生成设备文件节点的方法有三个:手动mknod利用devfs利用udevUdev是今后发展的趋势第一、什么是udev? 这篇文章UDEV Primer给我们娓娓道来,花点时间预习一下是值得的。当然,不知道udev是什么也没关系, 把它当个助记符好了,有了下面的上路指南,可原创 2011-07-12 18:51:37 · 892 阅读 · 0 评论 -
linux多进程和多线程分析之二
很想写点关于多进程和多线程的东西,我确实很爱他们。但是每每想动手写点关于他们的东西,却总是求全心理作祟,始终动不了手。今天终于下了决心,写点东西,以后可以再修修补补也无妨。一.为何需要多进程(或者多线程),为何需要并发?这个问题或许本身都不是个问题。但是对于没有接触过转载 2011-08-30 10:44:53 · 3605 阅读 · 1 评论