自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(145)
  • 资源 (24)
  • 收藏
  • 关注

转载 Linux TCP/IP 协议栈源码分析

一.linux内核网络栈代码的准备知识1. linux内核ipv4网络部分分层结构:BSD socket层: 这一部分处理BSD socket相关操作,每个socket在内核中以struct socket结构体现。这一部分的文件主要有:/net/socket.c /net/protocols.c etc INET socket层:BSD socket是个可以用于各种网络协议的接口,

2013-02-25 10:48:20 3427 1

转载 linux 页面的回收

关于页面的使用在之前的一些文章中,我们了解到linux内核会在很多情况下分配页面。1、内核代码可能调用alloc_pages之类的函数,从管理物理页面的伙伴系统(管理区zone上的free_area空闲链表)上直接分配页面(见《linux内核内存管理浅析》)。比如:驱动程序可能用这种方式来分配缓存;创建进程时,内核也是通过这种方式分配连续的两个页面,作为进程的thread_info结构和内

2012-05-02 14:09:04 2681

转载 Linux中断处理流程

看了一些网络上关于linux中断实现的文章,感觉有一些写的非常好,在这里首先感谢他们的无私付出,然后也想再补充自己对一些问题的理解。先从函数注册引出问题吧。一、中断注册方法在linux内核中用于申请中断的函数是request_irq(),函数原型在Kernel/irq/manage.c中定义:int request_irq(unsigned int irq, irq_handler_t

2012-04-17 11:49:34 12613

转载 深入Linux内核网络堆栈

前一段时间看到这篇帖子,确实很经典,于是翻出了英文原版再读,顺便再翻译出来供大家学习,这篇文章的中文版也早都有了,不过出于完全理解的目的,我还是将它翻译了出来,加进了自己的代码,虽然在上一周的翻译过程中,我尽量保留文章的原汁原味,但错误肯定在所难免,在末尾附上原文和我自己调试通过的代码,已经够构运行,大家可以参考一下!(有错误之处请指出)深入Linux内核网络堆栈作者:biofor

2012-04-15 14:37:49 1490

转载 模块与变量导出

今天折腾红外模块发现个奇怪的现象,当以模块的方式编译红外源码时,不能通过说hkvs_root_dir undefined,但是以build-in方式编译没有任何问题,起初想不通,正好买了本新书ILDD,第一章就是讲内核模块加载的原理,看了看,明白了,原来内核的build-in可以看成整个一个大模块,如果红外模块用build-in方式编译的话当然没有问题,他可以访问本模块内的所有全局变量,但是当红外

2012-04-13 19:33:09 1441

转载 kmalloc 与vmalloc

kmalloc()和vmalloc()介绍kmalloc()用于申请较小的、连续的物理内存1. 以字节为单位进行分配,在中2. void *kmalloc(size_t size, int flags)分配的内存物理地址上连续,虚拟地址上自然连续3. gfp_mask标志:什么时候使用哪种标志?如下:———————————————————————————————-情形

2012-04-13 17:21:09 3826

转载 TCP IP 协议分析

一.linux内核网络栈代码的准备知识 1. linux内核ipv4网络部分分层结构: BSD socket层: 这一部分处理BSD socket相关操作,每个socket在内核中以struct socket结构体现。这一部分的文件 主要有:/net/socket.c /net/protocols.c etcINET socket层:BSD socket是个可以

2012-04-02 11:41:55 1054

转载 音视频播放原理

当初看VLC代码花了不少时间,其中很大的原因是不太了解视频播放的基本原理。现在看来,几乎所有的视频播放器,如VLC、MPlayer、Xine,包括DirectShow,在播放视频的原理和架构上都是非常相似的,理解这个对理解VLC的源码会有事半功倍的效果。    大致的来说,播放一个视频分为4个步骤:    1. acess 访问,或者理解为接收、获取、得到    2. demux 解复

2012-03-21 10:22:01 2073

转载 ping广播地址个系统的反应

1、MS的Windows系操作系统全部不会应答2、Unix系的Solaris系统会应答3、IOS系统会应答4、同样Unix系的FreeBSD不会应答5、基于FreeBSD的JUNOS系统估计会应答6、Linux系的服务器也全部没有应答7、不管基于何种系统所有的防火墙都没有应答You can tell Linux to respond to b

2012-03-19 20:40:26 1680 1

转载 tcpdump使用说明

第一种是关于类型的关键字,主要包括host,net,port, 例如 host 210.27.48.2,指明 210.27.48.2是一台主机,net 202.0.0.0 指明 202.0.0.0是一个网络地址,port 23 指明端口号是23。如果没有指定类型,缺省的类型是host.   第二种是确定传输方向的关键字,主要包括src , dst ,dst or src, dst and

2012-03-19 15:27:01 928

转载 网卡参数说明

自从和无盘开始打交道,学到了n多知识,无论是软件层面还是硬件层面,无论是理论还是实践层面,之前很多人认为无盘很复杂,而我也受其“误导”认为无盘很复杂,但实际上用下来发现,其实无盘确实很简单,而所谓的无盘复杂,更多的是理论和经验的结合,以前在网上也看到过很多无盘教程,当时不以为然,不当回事,总觉得自己很牛,可实际上真正的去做了之后,发现自己也在传播这些信息,套用以前某人说过的一句名言“现在很多人的不

2012-03-15 15:15:48 7536

转载 strace用法说明

strace命令详解strace 命令是一种强大的工具,它能够显示所有由用户空间程序发出的系统调用。  strace 显示这些调用的参数并返回符号形式的值。strace 从内核接收信息,而且不需要以任何特殊的方式来构建内核。  下面记录几个常用 option .  1 -f -F选项告诉strace同时跟踪fork和vfork出来的进程  2 -o xxx.txt 输出到某个文

2012-03-15 10:38:05 18771

转载 老辈程序员的忠告

首先这边文章是我转载来的,因为CSDN转载来的文章不允许上首页。但是这篇文章真的不错,希望更多的程序员看到。所以我我选择文章类型为原创,还望本文作者不要怪罪于我。展望未来,总结过去10年的程序员生涯,给程序员小弟弟小妹妹们的一些总结性忠告走过的路,回忆起来是那么曲折,把自己的一些心得体会分享给程序员兄弟姐妹们,虽然时代在变化,但是很可能你也会走我已经做过的10年的路程,有些心得体会你可

2012-03-14 14:55:12 1220

转载 kobject的理解

在LINUX中最让人不解的大概就是/sys下面的内容了下面首先让我们来创建一个简单的platform设备,并从这个设备的视角进行深入,在此篇文章的深入过程中,我们只看kobeject的模型我所使用的内核版本号为2.6.26,操作系统的内核版本号为2.6.27-7,暂未发现2.6.27-7与2.6.26的重大不同首先写一个简单的模块#include #include

2012-03-11 19:15:27 4438

转载 slab slub和内存管理

内核对象缓冲区管理Linux 内核在运行过程中,常常会需要经常使用一些内核的数据结构(对象)。例如,当进程的某个线程第一次打开一个文件的时候,内核需要为该文件分配一个称为 file 的数据结构;当该文件被最终关闭的时候,内核必须释放此文件所关联的 file 数据结构。这些小块存储空间并不只在某个内核函数的内部使用,否则就可以使用当前线程的内核栈空间。同时,这些小块存储空间又是动态变化的,不

2012-03-11 19:03:36 4188

转载 lmbench的使用方法

一、引言要评价一个系统的性能,通常有不同的指标,相应的会有不同的测试方法和测试工具,一般来说为了确保测试结果的公平和权威性,会选用比较成熟的商业测试软件。但在特定情形下,只是想要简单比较不同系统或比较一些函数库性能时,也能够从开源世界里选用一些优秀的工具来完成这个任务,本文就通过lmbench 简要介绍系统综合性能测试。二、测试软件Lmbench是一套简易,可移植的,符合ANSI/

2012-03-08 10:37:17 30492 1

转载 根文件系统的加载

前言:本篇文章以S3C6410公版的Linux BSP和U-Boot来进行分析,文中所有提及的名词和数据都是以该环境为例,所有的代码流程也是以该环境为例来进行分析。哈哈。如果有不正确或者不完善的地方,欢迎前来拍砖留言或者发邮件到[email protected]进行讨论,先行谢过。简单的来说,根文件系统包括虚拟根文件系统和真实根文件系统。在Kernel启动的初始阶段,首先去创建虚拟

2012-03-07 20:40:33 2905

转载 根文件系统的挂载流程分析

一:前言前段时间在编译kernel的时候发现rootfs挂载不上。相同的root选项设置旧版的image却可以。为了彻底解决这个问题。研究了一下rootfs的挂载过程。特总结如下,希望能给这部份知识点比较迷茫的朋友一点帮助。二:rootfs的种类总的来说,rootfs分为两种:虚拟rootfs和真实rootfs.现在kernel的发展趋势是将更多的功能放到用户空间完成。以保持内核的精简

2012-03-07 19:47:36 1426

转载 对自己说

偶然间看到的,觉得不错,保存一下,用来警示自己。感觉程序员更应该多注意这些细节一:沉稳(1)不要随便显露你的情绪。(2)不要逢人就诉说你的困难和遭遇。(3)在征询别人的意见之前,自己先思考,但不要先讲。(4)不要一有机会就唠叨你的不满。(5)重要的决定尽量有别人商量,最好隔一天再发布。(6)讲话不要有任何的慌张,走路也是。(7)自信是好,但是别忽略任何人的想

2012-03-07 18:47:23 587

转载 内核空间与用户空间的内存映射

严格来说,对于内核空间不能称为内存映射,应为内存重映射才对,例如将pci设备的内存空间映射到处理器的地址空间,其处理步骤如下:request_mem_region(start,n,name)#define request_mem_region(start,n,name) __request_region(&iomem_resource, (start), (n), (name))

2012-03-01 17:31:19 2022

转载 ARM linux hard soft irq

今天在ChinaUnix论坛内核源码版上与linuxfellow网友讨论到hardirq和softirq的问题,虽 然在《深入Linux设备驱动程序内核机制》(以下简称“ILDD”)第5章“中断处理”对此已有详细的解读,但是我觉得还是有必要再花点时间深入探讨一 下这两者的区别。因为此前关于ARM上的中断处理我已经在另一篇帖子解密ARM based Linux内核中断处理框架 中讨论过,所以下面

2012-02-25 21:54:22 2322

转载 ARM Linux 外部中断

最近在学习arm linux的整套外部中断的处理过程,在网上汇总了一些资料,整个过程差不多都了解到了。如果没有这些资料我真是没信心从汇编开始读代码,感谢 奔腾年代的jimmy.lee和 linux论坛的bx_bird。 在下面的的注释中有一些我读代码时遇到的问题,要是大家知道是怎么回事,希望多多回复。 ==========================================

2012-02-25 11:18:10 885

转载 2.6的系统调用

下面的代码大家可以在entry-common.S中找到。 在2.6.21中,认真研究大家会发现,你回避不了这样一个概念,EABI是什么东西? 内核里面谈EABI,OABI,其实相对于系统调用的方式,当然我们所说的系统限于arm系统。 EABI (Extended ABI),说的是这样的一种新的系统调用方式 mov r7, #num swi 0x0 原来的系统

2012-02-25 11:13:20 641

转载 oops定位

( 来自Linus Torvalds的讨论: https://groups.google.com/group/linux.kernel/browse_thread/thread/b70bffe9015a8c41/ed9c0a0cfcd31111 又,http://kerneltrap.org/Linux/Further_Oops_Insights ) 例如这样的一个Oops

2012-02-25 11:12:11 947

转载 慢系统调用与信号中断

早期的Unix系统,如果进程在一个‘慢’系统调用中阻塞时,捕获到一个信号,这个系统调用被中断,调用返回错误,设置errno为EINTR。系统调用被分为慢系统调用和其他两大类别。    慢系统调用可以被永久阻塞,包括以下几个类别:       (1)读写‘慢’设备(包括pipe,终端设备,网络连接等)。读时,数据不存在,需要等待;写时,缓冲区满或其他原因,需要等待。读写磁盘文件一般不

2012-02-24 17:21:35 3926

转载 解压缩:arch/arm/boot/compressed/head.S分析

这几天因为工作原因,升级 2.6.22.7 的kernel 到 Mavell 的arm 板子上去,遇到一些头疼的问题,不得不分析启动代码, 郁闷阿。 zImage是ARM Linux常用的一种压缩映像文件,uImage是U-boot专用的映像文件,它是在zImage之前加上一个长度为0x40的“头”,说明这个映像文件的类型、加载位置、生成时间、大小等信息。换句话说,如果直接从u

2012-02-16 10:01:21 2994

转载 浅析blob到kernel传递tags参数和cmdline处理流程

1.blobblob主程序main.cint main(void){    ...    /* initialise status */    blob_status.paramType = fromFlash;    blob_status.kernelType = fromFlash;    blob_status.ramdiskType = fromFla

2012-02-15 18:24:48 1277

转载 ARM Linux 的启动过程

1. kernel运行的史前时期和内存布局 在arm平台下,zImage.bin压缩镜像是由bootloader加载到物理内存,然后跳到zImage.bin里一段程序,它专门于将被压缩的kernel解压缩到KERNEL_RAM_PADDR开始的一段内存中,接着跳进真正的kernel去执行。该kernel的执行起点是stext函数,定义于arch/arm/kernel/head.S。

2012-02-15 15:09:28 863

转载 Linux 的内核调试

※ 调试工作艰苦,是内核级开发区别于用户级开发的一个显著特点。※ 驾驭内核调试的能力,很大程度上取决于经验和对整个操作系统的把握。 一、调试前的准备   内核级bug具有行为不可靠,定义不清晰或者说很难再现的诸多特定,为内核级的bug跟踪和调试带来了很大的困难。   ※ 对于一些定义不清楚地bug,问题的关键就是找到bug的源头,很多时候,当你精确地重现一个

2012-02-15 11:18:22 678

转载 Linux oops

什么是Oops?从语言学的角度说,Oops应该是一个拟声词。当出了点小事故,或者做了比较尴尬的事之后,你可以说"Oops",翻译成中国话就叫做“哎呦”。“哎呦,对不起,对不起,我真不是故意打碎您的杯子的”。看,Oops就是这个意思。在Linux内核开发中的Oops是什么呢?其实,它和上面的解释也没什么本质的差别,只不过说话的主角变成了Linux。当某些比较致命的问题出现时,我们的Linux

2012-02-15 11:16:37 1747

转载 Linux命令行解析

处理模型Linux kernel 的启动包括很多组件的初始化和相关配置,这些配置参数一般是通过command line 进行配置的。在进行后续分析之前,先来理解一下command line 的处理模型:要处理的对象是一个字符串,其中包含了各种配置信息,通常各个配置之间通过空格进行分离,每个配置的表达形式是如:param=value1,value2或者很简单就是一个rw 。

2012-02-15 11:03:38 1006

转载 内核调试

1.调试技术内核编程带来了它自己的,独特的调试挑战。内核代码不能简单地在调试器中执行,也不能被简单地跟踪,因为它是一组不与特定进程相关的功能。内核代码的错误非常难重现并且可能导致整个系统崩溃,因此破坏很多用来发现它们的证据。本章将介绍在如此恼人的情况下你可以用来监视内核代码和跟踪错误的技术。1.1.内核中的调试支持在第二章中,我们建议你编译和安装你自己的内核,而不是运行你所使用的发

2012-02-14 09:31:32 7379 1

转载 Linux内核调试技术指南

前两天,完成了ucos在2440上的移植,以及boot的修改。今天突然想到,我在linux下,该如何来编写,调试比较复杂的驱动。我想这个问题应该从如何调试内核入手,先转载两个文字,待西西看来。系统搭建过程中,对于系统平台搭建工程师在完成Bootloader 的调试之后就进入Kernel 裁减移植的阶段,其中最重要的一步是Kernel 启动的调试,在调试Kernel过程中通常遇到最常见的问题是启

2012-02-13 20:45:36 2709

转载 内核移植相关

嵌入式Linux内核移植相关代码分析 [转载请注明出处,www.linuxforum.net,作者:张洪耿,[email protected]]  本文通过整理之前研发的一个项目(ARM7TDMI +uCLinux),分析内核启动过程及需要修改的文件,以供内核移植者参考。整理过程中也同时参考了众多网友的帖子,在此谢过。由于整理过程匆忙,难免错误及讲解的不够清楚之处,请各

2012-02-03 19:32:24 1071

转载 注意区分shell与Makefile中变量赋值的区别

RT!!!

2012-01-31 16:37:36 1134

转载 Makefile中四种变量赋值的区别

Ask:What is the difference between : VARIABLE = value VARIABLE ?= value VARIABLE := value VARIABLE += valueI have read the section in GNU Make's manual, but it still doesn't make sense t

2012-01-31 16:25:03 889

转载 内核同步机制

为了避免并发,防止竞争。内核提供了一组同步方法来提供对共享数据的保护。 我们的重点不是介绍这些方法的详细用法,而是强调为什么使用这些方法和它们之间的差别。Linux 使用的同步机制可以说从2.0到2.6以来不断发展完善。从最初的原子操作,到后来的信号量,从大内核锁到今天的自旋锁。这些同步机制的发展伴随 Linux从单处理器到对称多处理器的过度;伴随着从非抢占内核到抢占内核的过度。锁机制越来越有

2012-01-31 09:46:46 938

转载 mtd Nand驱动

大约用了两个礼拜不到的时间为公司的IPcamera系统写了基于MTD的NAND驱动(linux-2.6.22.10内核),目前已可以在该驱动的支持下跑cramfs和jffs2文件系统,另外,该驱动也可以同时支持small page(每页512 Byte)和big page(每页2048 Byte)两种NAND芯片。在此整理一下与NAND驱动相关的概念,结构体,驱动框架和流程,同时分析一下基于M

2012-01-16 20:59:13 1963

转载 总线设备驱动模型

Linux设备模型  总线总线是处理器和一个或多个设备之间的通道,在设备模型中, 所有的设备都通过总线相连, 甚至是内部的虚拟"platform"总线。总线可以相互插入。设备模型展示了总线和它们所控制的设备之间的实际连接。在 Linux 设备模型中, 总线由 bus_type 结构表示, 定义在  :struct bus_type {    const char

2012-01-16 11:15:57 691

转载 scsi调用流程

这里只是记录了一下scsi命令执行的流程,存在问题欢迎一起交流 void generic_make_request(struct bio *bio)static inline void __generic_make_request(struct bio *bio)里面ret = q->make_request_fn(q, bio);调用了__make_requeststatic i

2012-01-13 14:50:57 1993

跟我一起写Makefile.pdf

详细的描述了Makefile的基本语法包含变量,控制流,默认规则等,可以作为Makefile很好的入门学习资料。

2020-04-27

做一名真正的程序员.pptx

共有三部分,第一部分1、程序员的基本素质。第二部分2、程序的编辑、编译、运行。第三部分3、代码规范。

2020-04-27

ultra edit 高亮显示配置文件

ue打开的文档无法进行高亮显示,用这个配置文件不错

2013-09-05

Linux内核0[1].11完全注释(赵炯)

Linux内核0[1].11完全注释(赵炯),适合初学者,代码量较少

2013-07-23

VC读取Excel中的数据

经自己验证,可以直接拿来使用的一个类,丰富你的类库

2013-07-23

iSCSI详细的说明文档

iSCSI详细的说明文档,原版英文的,可以看看

2013-07-23

RTL8201 数据手册

RTL8201 网络phy芯片datasheet,仅供参考

2013-07-23

FAT文件系统原理.

该文档详细阐述了fat的基本原理及数据结构的组成

2013-07-23

MMU与CACHE详解

linux MMU CACHE 详细阐述了MMU CACHE在系统中的作用和二者之间的关系

2013-07-23

保护模式与实模式

描述了实模式与保护模式的区别,及启动过程中二者的切换过程!!

2011-12-12

编译和连接

详细介绍了现代编译器与连接器的基本原理,浅显易懂!

2011-12-12

sk_buff详解.pdf

详细描述skbuffer结构体中跟成员变量的含义及使用方法

2011-12-12

usb spec 2.0

usb spec 协议。。。。。。。。。。。。。。。。

2011-10-28

网络子系统在链路层的收发过程剖析

网络 驱动 接收 发送 链路层,分析源码,比较清楚

2011-10-28

DM9000网卡驱动分析

DM9000 网卡驱动 分析,简单明了,适合初学者。。。。。。

2011-10-28

shell编程从入门到精通

shell编程,适用于linux,unix等环境。。。。。。。。。

2011-10-28

跟我一起写Makefile

Makefile介绍的比较详细简单易懂。。。。。。。。。。

2011-10-28

Essential Linux Device Drivers

Linux kernel driver Essential Linux Device Drivers

2011-10-28

常用的元器件pcb封装库

比较全的封装库 完整的封装库,自己常用的基本上都有了

2011-06-11

51单片机C程序设计

对于初学者,是个不错的资料!!!!!!!!!

2009-08-28

SD卡最完整的中英文资料

SD卡最完整的中英文资料,SD卡最完整的中英文资料

2009-08-28

空空如也

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

TA关注的人

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