自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

知秋一叶

这世界里的每一个人,每一个东西,包括高山大海,刀剑风云,其本质都是一串数字流。

  • 博客(41)
  • 资源 (2)
  • 收藏
  • 关注

原创 路由器基础知识详解

第一章  网络互联          网络的根本目的非常简单:方便人们交换所获得的信息。但是网络的应用需求非常复杂:有的用户希望高带宽,但并不要求很长的传输距离;有的用户要求很长的距离,但对带宽要求很低;有的对网络的可靠性要求较高,而另外一些则要求较低,等等。这些都导致了网络的多样化,现在比较常见的局域网有以太网、令牌环和FDDI,广域网有DDN、X.25、帧中继、ATM等,这些网络分别从不同

2016-04-30 10:40:19 44460 8

原创 Telnet 相关知识解析

Telnet是什么?Telnet是teletype network的缩写,现在已成为一个专有名词,表示远程登录协议和方式,分为Telnet客户端和Telnet服务器程序. Telnet可以让用户在本地Telnet客户端上远端登录到远程Telnet服务器上。专业的说,Telnet是Internet上远程登录的一种程序;它可以让您的电脑通过网络登

2016-04-28 22:02:10 7332 2

原创 Shell 脚本知识回顾 (六) —— Shell 函数

一、Shell函数:Shell函数返回值、删除函数、在终端调用函数函数可以让我们将一个复杂功能划分成若干模块,让程序结构更加清晰,代码重复利用率更高。像其他编程语言一样,Shell 也支持函数。Shell 函数必须先定义后使用。Shell 函数的定义格式如下:function_name () { list of commands [ return value ]

2016-04-27 20:46:50 963 2

原创 Shell 脚本知识回顾 (五) —— Shell 循环

一、Shell for循环与其他编程语言类似,Shell支持for循环。for循环一般格式为:for 变量 in 列表do command1 command2 ... commandNdone列表是一组值(数字、字符串等)组成的序列,每个值通过空格分隔。每循环一次,就将列表中的下一个值赋给变量。in 列表是可选的,如果不用它,for

2016-04-27 20:34:33 1141 1

原创 Shell 脚本知识回顾 (四) —— Shell 命令及Shell 相关语句

一、Shell echo命令echo是Shell的一个内部指令,用于在屏幕上打印出指定的字符串。命令格式:echo arg您可以使用echo实现更复杂的输出格式控制。显示转义字符echo "\"It is a test\""结果将是:"It is a test"双引号也可以省略。显示变量name="OK"e

2016-04-27 20:22:49 1017

原创 Shell 脚本知识回顾 (三) —— 替换、运算符、字符串、数组

一、替换如果表达式中包含特殊字符,Shell 将会进行替换。例如,在双引号中使用变量就是一种替换,转义字符也是一种替换。举个例子:#!/bin/basha=10echo -e "Value of a is $a \n"运行结果:Value of a is 10这里 -e 表示对转义字符进行替换。如果不使用 -e 选项,将会原样输出:Value of a is 10\

2016-04-26 21:51:12 6059

原创 Shell 脚本知识回顾 (二) —— Shell变量

一、Shell 变量Shell支持自定义变量。定义变量定义变量时,变量名不加美元符号($),如:注意,变量名和等号之间不能有空格,这可能和你熟悉的所有编程语言都不一样。同时,变量名的命名须遵循如下规则:首个字符必须为字母(a-z,A-Z)。中间不能有空格,可以使用下划线(_)。不能使用标点符号。不能使用bash里的关键字(可用help命令查看保留

2016-04-25 23:33:11 1288

原创 Shell 脚本知识回顾 (一) —— 基础篇

(公司最近新项目启动了,需要在原来的产品类型中增加一种新款型,就是类似于以前在Linux内核中增加对某款产品的支持,我们知道想了解一个产品,就要看他的Makefile,如果工程量较大,通常将makefile的执行写在脚本文件中,现在就回顾一下Shell脚本相关知识)一、Shell 简介      Shell本身是一个用C语言编写的程序,它是用户使用Unix/Linux的桥梁,用户的

2016-04-25 23:12:53 1898

原创 C++ 学习基础篇(一)—— C++与C 的区别

程序的学习学无止境,只掌握一门语言是远远不够的,现在我们开始C++的学习之路,下面先看下C++ 与C 的区别一、C++概述1、发展历史      1980年,Bjarne Stroustrup博士开始着手创建一种模拟语言,能够具有面向对象的程序设计特色。在当时,面向对象编程还是一个比较新的理念,Stroustrup博士并不是从头开始设计新语言,而是在C语言的基础上进行创建。这就是C++

2016-04-24 20:36:30 77080 13

原创 VRP网络操作系统简介

VRP (Versatile Routing Platform)即通用路由平台,是华为在通信领域多年的研究经验结晶,是华为所有基于IP/ATM构架的数据通信产品操作系统平台。运行VRP操作系统的华为产品包括路由器、局域网交换机、ATM交换机、拨号访问服务器、IP电话网关、电信级综合业务接入平台、智能业务选择网关,以及专用硬件防火墙等。核心交换平台基于IP或ATM.      操作系统采用分层设

2016-04-24 19:41:34 9468

原创 VRP平台基本操作

一、显示系统信息display version图上所示可以知道VRP平台信息,运行的版本,运行的时间二、修改和查看设备系统时间参数1.查看时间display clock2.修改系统日期和时间三、进入系统视图界面system-view 可以配置接口、路由协议等

2016-04-23 15:27:19 12354

原创 VRP平台总体介绍及基础配置

一、VRP平台介绍1、VRP概述       通用路由平台(Versatile Routing Platform)是华为公司数据通信产品使用的网络操作系统NOS(Network Operating System)。       网络操作系统NOS是指运行于一定设备上的、提供网络接入及互联服务的系统软件,它主要实现以下功能:a -- 系统资源的合理分配和调度;b -- 网络通信服

2016-04-23 12:14:35 10553

原创 交换机开发(四)—— ARP 基础知识解析

一、ARP协议简介      Internet是由各种各样的物理网络通过使用诸如路由器之类的设备连接在一起组成的。当主机发送一个数据包到另一台主机的过程中 可能要经过多种不同的物理网络。主机和路由器都是在网络层通过IP地址来识别的,这个地址是在全世界内唯一的。 然而,数据包是通过物理网络传递的。在物理网络中,主机和路由器通过其MAC地址来识别的,其范围限于本地网络中。 MAC地址和IP地址是两

2016-04-16 22:59:40 8005 1

原创 交换机开发(三)—— 深入分析三层网络交换机的原理和设计

引言    传统路由器在网络中起到隔离网络、隔离广播、路由转发以及防火墙的作业,并且随着网络的不断发展,路由器的负荷也在迅速增长。其中一个重要原因是出于安全和管理方便等方面的考虑,VLAN(虚拟局域网)技术在网络中大量应用。VLAN技术可以逻辑隔离各个不同的网段、端口甚至主机,而各个不同VLAN间的通信都要经过路由器来完成转发。由于局域网中数据流量很大,VLAN间大量的信息交换都要通过路由器来

2016-04-16 21:12:50 16502

原创 交换机开发(二)—— 三层交换机报文转发过程

三层交换机报文转发过程如图所示,假如主机A想访问主机B,首先主机A会将自己的IP地址和子网掩码做与操作,得出网路地址(如:Host-A的IP地址100.1.1.2与自身掩码255.255.255.0做与操作后,得到的网络号是100.1.1.0).然后判断目的IP地址(即Host-B的IP地址)与自己的网络地址是不是在同一个子网.因为图中主机A和主机B不在同一子网内,

2016-04-16 20:23:10 9252 2

原创 交换机开发(一)—— 交换机的工作原理

一、交换机的工作原理     当交换机收到数据时,它会检查它的目的MAC地址,然后把数据从目的主机所在的接口转发出去。交换机之所以能实现这一功能,是因为交换机内部有一个MAC地址表,MAC地址表记录了网络中所有MAC地址与该交换机各端口的对应信息。某一数据帧需要转发时,交换机根据该数据帧的目的MAC地址来查找MAC地址表,从而得到该地址对应的端口,即知道具有该MAC地址的设备是连接在交换机的哪

2016-04-14 19:59:13 32148 4

原创 Linux 网络设备驱动开发(三) —— 网络设备驱动基本原理和框架

一、协议栈层次对比二.Linux网络子系统    Linux网络子系统的顶部是系统调用接口层。它为用户空间提供的应用程序提供了一种访问内核网络子系统的方法(socket)。位于其下面是一个协议无关层,它提供一种通用的方法来使用传输层协议。然后是具体协议的实现,在Linux中包括内核的协议TCP,UDP,当然还有IP。然后是设备无关层,它提供了协议与设备驱动通信的通用接口

2016-04-13 21:17:13 18493 2

原创 Linux 网络设备驱动开发(二) —— Linux 网络栈剖析

协议简介虽然对于网络的正式介绍一般都参考了 OSI(Open Systems Interconnection)模型,但是本文对 Linux 中基本网络栈的介绍分为四层的 Internet 模型(如图 1 所示)。图 1. 网络栈的 Internet 模型这个栈的最底部是链路层。链路层是指提供对物理层访问的设备驱动程序,这可以是各种介质,例如串口链路或以太网设备。链路层上

2016-04-13 21:02:26 7287 1

原创 Linux 网络设备驱动开发(一) —— linux内核网络分层结构

Preface   Linux内核对网络驱动程序使用统一的接口,并且对于网络设备采用面向对象的思想设计。   Linux内核采用分层结构处理网络数据包。分层结构与网络协议的结构匹配,既能简化数据包处理流程,又便于扩展和维护。内核网络结构   在Linux内核中,对网络部分按照网络协议层、网络设备层、设备驱动功能层和网络媒介

2016-04-13 20:47:15 13679

转载 Linux Wireless架构总结

1.  无线网络驱动(ath9k_htc)     ath9k_htc是一个基于USB接口的SoftMAC无线网络适配器。为了其驱动能正常工作,首先必须调用usb_register来注册驱动定义的usb_driver,以借助USB Core的力量来处理与USB协议相关的事件。其代码如下:static struct usb_driver ath9k_hif_usb_driver = {

2016-04-13 20:04:36 8363 3

原创 Linux 下wifi 驱动开发(四)—— USB接口WiFi驱动浅析

前面学习了SDIO接口的WiFi驱动,现在我们来学习一下USB接口的WiFi驱动,二者的区别在于接口不同。而USB接口的设备驱动,我们前面也有学习,比如USB摄像头驱动、USB鼠标驱动,同样都符合LinuxUSB驱动结构:           USB设备驱动(字符设备、块设备、网络设备)                                               |

2016-04-10 21:33:08 22278 6

原创 Linux 下wifi 驱动开发(三)—— SDIO接口WiFi驱动浅析

对于SDIO接口的wifi,首先,它是一个sdio的卡的设备,然后具备了wifi的功能,所以,注册的时候还是先以sdio的卡的设备去注册的。然后检测到卡之后就要驱动他的wifi功能了,显然,他是用sdio的协议,通过发命令和数据来控制的。下面先简单回顾一下SDIO的相关知识:一、SDIO相关基础知识解析1、SDIO接口       SDIO 故名思义,就是 SD 的 I/O 接口(in

2016-04-09 19:11:16 59175 7

原创 Linux 下wifi 驱动开发(二)—— WiFi模块浅析

一、什么是wifi 模块        百度百科上这样定义:        Wi-Fi模块又名串口Wi-Fi模块,属于物联网传输层,功能是将串口或TTL电平转为符合Wi-Fi无线网络通信标准的嵌入式模块,内置无线网络协议IEEE802.11b.g.n协议栈以及TCP/IP协议栈。传统的硬件设备嵌入Wi-Fi模块可以直接利用Wi-Fi联入互联网,是实现无线智能家居、M2M等物联网应用的重要组

2016-04-09 19:10:18 31060

原创 Linux 下wifi 驱动开发(一)—— WiFi基础知识解析

一、WiFi相关基础概念1、什么是wifi       我们看一下百度百科是如何定义的:      Wi-Fi是一种可以将个人电脑、手持设备(如pad、手机)等终端以无线方式互相连接的技术,事实上它是一个高频无线电信号。[1]  无线保真是一个无线网络通信技术的品牌,由Wi-Fi联盟所持有。目的是改善基于IEEE 802.11标准的无线网路产品之间的互通性。有人把使用IEEE 802.

2016-04-09 19:09:28 55879 7

原创 Linux 设备驱动的固件加载

作为一个驱动作者, 你可能发现你面对一个设备必须在它能支持工作前下载固件到它里面. 硬件市场的许多地方的竞争是如此得强烈, 以至于甚至一点用作设备控制固件的 EEPROM 的成本制造商都不愿意花费. 因此固件发布在随硬件一起的一张 CD 上, 并且操作系统负责传送固件到设备自身.     硬件越来越复杂,硬件的许多功能使用了程序实现,与直接硬件实现相比,固件拥有处理复杂事物的灵活性和便于升级、

2016-04-09 19:08:20 14428 1

原创 Linux 下的DMA浅析

DMA是一种无需CPU的参与就可以让外设和系统内存之间进行双向数据传输的硬件机制。使用DMA可以使系统CPU从实际的I/O数据传输过程中摆脱出来,从而大大提高系统的吞吐率。DMA经常与硬件体系结构特别是外设的总线技术密切相关。一、DMA控制器硬件结构       DMA允许外围设备和主内存之间直接传输 I/O 数据, DMA 依赖于系统。每一种体系结构DMA传输不同,编程接口也不同

2016-04-07 20:55:54 30294 6

原创 Linux 设备驱动开发思想 —— 驱动分层与驱动分离

前面我们学习I2C、USB、SD驱动时,有没有发现一个共性,就是在驱动开发时,每个驱动都分层三部分,由上到下分别是:1、XXX 设备驱动2、XXX 核心层3、XXX 主机控制器驱动      而需要我们编写的主要是设备驱动部分,主机控制器驱动部分也有少量编写,二者进行交互主要时由核心层提供的接口来实现;这样结构清晰,大大地有利于我们的驱动开发,这其中就是利用了Linux设备驱动开发

2016-04-07 20:11:37 14295

原创 Linux的mmap内存映射机制解析

在讲述文件映射的概念时,不可避免的要牵涉到虚存(SVR 4的VM).实际上, 文件映射是虚存的中心概念, 文件映射一方面给用户提供了一组措施,好似用户将文件映射到自己地址空间的某个部分,使用简单的内存访问指令读写文件;另一方面,它也可以用于内核的基本组织模式,在这种模式种,内核将整个地址空间视为诸如文件之类的一组不同对象的映射.中的传统文件访问方式是,首先用

2016-04-07 19:48:38 22417

原创 路由器开发(二)—— 路由器工作原理

当信息需要在两个网络之间传输时,常用路由器这种互连设备来负责数据的传输。路由器的主要工作是:路径的决定和数据包的转发(从路由器一个接口输入,然后选择合适接口输出);维护路由表。    路由器工作的方式非常简洁明了,从接收报文中抽取目的地址,并确定地址中的网络号,查找路由选择表以获得与目标网络相匹配的表项。在路由选择表中的匹配表项中包括下一站、目的地、输出接口和其它与路由有关的参数。报文被封装在

2016-04-05 14:38:46 20524 2

原创 路由器开发(一)—— 路由器硬件结构及软件体系

一、路由器的硬件构成         路由器主要由以下几个部分组成:输入/输出接口部分、包转发或交换结构部分(switching fabric)、路由计算或处理部分。如图所示                                       图1    路由器的基本组成       输入端口是物理链路和输入包的进口处。端口通常由线卡提供,一块线卡一般支持4、8或16个

2016-04-05 14:09:02 35378 3

原创 Linux SD卡驱动开发(六) —— SD卡启动过程总体分析

一、工作流程mmc驱动主要文件包括drivers/mmc/card/block.cdrivers/mmc/card/queue.cdrivers/mmc/core/core.cdrivers/mmc/core/host.cdrivers/mmc/core/内核启动时,首先执行core/core.c的mmc_init,注册mmc、sd总线,以及一个host class设备

2016-04-04 20:52:08 7383 2

原创 Linux USB 驱动开发(五)—— USB驱动程序开发过程简单总结

设备驱动程序是操作系统内核和机器硬件之间的接口,由一组函数和一些私有数据组成,是应用程序和硬件设备之间的桥梁。在应用程序看来,硬件设备只是一个设备文件,应用程序可以像操作普通文件一样对硬件设备进行操作。      设备驱动程序是内核的一部分,主要完成以下功能:对设备的初始化和释放;把数据从内核传送到硬件设备和从硬件设备读取数据;读取应用程序数据传送给设备文件和回送应用程序请求的数据;检测和处理

2016-04-04 17:00:17 23931 1

原创 Linux USB 驱动开发(四)—— 热插拔那点事

学习USB热插拔之前,先学习一些USB的硬件知识:一、USB基础概念1、硬件知识(USB插座和插头)       在最初的标准里,USB接头有4条线:电源,D-,D+,地线。我们暂且把这样的叫做标准的USB接头吧。后来OTG出现了,又增加了miniUSB接头。而miniUSB接头则有5条线,多了一条ID线,用来标识身份用的。标准USB口只有A型和B型。其中每一型又分为插头和插座,例如A

2016-04-04 16:08:04 22929 2

原创 Linux USB 驱动开发实例 (三)—— 基于USB总线的无线网卡浅析

一、USB设备驱动程序的构成1、设备的探测       用于检查传递给探测函数的设备信息,确认驱动程序是否适合该设备。2、数据的发送和接收       负责主机到设备的发送和设备到主机的数据接收。3、设备断开      当设备断开时候,模块负责清除和该设备关联的所有资源。4、模块的加载和卸载      用于加载和卸载usb接口的无线网卡驱动程序。二、US

2016-04-04 12:06:00 8400

原创 WIFI vs 无线网

大家好多人都在使用无线设备上网,好多人对一些名词充满了好奇,比如WLAN和WIFI的区别是什么? WIFI无线上网和WLAN无线上网是什么意思?      这篇文章中我们为大家介绍什么是WIFI无线上网?大家可能会有这样的疑问,听说最多的应该是WLAN无线上网,很多笔记本电脑使用的都是WLAN无线上网,那么WLAN和WIFI有什么区别呢?一、基础概念a -- WLAN无线上

2016-04-03 23:39:01 2395

原创 Linux SD卡驱动开发(五) —— SD 卡驱动分析Core补充篇

Core层中有两个重要函数 mmc_alloc_host 用于分配一个mmc的控制器,前面已经学习过,这里不再阐述;另一个就是 mmc_add_host      下面是这个函数的详细分析mmc_add_host [core/host.c]/** * mmc_add_host - initialise host hardware * @host: mmc host * * Regi

2016-04-02 20:14:46 3099

原创 路由器和交换的本质区别解析

面试中经常遇到此类问题,首先我们遇到此类问题必须明白题目所要考察我们的目的是什么:1:考察点:这类问题主要考察面试者对路由器和交换机的基本概念和工作原理的掌握程度,面试官主要是想了解面试者基础知识是否牢固。2:问题所涉及到的知识点有:交换机的转发原理、路由器的转发原理、以及交换和路由的区别。3:解答思路:  首先需要我们清楚的基本概念:一、交换机和路由器的基本概念a

2016-04-02 16:30:15 12045 3

原创 Linux SD卡驱动开发(四) —— SD 控制器之真正的硬件操作

前面对SD卡控制器有了一个基本的介绍。其实SD控制器层更过的意义是为core层提供一种操作SD卡硬件的一种方法,当然不同的控制器对硬件控制的方法不尽相同,但是他们最终都能像core层提交一个统一的封装有操作方法的数据结构,那便是即将闪亮登场的struct mmc_host_ops....对应的host文件为s3cmci.c。    接下来就来揭开与之对应的struct mmc_host_ops

2016-04-02 10:18:21 8457 3

原创 Linux SD卡驱动开发(三) —— SD 卡驱动分析CORE篇

废话不多说,直接切进主题:       Linux在内核源码的drivers/mmc/core文件夹下为我们的提供了一系列SD卡的接口服务函数。可以查看Makefile如下可见,core文件夹下有针对总线的服务bus.c,针对主控制器的服务host.c,针对SD卡的服务sd.c, sd_ops.c等等。其中,最为核心的一个函数便是之前提到的位于core.c的mmc_rescan

2016-04-02 09:45:37 10184 2

原创 Linux SD卡驱动开发(二) —— SD 卡驱动分析HOST篇

回顾一下前面的知识,MMC 子系统范围三个部分:HOST 部分是针对不同主机的驱动程序,这一部是驱动程序工程师需要根据自己的特点平台来完成的。CORE 部分: 这是整个MMC 的核心存,这部分完成了不同协议和规范的实现,并为HOST 层的驱动提供了接口函数。CARD 部分:因为这些记忆卡都是块设备,当然需要提供块设备的驱动程序,这部分就是实现了将你的SD 卡如何实现为块设备的。它们

2016-04-01 22:19:18 24808 9

98DX3336芯片手册

98DX3336

2016-07-06

vim配置(程序自动补全)

使用过Source Insight的人一定对它的自动补全功能印象深刻,在很多的集成开发环境中,也都支持自动补全。vim做为一个出色的编辑器,这样的功能当然少不了。至于如何实现程序自动补全,网上教程很多。这里,我将自己用的配置文件发给大家,大家可以移步(待会会补上地址),只要简单的两步,就能实现vim的程序自动补全功能,大大增加了在vim上的开发效率。

2015-12-26

空空如也

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

TA关注的人

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