- 博客(80)
- 资源 (1)
- 收藏
- 关注
原创 IPVS源代码分析----FTP的处理
FTP有自己的特殊性,在IPVS中进行了特殊的处理。在这一节中把关于FTP的处理择出来,缕清楚。FTP有两种模式 主动和被动,主动和被动是针对服务器说的,指的是对于数据连接,服务器主动连接到客户端,还是服务器被动接收客户端的连接。主动模式(active)是 client主动通告服务器它所开启的数据端口,服务器用20端口来连接client的数据端口。client通告服务器端口的消
2014-03-01 21:01:05 2173
原创 IPVS源代码分析-----persistent connection和fwmark
persistent connetion和fwmark主要用于处理多连接的应用。主要参考http://www.austintek.com/LVS/LVS-HOWTO/HOWTO/LVS-HOWTO.fwmark.html#single_group
2014-02-28 23:33:26 3776
转载 ipvs源代码分析---ipvsadm的用法
/proc/net/ip_vs :IPVS的规则表/proc/net/ip_vs_app :IPVS应用协议/proc/net/ip_vs_conn :IPVS当前连接/proc/net/ip_vs_stats :IPVS状态统计信息ipvsadm 的用法和格式如下: ipvsadm COMMAND [protocol] service-address [schedul
2014-02-26 16:06:04 2902
原创 IPVS源代码分析---备份的实现
[IPVS的同步]IPVS支持对连接的同步,两台IPVS设备可分别以MASTER或BACKUP运行,MASTER进程可将连接信息备份到BACKUP设备上,这样主设备死机时从设备可以无缝切换。可以在IPVS设备上同时启动MASTER和BACKUP进程,使设备之间互为备份,实现IPVS设备的均衡。IPVS同步实现在net/ipv4/ipvs/ip_vs_sync.c中.同步信息块的格式如下,开
2014-02-26 16:05:10 1925
原创 IPVS源代码分析---app helper的实现
IPVS的应用是针对象FTP等的多连接协议处理的,由于多连接协议的特殊性,任何以连接为基础进行处理的模块如IPVS,netfilter等都必须对这些协议特别处理,不过IPVS相对没有netfilter那么完善,目前也仅仅支持FTP协议,而netfilter已经可以支持FTP、 TFTP、IRC、AMANDA、MMS、SIP、H.323等多种多连接协议。IPVS应用也是模块化的,不过其实现有点
2014-02-26 16:04:04 1872
原创 IPVS源代码分析----发送函数的实现
[发送方法实现]NAT发送只发送请求方向的数据,因此是进行目的NATint ip_vs_nat_xmit(struct sk_buff *skb, struct ip_vs_conn *cp, struct ip_vs_protocol *pp){ struct rtable *rt; /* Route to the other host */
2014-02-26 16:03:00 2859
原创 IPVS源代码分析---tcp和udp协议实现
[协议实现]我们假定是tcp协议struct ip_vs_protocol ip_vs_protocol_tcp = { .name = "TCP", .protocol = IPPROTO_TCP, .dont_defrag = 0, .appcnt
2014-02-26 16:02:04 3440
转载 IPVS源代码分析----调度算法
[IPVS调度算法]均衡调度算法是IPVS实现均衡功能的理论精髓,其他各种东西都只算是程序技巧,现在介绍.IPVS支持8种静态均衡算法,以下文字直接拷贝自IPVS网站:IPVS在内核中的负载均衡是以连接为粒度的.在HTTP协议(非持久)中,每个对象从WEB服务器上获取都需要建立一个TCP连接,同一用户的不同请求会被调度到不同的服务器上,所以这种细粒度的调度在一定程度上可以避免单个用户访问
2014-02-26 16:00:43 2318
原创 IPVS源代码分析---hook函数
[hook点实现]我们一个一个看static struct nf_hook_ops ip_vs_in_ops = { .hook = ip_vs_in, .owner = THIS_MODULE, .pf = PF_INET, .hooknum = NF_
2014-02-26 15:59:25 3260
原创 IPVS源代码分析---总述和初始化
IPVS实现分析根据LVS官方网站的介绍,LVS支持三种负载均衡模式:NAT,tunnel和direct routing(DR)。NAT是通用模式,所有交互数据必须通过均衡器;后两种则是一种半连接处理方式,请求数据通过均衡器,而服务器的回应则是直接路由返回的,而这两种方法的区别是tunnel模式下由于进行了IP封装所以可路由,而DR方式是修改MAC地址来实现,所以必须同一网段.[主要数据结
2014-02-26 15:57:59 5024
转载 Iptables详解
Iptabels是与Linux内核集成的包过滤防火墙系统,几乎所有的linux发行版本都会包含Iptables的功能。如果 Linux 系统连接到因特网或 LAN、服务器或连接 LAN 和因特网的代理服务器, 则Iptables有利于在 Linux 系统上更好地控制 IP 信息包过滤和防火墙配置。netfilter/iptables过滤防火墙系统是一种功能强大的工具,可用于添加、编辑和除去
2014-02-11 15:47:58 1950
原创 Centos和ubuntu装机之后的配置
centos装机之后的初始化2.修改hostname: /etc/host127.0.0.1 ajigege::1 ajigege3. 设置默认路由:/etc/sysconfig/network#vi /etc/sysconfig/networkNETWORKING=yesHOSTNAME=ajigege //
2014-02-09 17:41:16 1252
转载 linux 内核网络,数据接收流程图
4.3 数据接收流程图各层主要函数以及位置功能说明: 1)sock_read:初始化msghdr{}的结构类型变量msg,并且将需要接收的数据存放的地址传给msg.msg_iov->iov_base. net/socket.c 2)sock_recvmsg: 调用函数指针sock->ops->recvmsg()完
2014-02-09 17:01:27 1131
原创 mini2440 ADC 驱动的开发、移植与分析
最近在学习mini2440驱动开发。这是我的第一篇相关博文。以前没有写博客的习惯,但是经常会看别人的博客,就像在最近学习驱动开发的过程中,参考了挺多人的博客。希望写博客,会给我们学技术带来很多帮助吧。 学驱动,我也是从最简单的LED以及BUTTON开始的,自己买了友善之臂2440的板子,开始学习之后,非常后悔驱动的这些东西之前没有早学,要是在学校把这些驱动系统的学一遍就好了。工作之后,可用来
2014-02-09 16:59:54 1072
转载 ARM9 2410移植之ARM中断原理, 中断嵌套的误区,中断号的怎么来的
几天前一个学生问我ARM中断嵌套的问题,我才发现原在我心中理所当然的事对学生来说理解实属不易。 ARM有七种模式,我们这里只讨论SVC、IRQ和FIQ模式。 我们可以假设ARM核心有两根中断引脚(实际上是看不见的),一根叫 irq pin, 一根叫fiq pin. 在ARM的cpsr中,有一个I位和一个F位,分别用来禁止IRQ和FIQ的。 先不说中断
2014-02-09 10:15:11 1039
转载 U-Boot与Linux内核的交互
说明:本文所使用的U-Boot的版本是1.1.6,平台是S3C2440。目录一、简介1.1标记列表二、设置标记存放的地址2.1相关的结构体定义2.2标记存放地址的设定三、标记的设置3.1设置标记ATAG_CORE3.2设置内存标记ATAG_MEM3.3设置命令行标记ATAG_CMDLINE3.4设置ATAG_NONE一、简介U-Boot与
2014-02-09 10:13:04 1269
转载 [经典]Linux内核中ioremap映射的透彻理解
几乎每一种外设都是通过读写设备上的寄存器来进行的,通常包括控制寄存器、状态寄存器和数据寄存器三大类,外设的寄存器通常被连续地编址。根据CPU体系结构的不同,CPU对IO端口的编址方式有两种: (1)I/O映射方式(I/O-mapped) 典型地,如X86处理器为外设专门实现了一个单独的地址空间,称为"I/O地址空间"或者"I/O端口空间",CPU通过专门的I/O指令(如X86的
2014-02-09 10:11:34 947
转载 iptables系列之基础原理+基础应用
iptables [-t table] command [match] [target/jump]其中,表名有nat filter manglecommand 中通常是 “-A/-D/-I/-N 链名” 的格式。其中,链名可以是netfilter自带的:prerouting\forwaring\postrouting\input\output,也可以是用户自己新建的链,但是用户
2014-01-19 22:59:30 1460
转载 与符号表分离程序或动态库, 如何用GDB调试
1 Debugging Information in Separate FilesGDB支持用户将程序调试信息放在一个独立的文件里,而不是和可执行程序在一个文件中,GDB可以某种方式来查找和自动加载调试信息。由于调试信息可能非常大,有时可能比可执行代码自身还要大,某些系统将其可执行程序的调试信息以单独的文件发布,在需要调试问题的时候,用户可以再安装这些文件。GDB支持两种设置单
2014-01-18 10:23:16 3053
转载 kvm基本原理
kvm基本原理1KVM 是指基于 Linux 内核的虚拟机(Kernel-based Virtual Machine)。增加 KVM 到 Linux 内核是 Linux 发展的一个重要里程碑,这也是第一个整合到 Linux 主线内核的虚拟化技术。在 KVM 模型中,每一个虚拟机都是一个由 Linux 调度程序管理的标准进程,你可以在用户空间启动客户机操作系统。一个普通的 Linux 进
2014-01-07 18:38:03 3061
原创 ARM处理器汇编指令
ARM汇编指令集1 跳转指令 1.1 跳转指令B:B LABLE ;跳转到标号LABEL处B 0X1111 ;跳转到绝对地址0X1111处 1.2 带连接的跳转指令 BL:START … BL NEXT ;跳转到标号NEXT处,同时保存当前PC到R14中
2013-12-01 17:39:59 3730
转载 X86处理器架构------汇编语言寻址方式
第一部分 指令系统简介寻址方式是指寻找指令中操作数或者指令转移地址的方式,分为数据寻址方式和指令转移地址方式两类。指令系统是指机器所支持的所有指令的集合。 数据寻址方式有:立即数寻址,寄存器寻址,存储器寻址等方式;指令转移地址方式:包括直接,相对以及间接存储器寻址三种方式。 指令系统包括:数据传送指令,算术运算指令,逻辑运算指令和存储器控制指
2013-12-01 16:17:13 2093
原创 X86处理器架构-------寄存器分析
之前看过x86架构,最近看了ARM。发现两者的区别还是很大的。就寻址而言,ARM没有分段机制,只是分页;X86是分段+分页,所以更复杂。所以,想比较一下这两种架构。先从X86的寄存器开始说。 下面的好多内容是转载并整理的。 时下主流的汇编语言的汇编器,有以下几款: MASM:是微软公司开发的汇编编译器,采用Intel规定的汇编语法,在6.0版本以前单独发布
2013-12-01 15:21:25 4577
转载 ARM处理器架构-----协处理器
ARM指令集-协处理器指令详解 ARM可支持多达16个协处理器,主要的作用:ARM处理器初始化,ARM与协处理器的数据处理操作,ARM的寄存器与协处理器的寄存器之间传送数据,以及ARM协处理器的寄存器和存储器之间传送数据。共有5条:-CDP 协处理器数据操作指令-LDC 协处理器数据加载指令-STC 协处理器数据存储指令-MCR AR
2013-12-01 09:45:58 1620
原创 ucos中的任务调度
看了一个星期在2440上实现的ucos2。这个操作系统比较简单,但是如果真正去移植一次,应该收获会很大。暂时不打算做这个工作。下面记录一下1. ucos中任务的栈首先,在ucos中每个任务是有自己的栈区,这个在创建任务的时候就需要指定。 OSTaskCreate (MainTask,(void *)0, &MainTaskStk[MainTaskStkLengh - 1], Ma
2013-11-29 16:57:25 2529
转载 ARM处理器架构------可嵌套中断的实现
文章是转载的,看的不是很明白,写的也不是很明白。当然很重要的是这是一种思路,证明通过模式的切换,可嵌套中断是可以实现的。传统ARM中IRQ是作为一种系统异常出现的。对于ARM核来说,有且仅有一个称为IRQ的系统异常。而ARM对于IRQ的处理一般通过异常向量找到IRQ的中断处理程序。当进入IRQ中断处理程序之后,ARM自动屏蔽IRQ,也就是说在中断响应过程中是忽略之后到来的中断请
2013-11-29 11:12:31 4153 1
原创 ARM处理器架构-----异常/中断处理
中断是我们嵌入式开发很常用到的一种资源和编程手段。这篇文章重点分析arm的中断处理流程。 首先,中断是异常的一种。当发生一种异常时,处理器会进入不同的工作模式。ARM的异常和相应的模式之间的对应关系见下表:当一个异常导致模式的改变时,ARM核自动地:1、把cpsr保存到相应模式下的spsr2、把pc保存到相应模式下的lr3、设置c
2013-11-28 18:47:01 5246
原创 ARM处理器架构----处理器的工作状态
这一篇的知识来源全部来自《ARM System Developer's Guide》 从编程人员的视角来看,arm核是由数据总线连接的功能单元组成,如下图所示: 数据通过数据总线流向处理器核心,这里的数据可以是将要执行的指令,也可以是数据项.上面的图是Von Neumann体系的arm核,数据项和指令共用同一总线.而h哈佛结构体系
2013-11-27 17:16:12 3575
转载 s3c2440启动文件start.s分析
启动文件就是引导ARM启动,并进入我们熟悉的C语言程序。它主要完成了ARM最基本的硬件初始化工作。虽然启动文件的内容大同小异(就是设置系统时钟、内存、中断向量表、栈等内容),而且只要有一个现成的启动文件,即使不用详细了解该文件的内容,直接进入C语言编程工作也可以对ARM进行操作,但我认为熟悉启动文件的内容,还是有必要的,它对我们熟悉ARM的体系结构,编写出更高效的程序是大有益处的。因此我花了一些时
2013-11-26 15:11:41 1600
原创 mini2440裸机编程--------触摸屏驱动
mini2440上连接的是一个电阻式触摸屏,电阻式触摸屏是基于AD转换实现的,即某个位置按下之后,这点的电压会发生改变,通过电压就可以判断出是哪一个点被按下了,arm可以得到这个点的坐标。因为触摸屏和lcd是两个设备,因此,触摸屏得到的坐标一般不能够与lcd上的坐标对应起来,所以需要我们在程序中手动的进行校正(虽然不对应,但是他们之间的关系式线性的,因此通过三个点的采样,就可以把系数确定下来。)
2013-11-17 09:55:18 2602
原创 mini2440裸机编程--------LCD驱动
记录一下lcd编程的过程。文章主要是转载的。要想正确使用LCD,必须注意两点:1、时序;2、显示缓存区。 1、时序LCD一般需要三个时序信号:VSYNC、HSYNC和VCLK。VSYNC是垂直同步信号,在每进行一个帧(即一个屏)的扫描之前,该信号就有效一次,由该信号可以确定LCD的场频,即每秒屏幕刷新的次数(单位Hz)。HSYNC是水平同步信号,在每进行一行的扫描之前,该信号就有效
2013-11-16 16:12:00 2375
原创 mini2440裸机编程------IIS
这段时间还做了IIS的试验。被这个试验也折腾了很久。总的来讲IIS还是一个相对简单的通信协议。s3c2440一共有5个引脚用于IIS:IISDO、IISDI、IISSCLK、IISLRCK和CDCLK。前两个引脚用于数字音频信号的输出和输入,另外三个引脚都与音频信号的频率有关,要用好IIS,就要把信号频率设置正确。fs:采样频率。fs不是任意设置的,一般基于不同的应用场合和听觉效果,设置不
2013-11-16 10:26:11 1971
原创 mini2440裸机编程---网卡
网络对于嵌入式系统来说必不可少。可是s3c2440没有集成以太网接口,所以要想使s3c2440具备以太网的功能,就必须扩展网卡接口。在这里,我们外接DM9000,使其可以与以太网相连接。 DM9000可以直接与ISA总线相连,也可以与大多数CPU相连。在这里,我们当然是要让DM9000与s3c2440相连接了。DM9000对外来说只有两个端口——地址口和数据口,地址口用于输入
2013-11-14 19:09:32 2175
原创 mini2440裸机编程-----IIC—读写AT24C08
IIC(Inter-Integrated Circuit,I2C)总线是一种由PHILIPS公司开发的两线式串行总线,用于连接微处理器及其外围设备,它只需要数据线SDA和时钟线SCL,就能够实现CPU与被控IC之间、IC与IC之间进行双向传送。 s3c2440内部有一个IIC总线接口,因此为我们连接带有IIC通信模块的外围设备提供了便利。它具有四种操作模式:主设备发送模式、主设备接
2013-11-10 20:07:14 3067
原创 s3c2440 usb host device controller驱动分析(七)-----class driver
这里开始分析我们第一节贴的图中的class driver。class driver就是负责实现具体功能的driver,像usb-skeleton和usb鼠标的驱动。我认为class driver的功能应该是两个:一个是具体的操作usb device,实现具体的功能;二是像用户态提供dev的文件操作接口。我们也用usb-skeleton为例进行分析。在这一层,还把usb device抽象成了一个
2013-10-20 10:23:08 2358
原创 s3c2440 usb host device controller驱动分析(六)-----usb device 和 usb interface
前面分析了usb hub 和 generic driver,顺便将枚举的前一部分看完了。本来我们应该继续分析class driver的最上层,即利用usb通信实现具体功能的驱动。我们将以usb-skeleton.c为例。但在分析usb-skeleton之前,我们注意到最上层的驱动都是针对usb interface的,usb driver里面的函数都用usb interface做参数,usb dri
2013-10-19 11:03:10 3306
原创 s3c2440 usb host device controller驱动分析(五)-----generic driver
下面继续将一个generic driver。这个generic driver是针对usb device的。而class driver一般是针对usb interface的。其实这个generic driver主要实现的功能是 设备的枚举。struct usb_device_driver usb_generic_driver = { .name = "usb", .probe = gen
2013-10-17 22:29:57 2890
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人