自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(42)
  • 资源 (7)
  • 收藏
  • 关注

原创 嵌入式Linux四个软件层次

在专用的嵌入式板子运行GNU/Linux系统已经变得越来越流行。一个嵌入式Linux系统从软件的角度看通常可以分为四个层次:  1、 引导加载程序。包括固化在固件(firmware)中的boot代码(可选),和BootLoader两大部分。   2、 Linux内核。特定于嵌入式板子的定制内核以及内核的启动参数。   3、 文件系统。包括根文件系统和建立于Flash内存设备

2011-10-26 14:10:32 4130 1

原创 QOS (一)

IP Type of Service This classification type is based on an exact match of the one-byte ToS/DSCP field contained in the IP header of a frame. The ToS (Type of Service) or DSCP (Diffserve Codepoint) v

2011-06-13 16:48:00 1031

转载 IEEE 802.11 MAC层介绍 【转】

<br />IEEE 802.11 MAC层介绍IEEE 802.11 MAC协议<br /><br />  802.11规范为MAC协议定义了5类时序间隔,其中两类是由物理层决定的基本类型:短帧空间(SIFS)和时隙 (slot time)。其余3类时序间隔则基于以上两种基本的时序间隔:优先级帧间空间(PIFS)、分散帧间空间(DIFS)和扩展帧间空间(EIFS)。 SIFS是最短的时序间隔,其次为时隙。时隙可视为MAC协议操作的时间单元,尽管802.11信道就整体而言并不工作于时隙级时序间隔上。对于 8

2011-04-16 09:30:00 5678

原创 一些LINUX资源【转】

<br /> <br />linux内核源代码情景分析 非扫描版 上下册合订版 字清楚 带书签 1575页 pdf<br />http://download.csdn.net/source/2002579<br />*************************************************************<br />linux设备驱动开发详解 pdf,针对ARM9 s3c2410 经典 宋宝华<br />http://download.csdn.net/source/3135

2011-04-09 08:30:00 1230 2

原创 rssi

<br />最近家里无线信号很差,于是就学习一下madwifi中的rssi。<br />看一下iwconfig ath0里面的信号参数是怎么搞出来的。<br />iwconfig ath0 <br />ath0      IEEE 802.11ng  ESSID:"Atheros_AP51"  <br />          Mode:Managed  Frequency:2.412 GHz  Access Point: 00:1F:33:F7:5E:27   <br />          Bit Rat

2011-03-23 09:06:00 4643

转载 iwpriv 解析

iwpriv

2011-03-14 12:50:00 3361

原创 snprintf函数说明

<br />int snprintf(char *restrict buf, size_t n, const char * restrict format, ...);<br />函数说明:最多从源串中拷贝n-1个字符到目标串中,然后再在后面加一个0。所以如果目标串的大小为n的话,将不会溢出。<br />函数返回值:若成功则返回欲写入的字符串长度,若出错则返回负值。<br />Result1(推荐的用法)<br />#include <br />#include <br />int main() <br /

2011-03-12 10:43:00 584

转载 sk_buff 学习(二)

<br /> <br />struct sk_buff {<br /> /* These two members must be first. */<br /> struct sk_buff  *next;  //这两个变量让sk_buff    <br /> struct sk_buff  *prev;  //构成双向的链表          <br /> struct sk_buff_head *list;  //指向链表的头<br /> struct sock         *sk;    //指向

2011-03-10 15:55:00 1083

转载 sk_buff 学习(一)

<br /> <br />一. SKB_BUFF的基本概念<br />1. 一个完整的skb buff组成<br />(1) struct sk_buff--用于维护socket buffer状态和描述信息<br />(2) header data--独立于sk_buff结构体的数据缓冲区,用来存放报文分组,使各层协议的header存储在连续的空间中,以方便协议栈对其操作<br />(3) struct skb_shared_info --作为header data的补充,用于存储ip分片,其中sk_buf

2011-03-10 15:18:00 3777

原创 如何定义调试用的DEBUG打印宏

<br />如何定义调试用的DEBUG打印宏 【原创】<br /> <br /> <br />在写代码的时候,非常有必要加一些DEBUG的打印信息,但是在release版本中,可以把这些打印信息去掉能缩减代码量。<br /> <br />因此,我们需要定义一个打印的DEBUG宏,当此宏未定义时,该打印实现为空。<br /> <br />如下:<br /> <br /> <br />#define __DEBUG_PRINT__<br /> <br /> <br /> <br /> <br />#ifdef

2011-03-09 22:26:00 3923

原创 va_list 可变参数变量

VA_LIST 是在C语言中解决变参问题的一组宏他有这么几个成员:1) va_list型变量:#ifdef  _M_ALPHAtypedef struct {        char *a0;       /* pointer to first homed integer argument */        int offset;     /* byte offset of next parameter */} va_list;#elsetypedef char *  va_list;#endif2)_I

2011-03-09 22:04:00 1227

原创 为何国内不允许手机有WIFI功能

<br />从2003年英特尔宣布推出迅驰移动计算技术以来,WIFI上网开始逐步影响百姓生活。WIFI上网使用户摆脱了线路的限制,带来了极大的便利,目前基本上已成为笔记本电脑的必备功能,WIFI在手机上的应用虽然早就有之,但大都没有给用户很好的上网体验。直到07 年苹果公司在iPhone手机上成功应用WIFI,WIFI上网才成为一个广受关注的手机功能。另外,在轰轰烈烈的无线城市建设计划影响下,在中国电信天翼计划的推波助澜下,手机WIFI上网迅速成为国内手机用户关注的热点。 <br />中国手机用户能用WIF

2011-02-24 16:39:00 4458 3

转载 queue.h usage (二)

<br /> <br />【转】http://bachmozart.javaeye.com/blog/292836<br /> <br />这两天想看看memcached的实现,所以先学习了libevent,使用起来还是比较简单的,其实是对select/poll/kqueue等的封装,学习libevent过程中又遇到了linux下队列的使用,简单分析如下,权当做记录: <br /><br />libevent中的例子中使用的是FreeBSD下的queue.h,在linux的/usr/include/sys/

2011-01-19 16:13:00 773

原创 定时器 timer_list (二)

kernel timer_list usageinclude/linux/timer.h<br />struct timer_list {<br />struct list_head entry;<br />unsigned long expires;<br /><br />spinlock_t lock;<br />unsigned long magic;<br /><br />void (*function)(unsigned long);<br />unsigned long data;<br /><

2011-01-18 12:40:00 893

原创 定时器 timer_list (一)

<br />定时器 timer_list   (一) <br /> <br /> struct timer_list<br />|-----------------------------------|<br />|struct list_head     entry         |<br />|unsigned long        expires       |<br />|void     (*function)(unsigned long)|<br />|unsigned long      

2011-01-18 12:38:00 676

转载 __attribute__

<br />GNU C的一大特色(却不被初学者所知)就是__attribute__机制。__attribute__可以设置函数属性(Function     Attribute)、变量属性(Variable Attribute)和类型属性(Type Attribute)。<br />__attribute__书写特征是:__attribute__前后都有两个下划线,并切后面会紧跟一对原括弧,括弧里面是相应的__attribute__参数。<br />__attribute__语法格式为:<br />__at

2010-12-28 10:25:00 452

原创 queue.h usage

<br /> queue.h usage<br /> /*<br /> * TAILQ example program.<br />*/<br />#include <stdlib.h><br />#include <stdio.h><br />/*<br /> * On many OpenBSD/NetBSD/FreeBSD you could include <sys/queue.h>, but<br /> * for portability we’ll include the local copy.<

2010-12-23 19:24:00 820

原创 对一个结构体取下标

<br /> <br /> <br />如下:<br /><br />  wh = (struct ieee80211_frame *) skb->data;<br />  frm = (u_int8_t *)&wh[1];<br /><br /><br />wh是一个指针<br />frm = wh + sizeof(struct ieee80211_frame) <br />&wh[1] 即frm是wh偏移这一段结构体大小size后的地址。<br /> <br />这是一种写代码的技巧,在协议相关代码里

2010-12-23 19:21:00 2086

原创 Linux内核中结构体的特殊初始化方法

<br />在阅读GNU/Linux内核代码时,我们会遇到一种特殊的结构初始化方式。该方式是某些C教材(如谭二版、K&R二版)中没有介绍过的。这种方式称为指定初始化(designated initializer)。下面我们看一个例子,Linux-2.6.x/drivers/usb/storage/usb.c中有这样一个结构体初始化项目: static struct usb_driver usb_storage_driver = {        .owner = THIS_MODULE,        .n

2010-12-19 09:13:00 1215 1

原创 结构体内的#define宏定义

<br />关于宏的作用域<br />1.     宏没有可见域。<br />        如果说有,那就是从本文件(包括被包含的文件)中,该宏定义处开始,至文件的尾部或取消宏(#undef)为止。<br />2.     考虑一种特殊情况:<br />        一个宏定义,如果写在结构体之内,即使与结构体之外的宏定义名字重复了最多是编译警告。可是如果不在结构体之内,名字重复可肯定是error。(未证实,可以做实验,而且可以把两处的宏定义成不同的值,会是什么情况?)<br />        定义在

2010-12-18 23:29:00 18389 3

转载 Madwifi 整理

//hardware:wireless chip ar9132<br />  // software: "LSDK-WLAN-ap81fus-7.1.2.32.tgz" supported by atheros<br />  //20080303 init<br />  一, 关键结构体变量<br />  ath_ar_ops<br />  net80211_ops<br />  ar5416hal<br /><br />  (struct ath_softc_net80211)->sc_ops = ath

2010-12-17 17:20:00 2712

原创 ioctl 学习之路 (3)

<br />一般的说,,用户空间的IOCTL系统调用如下所示: ioctl(int fd, int command, (char *) argstruct)因为这个调用拥有与网络相关的代码,所以文件描述符号fd就是socket()系统调用所返回的,而command参数可以是/usr/include/linux/sockios.h头文件中的任何一个,这些个命令根据它可以解决的问题所涉及的方面被分为多种的类型.<br />  比如:<br />  改变路由表(SIOCADDRT, SIOCDELRT)<br /

2010-12-10 18:13:00 702

转载 ioctl 学习之路 (2)

<br />我这里说的ioctl函数是在驱动程序里的,因为我不知道还有没有别的场合用到了ioctl, 所以就规定了我们讨论的范围。为什么要写篇文章呢,是因为我前一阵子被ioctl给搞混了,这几天才弄明白它,于是在这里清理一下头脑。<br />一、 什么是ioctl。<br />ioctl是设备驱动程序中对设备的I/O通道进行管理的函数。所谓对I/O通道进行管理,就是对设备的一些特性进行控制,例如串口的传输波特率、马达的转速等等。它的调用个数如下:<br />int ioctl(int fd, ind cmd

2010-12-10 17:45:00 724

原创 ioctl 学习之路 (1)

<br /><br />设备文件应该表现物理设备。大多物理设备既作为输出也作为输入,因此必须有某个机制使内核中的设备驱动程序得到来自进程的输出以便发送到设备。通过为输出打开设备文件并向其写而做到这个,就像写一个普通文件。在下面的例子中,这是用 device_write 实现的。<br />这不总是足够的。想象你有一个串行口连接到一个调制解调器(即使你有一个内置的调制解调器,从CPU的观点看它仍然是通过串行口连接到调制解调器,因此你不必责备你的想象力)。自然而然的事情是使用设备文件向调制解调器写(要么是调制解

2010-12-09 16:48:00 1585

原创 proc文件系统与ctl_table

<br />三、系统参数数据结构的组织 <br /><br /><br /><br />系统参数的数据结构是按层次结构进行组织的,最高一层是root,下面的一层依次 <br /><br />kernel、net、proc、fs、debug、dev。它们下面再分层,例如net下面又分为core <br /><br />、ipv4等,这样依次类推,直到最底层。 <br /><br />树中各个层次的结点,不管是父结点还是子结点,都用一个结构ctl_table组成的数 <br /><br />组来表示。所有的系统

2010-12-06 14:13:00 7193

原创 alloc_skb()

<br /> <br />sock_alloc_send_pskb() --> alloc_skb()<br /><br />    alloc_skb()用于分配缓冲区的函数。由于"数据缓冲区"和"缓冲区的描述结构"(sk_buff结构)是两种不同的实体,这就意味着,在分配一个缓冲区时,需要分配两块内存(一个是缓冲区,一个是缓冲区的描述结构sk_buff)。<br /><br />/usr/src/linux-2.6.19/include/linux/skbuff.h<br />static inline

2010-12-01 11:18:00 1852

原创 串行通讯 -----单工、半双工和全双工

<br />串行通讯简单认识<br />    串行通讯的基本概念:与外界的信息交换称为通讯。基本的通讯方式有并行通讯和串行通讯两种。<br />    一条信息的各位数据被同时传送的通讯方式称为并行通讯。并行通讯的特点是:各数据位同时传送,传送速度快、效率高,但有多少数据位就需多少根数据线,因此传送成本高,且只适用于近距离(相距数米)的通讯。<br />    一条信息的各位数据被逐位按顺序传送的通讯方式称为串行通讯。串行通讯的特点是:数据位传送,传按位顺序进行,最少只需一根传输线即可完成,成本低但送速度

2010-11-24 09:32:00 1999

原创 /bin ,/usr/bin,/sbin,/usr/sbin

<br />echo $PATH<br /> <br /> <br />主要是这四个:/bin ,/usr/bin,/sbin,/usr/sbin。<br /><br />四个主要存放的东东:<br /><br />./bin: <br /><br />bin为binary的简写主要放置一些系统的必备执行档例如:cat、cp、chmod df、dmesg、gzip、kill、ls、mkdir、more、mount、rm、su、tar等。 <br /><br />/usr/bin: <br />主要放置一些应

2010-11-22 13:34:00 658

转载 tty 是什么

终端是一种字符型设备,它有多种类型,通常使用tty来简称各种类型的终端设备。tty是Teletype的缩写。Teletype是最早出现的一种终端设备,很象电传打字机(或者说就是),是由Teletype公司生产的。设备名放在特殊文件目录/dev/下,终端特殊设备文件一般有以下几种:1.串行端口终端(/dev/ttySn)串行端口终端(Serial Port Terminal)是使用计算机串行端口连接的终端设备。计算机把每个串行端口都看作是一个字符设备。有段时间这些串行端口设备通常被称为终端设备,因为那时它的

2010-11-22 11:22:00 4147

原创 Vi与Vim的区别

Vi与Vim的区别一直用着vi,有朋友劝我用vim,那么它们有什么区别呢?<br />简单点来说,它们都是多模式编辑器,<br />不同的是vim 是vi的升级版本,它不仅兼容vi的所有指令,<br />而且还有一些新的特性在里面。<br />vim的这些优势主要体现在以下几个方面:<br /><br />1、多级撤消<br />我们知道在vi里,按 u只能撤消上次命令,而在vim里可以无限制的撤消。<br /><br />2、易用性<br />vi只能运行于unix中,而vim不仅可以运行于unix,wi

2010-11-19 11:38:00 478

原创 CAPWAP学习笔记

<br />CAPWAP - Control and provisioning of wireless access points. The protocol specification is described in RFC5415 [1] and an IEEE 802.11 binding is provided in RFC5416 [2] and is based on LWAPP (Lightweight Access Point Protocol).<br /> <br />首先CAPWAP是

2010-11-15 10:10:00 1493

原创 二层交换机, 三层交换机

<br />按照网络OSI的7层参考模型,数据链路层为第二层,而网络层为第三层。如果交换机在进行数据包交换(将数据包从一个接口转移到另外一个接口)时根据的是数据链路层信息那么就是二层交换机,如果根据的是网络层信息那么就是三层交换机。<br />所谓“三层交换”实际上就是路由器的功能。现在由于技术的发展,路由器和交换机之间的界限已经越来越模糊了,很多交换机具有了路由器的功能,但它又是“交换机”,所以索性将其称作“三层”交换机。<br /> <br /> <br />三层交换机使用了三层交换技术 <br />简

2010-11-11 17:58:00 706

原创 VLAN在linux中的实现

1         VLAN在linux中的实现1.1         VLAN代码的位置<br />Vlan在linux的代码中位于 linux2.6.10/net/8021q,主要包含vlan.c<br />Vlan_dev.c :vlan设备相关的处理函数,比如设备上的报文发送、接收与报文头处理函数vlan_dev_hard_start_xmit,vlan_skb_recv,vlan_dev_rebuild_header;设备的ioctl配置vlan_dev_ioctl函数等。<br />Vlan.c

2010-11-11 14:31:00 3365 2

原创 以太网交换机三种端口模式Access、Hybrid和Trunk的理解

    以太网交换机三种端口模式Access、Hybrid和Trunk的理解    为使交换机能够分辨不同VLAN的报文,需要在报文中添加标识VLAN的字段。IEEE 802.1Q协议规定,在目的MAC地址和源MAC地址之后封装4个字节的VLAN Tag,用以标识VLAN的相关信息。2个字节的协议标识符(TPID),当前置0x8100的固定值,表明该帧带有802.1Q的标记信息。    2个字节的标记控制信息(TCI),包含了三个域。      Priority域,占3bits,表示报文的优先级,取值0到7

2010-11-11 14:13:00 4387

原创 “单播”“组播”和“多播”

<br />什么是“单播”“组播”和“多播” <br /> <br />当前的网络中有三种通讯模式:单播、广播、组播(多播),其中的组播出现时间最晚但同时具备单播和广播的优点,最具有发展前景。 <br /><br />一、单播: <br /><br />主机之间“一对一”的通讯模式,网络中的交换机和路由器对数据只进行转发不进行复制。如果10个客户机需要相同的数据,则服务器需要逐一传送,重复10次相同的工作。但由于其能够针对每个客户的及时响应,所以现在的网页浏览全部都是采用IP单播协议。网络中的路由器和交换机

2010-11-11 11:08:00 873

转载 linux 路由表 配置

查看 Linux 内核路由表使用下面的 route 命令可以查看 Linux 内核路由表。 # routeDestination Gateway Genmask Flags Metric Ref Use Iface192.168.0.0 * 255.255.255.0 U 0 0 0 eth0169.254.0.0 * 255.255.0.0

2010-11-10 17:22:00 17567 3

转载 TCP/IP学习笔记(一)

TCP/IP学习笔记(一)作者:肖进一、 TCP/IP结构:     TCP/IP是一个四层协议,结构如下:     1、应用层:各种应用程序和协议,如Http、FTP等。     2、传输层:TCP和UDP     TCP提供一种可靠的运输层服务,但UDP是不可靠的,不能保证数据报到正确到达目的地。     3、网络层:IP、IGMP、ICMP     IP提供的是一种不可靠的服务,也就是尽可能块地把分组从源节点送到目的节点,但并不提供任何可靠性保证。ICMP是IP的附属协议,主要用来交换错误报文,IGM

2010-11-09 17:49:00 809

原创 因特网的IP协议是传输不可靠无连接的,那么为什么当初不把因特网的传输设计成为可靠的?

因特网的IP协议是传输不可靠无连接的,那么为什么当初不把因特网的传输设计成为可靠的?<br />因特网使用的IP协议是无连接的,因此其传输是不可靠的。这样容易使人们感到因特网很不可靠。那么为什么当初不把因特网的传输设计成为可靠的?<br />答:这个问题很重要,需要多一些篇幅来讨论。<br />先打一个比方。邮局寄送的平信很像无连接的IP数据报。每封平信可能走不同的传送路径,同时平信也不保证不丢失。当我们发现收信人没有收到寄出的平信时,去找邮局索赔是没有用的。邮局会说:“平信不保证不丢失。怕丢失就请你寄挂号

2010-11-09 15:25:00 7356 1

转载 DHCP地址分配方式及工作原理

DHCP地址分配方式及工作原理地址分配方式Manual Allocation  网络管理员为某些少数特定的Host绑定固定IP地址,且地址不会过期Automatic Allocation  自动分配,其情形是:一旦 DHCP 客户端第一次成功的从 DHCP 服务器端租用到 IP 地址之后,就永远使用这个地址。Dynamic Allocation  动态分配,当 DHCP 第一次从 DHCP 服务器端租用到 IP 地址之后,并非永久的使用该地址,只要租约到期,客户端就得释放(release

2010-11-09 13:16:00 5549

转载 IP TCP UDP ICMP IGMP检验和的计算方法

IP TCP UDP ICMP IGMP检验和的计算方法在IP TCP UDP ICMP IGMP数据首部中,都有一个检验和字段,这几个协议都使用相同的算法来计算检验和,在《TCP/IP详解》这本书中对算法的描述不是太清晰,现在以IP协议为例,说明一下计算方法。发送端的计算方法:将IP首部中的检验和字段全部置0检验和字段长16bit 把IP首部以16bit为单位分成若干组现在IP首部被分成了若干组16bit长的数据 将这若干个16bit长的数据相加这里采用循环进位,将最高位第16位的进位加到最低位第1位上,

2010-11-08 10:50:00 2152

Draft P802.11ax_D1.0

802.11ax Draft D1.0 802.11ax标准的首要目标之一是将独立网络客户端的无线速度提升4倍。国内厂商华为已经透露(IEEE 802.11ax标准工作组就有他们的工程师),802.11ax标准在5GHz频段上可以带来高达10.53Gbps的Wi-Fi连接速度。

2017-12-07

CWNA官方学习指南 第3版 认证无线网络管理员PW0-105 完整版.z02

由于限制上传大小是110M,所以把文档分成了3份上传 - CWNA官方学习指南 第3版 认证无线网络管理员PW0-105 完整版.z01 - CWNA官方学习指南 第3版 认证无线网络管理员PW0-105 完整版.z02 - CWNA官方学习指南 第3版 认证无线网络管理员PW0-105 完整版.zip 下载以后放在同一个目录里面,然后解压即可

2017-12-07

CWNA官方学习指南 第3版 认证无线网络管理员PW0-105 完整版.z01

由于限制上传大小是110M,所以把文档分成了3份上传 - CWNA官方学习指南 第3版 认证无线网络管理员PW0-105 完整版.z01 - CWNA官方学习指南 第3版 认证无线网络管理员PW0-105 完整版.z02 - CWNA官方学习指南 第3版 认证无线网络管理员PW0-105 完整版.zip 下载以后放在同一个目录里面,然后解压即可

2017-12-07

Sybex.CWAP.Official.Study.Guide.Exam.PW0-270.Mar.2011

Sybex.CWAP.Certified.Wireless.Analysis.Professional.Official.Study.Guide.Exam.PW0-270.Mar.2011.ISBN.978-0-470-76903-4 CWNP中的CWAP认证官方考试指导,比802.11协议更加具有可读性,是入门wifi协议的不二选择

2017-12-07

YouMoney(有钱记账)一个python写的开源的个人记账程序

一个python写的开源的个人记账程序。 YouMoney(有钱记账)是一个跨平台的个人记账软件。 它可以运行在windows, linux, macos x。 他使用简单,只有记账的核心功能。作者认为simple is better,简单够用就好。不需要大而全的东西。 界面支持英文,简体中文和日文。

2010-04-21

空空如也

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

TA关注的人

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