CN101894019B - 一种嵌入式Linux操作系统网络加速运行的系统及方法 - Google Patents
一种嵌入式Linux操作系统网络加速运行的系统及方法 Download PDFInfo
- Publication number
- CN101894019B CN101894019B CN201010200734.6A CN201010200734A CN101894019B CN 101894019 B CN101894019 B CN 101894019B CN 201010200734 A CN201010200734 A CN 201010200734A CN 101894019 B CN101894019 B CN 101894019B
- Authority
- CN
- China
- Prior art keywords
- lwip
- unit
- linux
- function library
- physical hardware
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Landscapes
- Multi Processors (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种嵌入式Linux操作系统网络加速运行的系统,主要包括以下单元:应用程序单元、Lwip函数库单元、系统接口单元、Linux系统单元、底层硬件接口单元、硬件平台单元、物理硬件网络设备单元。同时本发明还公开了一种嵌入式Linux操作系统网络加速运行的方法。通过本发明可以减少嵌入式Linux操作系统TCP/IP协议栈的代码量,使嵌入式Linux操作系统在进行网络通信时运行速度更快。
Description
技术领域
本发明涉及嵌入式Linux操作系统网络领域,具体涉及一种嵌入式Linux操作系统网络加速运行的系统及方法。
背景技术
在许多行业中,嵌入式系统几乎无处不在,特别是工业自动化与测控仪器仪表、数字家电、移动计算设备、网络设备、现代交通系统的领域成了嵌入式技术得以高速发展的平台。现在的世界是网络互联的世界,嵌入式系统和网络这两大主流技术的融合速度越来越快,越来越多的嵌入式设备都要求实现网络通信的功能。
网络技术的核心部分就是TCP/IP协议,它是互联网中的基本通信语言或协议,一般目前嵌入式Linux操作系统使用的网络协议栈由BSD TCP/IP协议栈发展起来的,主要针对的是服务器、个人电脑等性能较强的设备。
目前大多数嵌入式设备并不具备很强的运算和处理能力,而这些嵌入式设备又需要实现网络的支持,如果使用Linux提供的网络实现方式,会给这些性能相对较低的设备带来较大的负载,这些设备需要花大部分的资源去进行网际互联的处理,这对于资源十分宝贵的低端嵌入式设备来说无疑是不正确的处理方式。需要寻找一种更小更快的网络实现方案来满足这些低端嵌入式设备的网络需求。
发明内容
本发明提供一种嵌入式Linux操作系统网络加速运行的系统及方法,能为低端嵌入式设备提供更加快速的网络支持。
一种嵌入式Linux操作系统网络加速运行的系统,主要包括以下单元:应用程序单元、Lwip函数库单元、系统接口单元、Linux系统单元、底层硬件接口单元、硬件平台单元、物理硬件网络设备单元。
所述应用程序单元为嵌入式Linux操作系统提供基本和网络应用程序。
所述Lwip函数库单元为嵌入式Linux操作系统提供一个小型的TCP/IP协议栈,该协议栈的优点是内存使用量少和代码体积小。
所述系统接口单元为嵌入式Linux操作系统的Lwip函数库提供基本的系统服务,比如信号量、邮箱、线程、超时等系统服务。
所述Linux系统单元为嵌入式设备提供了软件运行环境。
所述硬件平台单元为嵌入式设备提供了硬件运行环境。
所述底层硬件接口单元让物理硬件网络设备能正常运行在上面所述的软件和硬件环境中。
所述物理硬件网络设备单元为嵌入式系统提供最底层的网络支持,所有的网络数据都是通过这个单元进行发送和接收。
一种嵌入式Linux操作系统网络加速运行的方法,包括步骤:
步骤1:获取Lwip函数库;
步骤2:根据硬件平台和编译器环境为Lwip函数库定义一些基本数据类型和性能测试宏;
步骤3:为Lwip和Linux系统建立系统服务接口,Linux操作系统主要为Lwip函数库提供信号量,线程,邮箱,超时处理等系统服务;
步骤4:为Lwip和物理硬件网络设备提供底层硬件接口,这个接口主要是实现物理网络设备收发数据的功能。
从上述技术方案可以看出,由于本发明具有以下有益效果:
1.本发明可以减少嵌入式Linux操作系统TCP/IP协议栈的代码量。
2.本发明可以减少嵌入式Linux操作系统进行网络通信时的RAM使用量。
3.本发明可以使嵌入式Linux操作系统在进行网络通信时运行速度更快。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1是本发明整体结构图;
图2是本发明方法流程图;
图3是本发明基本数据结构定义流程图;
图4是本发明Lwip函数库和Linux系统服务接口建立流程图;
图5是本发明Lwip和物理硬件网络设备底层硬件接口建立流程图;
图6是本发明物理硬件网络设备的寄存器驱动建立流程图;
图7是本发明物理硬件网络设备的数据传递驱动建立流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
本发明实施例提供一种嵌入式Linux操作系统网络加速运行的系统及方法,能够为低端嵌入式设备提供网络支持,以下分别进行详细说明。
图1为本发明整体结构图:
如图1所示,本发明主要包括以下单元:应用程序单元、Lwip函数库单元、系统接口单元、Linux系统单元、底层硬件接口单元、硬件平台单元、物理硬件网络设备单元。
所述应用程序单元为嵌入式Linux操作系统提供基本和网络应用程序。
所述Lwip函数库单元为嵌入式Linux操作系统提供一个小型的TCP/IP协议栈,该协议栈的优点是内存使用量少和代码体积小。
所述系统接口单元为嵌入式Linux操作系统的Lwip函数库提供基本的系统服务,比如信号量、邮箱、线程、超时等系统服务。
所述Linux系统单元为嵌入式设备提供了软件运行环境。
所述硬件平台单元为嵌入式设备提供了硬件运行环境。
所述底层硬件接口单元让物理硬件网络设备能正常运行在上面所述的软件和硬件环境中。
所述物理硬件网络设备单元为嵌入式系统提供最底层的网络支持,所有的网络数据都是通过这个单元进行发送和接收。
图2为本发明所述方法流程图:
如图2所示,包括步骤:
步骤1:获取Lwip函数库
步骤2:根据硬件平台和编译器环境为Lwip函数库定义一些基本数据类型和性能测试宏。
步骤3:为Lwip和Linux系统建立系统服务接口,Linux操作系统主要为Lwip函数库提供信号量,线程,邮箱,超时处理等系统服务。
步骤4:为Lwip和物理硬件网络设备提供底层硬件接口,这个接口主要是实现物理网络设备收发数据的功能。
图3为基本数据结构定义流程图:
步骤21:根据硬件平台的特点和编译器所定义的无符号字符型,有符号字符型,无符号整型,有符号整型,无符号长整型,有符号长整型分别赋值给Lwip函数库所需要被实现的数据类型。
步骤22:为Lwip函数库编写性能测试宏:开始测量宏PERF_START和结束测量并记录结果宏PERF_STOP(x)。
图4为Lwip函数库和Linux系统服务接口建立流程图:
Linux操作系统提供了众多系统服务,而Lwip函数库仅仅需要Linux为其提供少数几种系统服务,因此只需要利用Linux提供的系统服务函数去封装Lwip函数库需要实现的系统服务函数。
步骤31:用Linux操作系统的信号量系统服务函数为Lwip函数库实现信号量的创建、删除、释放、申请系统服务。
步骤32:用Linux操作系统的消息队列系统服务为Lwip函数库实现邮箱的创建、删除、投递、接收系统服务。
步骤33:用Linux操作系统的线程系统服务为Lwip函数库实现线程的创建及优先级分配系统服务。
步骤34:Lwip超时处理系统服务并不需要借助Linux操作系统提供的系统服务来完成,Lwip函数库本身提供了一个超时指针,只需在某个线程超时时,返回当前线程的超时指针。
图5为Lwip和物理硬件网络设备底层硬件接口建立流程图:
底层硬件接口需要操作物理硬件网络设备的寄存器实现物理硬件网络设备基本的初始化、数据接收、数据发送、中断处理等操作,对寄存器的读写只能在Linux操作系统的内核空间完成。
步骤41:编写物理硬件网络设备的寄存器驱动,并为每个寄存器的读写操作提供操作接口,操作接口会以数字形式标明,比如要操作某个寄存器并为寄存器赋予某个特定数值,我们将这个操作接口命名为数字n,依次类推。寄存器驱动用Linux操作系统内核函数lotcl实现。一般物理硬件网络设备的寄存器有:接收数据报后中断寄存器、发送和接收数据端口寄存器、发送数据控制寄存器。
步骤42:编写物理硬件网络设备的数据传递驱动,由于网络数据帧的发送操作是从用户空间先传送送到Linux操作系统的内核空间,最后将网络数据帧在内核空间赋值给物理硬件网络设备的对应寄存器。网络数据帧的接收操作则是从物理硬件网络设备的对应寄存器接收数据,再将这些数据从Linux操作系统的内核空间传递到用户空间。
步骤43:物理硬件网络设备初始化,根据不同的物理硬件网络设备,初始化也会相应的不同,初始化一般会使用步骤41所述的寄存器驱动去写相关寄存器进行物理接口选择、收发控制位使能、是否接收广播数据、收到数据是否产生中断等操作。这些操作决定了物理硬件网络设备的工作模式。
步骤44:物理硬件网络设备发送数据,不同的物理硬件网络设备,发送数据操作也是不相同的,发送数据一般会先使用步骤42所述的数据传递驱动将用户需要发送的数据传递到Linux内核空间,再使用步骤41所述的寄存器驱动写特定的数值到发送控制寄存器和发送数据长度寄存器,最后将将要发送的数据依次写到端口寄存器中,端口寄存器负责把数据传送到网络上。
步骤45:物理硬件网络设备接收数据,不同的物理硬件网络设备,接收数据操作也不一样,接收数据一般会先从端口寄存器中依次读数据,再使用步骤42所述的数据传递驱动将数据Linux内核空间传递到用户空间。
图6为物理硬件网络设备的寄存器驱动建立流程图:
步骤411:将物理硬件网络设备的寄存器驱动设备在Linux内核中注册的设备名取名为embeded-net。
步骤412:为物理硬件网络设备的物理接口选择寄存器建立操作接口,一般物理硬件网络设备有几种物理接口可选择,一种物理接口需要为其编写一个操作接口,例如CS8900网卡设备需要使用10BASE-T物理接口,需要给LINECTL寄存器赋00D3H值,在驱动中需要调用Linux内核函数_raw_write(0x00d3H,LINECTL)为其建立一个操作接口。如果需要读某个寄存器,则需要调用Linux内核函数_raw_read()为其建立一个操作接口。
步骤413:参照步骤412,为可能存在的寄存器操作情况编写操作接口。
步骤414:将所有的操作接口进行编号,编号从1开始,依次累加。
步骤416:为编好号的操作接口用switch(cmd)语句进行封装,cmd指的是操作接口编号。即把所有编号的操作接口放入switch(cmd)函数体内,在应用程序中,就可以根据编号去选择需要进行某个接口操作。
步骤417:为封装好的switch(cmd)语句建立寄存器驱动的iotcl操作,ioctl()为内核函数,通过ioctl操作可以实现用户空间和内核空间的交互。在应用程序中,先open步骤411所述的embeded-net设备得到文件描述符fd,再用ioctl(fd,cmd,...)便可操作相应的操作接口。
图7为物理硬件网络设备的数据传递驱动建立流程图:
步骤421:将物理硬件网络设备的数据传递驱动在Linux内核中注册的设备名取名为embeded-inter。
步骤422:编写从用户空间到内核空间的数据传递驱动,先需要使用Linux内核函数copy_from_user(),这个函数的作用就是将用户空间的数据传递到内核空间,把copy_from_user()函数封装到数据传递驱动的write操作。在应用程序中,先open步骤421所述的embeded-inter设备得到文件描述符fd,再用write(fd,length,buffer)将数据buffer送入到Linux内核空间。
步骤423:编写从内核空间到用户空间的数据传递驱动,先需要使用Linux内核函数copy_to_user(),这个函数的作用就是将内核空间数据传递到用户空间,把copy_to_user()函数封装到数据传递驱动的read操作。在应用程序中,先open步骤421所述的embeded-inter设备得到文件描述符fd,再用read(fd,length,buffer)将数据buffer从内核空间读到用户空间。
需要说明的是,上述装置和系统内的各单元之间的信息交互、执行过程等内容,由于与本发明方法实施例基于同一构思,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁盘或光盘等。
以上对本发明实施例所提供的一种嵌入式Linux网络加速的方法,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (2)
1.一种嵌入式Linux操作系统网络加速运行的系统,其特征在于,主要包括以下单元:应用程序单元、Lwip函数库单元、系统接口单元、Linux系统单元、底层硬件接口单元、硬件平台单元、物理硬件网络设备单元;
所述应用程序单元为嵌入式Linux操作系统提供基本应用程序和网络应用程序;
所述Lwip函数库单元为嵌入式Linux操作系统提供一个小型的TCP/IP协议栈,该协议栈的优点是内存使用量少和代码体积小;
所述系统接口单元为嵌入式Linux操作系统的Lwip函数库提供基本的系统服务,包括信号量、邮箱、线程、超时;
所述Linux系统单元为嵌入式设备提供了软件运行环境;
所述硬件平台单元为嵌入式设备提供了硬件运行环境;
所述底层硬件接口单元让物理硬件网络设备能正常运行在Linux系统单元的软件环境中和硬件平台单元的硬件环境中;
所述物理硬件网络设备单元为嵌入式系统提供最底层的网络支持,所有的网络数据都是通过这个单元进行发送和接收,所述物理硬件网络设备单元包括有寄存器,底层硬件接口需要操作物理硬件网络设备的寄存器实现物理硬件网络设备单元初始化、数据接收、数据发送、中断处理操作。
2.一种嵌入式Linux操作系统网络加速运行的方法,其特征在于,包括以下步骤:
步骤1:获取Lwip函数库;
步骤2:根据硬件平台和编译器环境为Lwip函数库定义一些基本数据类型和性能测试宏:根据硬件平台的特点和编译器所定义的无符号字符型,有符号字符型,无符号整型,有符号整型,无符号长整型,有符号长整型分别赋值给Lwip函数库所需要被实现的数据类型;为Lwip函数库编写性能测试宏:开始测量宏PERF_START和结束测量并记录结果宏PERF_STOP;
步骤3:为Lwip和Linux系统建立系统服务接口,Linux操作系统主要为Lwip函数库提供信号量,线程,邮箱,超时处理系统服务,具体包括以下步骤:
步骤31:用Linux操作系统的信号量系统服务函数为Lwip函数库实现信号量的创建、删除、释放、申请系统服务;
步骤32:用Linux操作系统的消息队列系统服务为Lwip函数库实现邮箱的创建、删除、投递、接收系统服务;
步骤33:用Linux操作系统的线程系统服务为Lwip函数库实现线程的创建及优先级分配系统服务;
步骤34:Lwip超时处理系统服务并不需要借助Linux操作系统提供的系统服务来完成,Lwip函数库本身提供了一个超时指针,只需在某个线程超时时,返回当前线程的超时指针;
步骤4:为Lwip和物理硬件网络设备提供底层硬件接口,这个接口主要是实现物理网络设备收发数据的功能,包括编写物理硬件网络设备的寄存器驱动,并为每个寄存器的读写操作提供操作接口;编写物理硬件网络设备的数据传递驱动;根据不同的物理硬件网络设备进行物理硬件网络设备初始化;物理硬件网络设备发送数据;物理硬件网络设备接收数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010200734.6A CN101894019B (zh) | 2010-06-12 | 2010-06-12 | 一种嵌入式Linux操作系统网络加速运行的系统及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010200734.6A CN101894019B (zh) | 2010-06-12 | 2010-06-12 | 一种嵌入式Linux操作系统网络加速运行的系统及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101894019A CN101894019A (zh) | 2010-11-24 |
CN101894019B true CN101894019B (zh) | 2014-10-01 |
Family
ID=43103220
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010200734.6A Expired - Fee Related CN101894019B (zh) | 2010-06-12 | 2010-06-12 | 一种嵌入式Linux操作系统网络加速运行的系统及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101894019B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102394815B (zh) * | 2011-10-28 | 2014-03-05 | 深圳市共进电子股份有限公司 | Linux下实现网络加速的方法 |
CN108089815A (zh) * | 2016-11-23 | 2018-05-29 | 阿里巴巴集团控股有限公司 | 一种数据筛选方法和装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1376372A2 (en) * | 2002-06-26 | 2004-01-02 | Microsoft Corporation | Process-mode independent driver model |
CN101000550A (zh) * | 2006-12-13 | 2007-07-18 | 青岛大学 | 一种嵌入式系统远程在线再配置方法 |
CN101593164A (zh) * | 2009-07-13 | 2009-12-02 | 中国船舶重工集团公司第七○九研究所 | 基于嵌入式Linux的从USB HID装置及固件实现方法 |
-
2010
- 2010-06-12 CN CN201010200734.6A patent/CN101894019B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1376372A2 (en) * | 2002-06-26 | 2004-01-02 | Microsoft Corporation | Process-mode independent driver model |
CN101000550A (zh) * | 2006-12-13 | 2007-07-18 | 青岛大学 | 一种嵌入式系统远程在线再配置方法 |
CN101593164A (zh) * | 2009-07-13 | 2009-12-02 | 中国船舶重工集团公司第七○九研究所 | 基于嵌入式Linux的从USB HID装置及固件实现方法 |
Non-Patent Citations (1)
Title |
---|
李树雷等.利用LwIP构建嵌入式Linux系统TCP/IP协议栈.《第一届建立和谐人机环境联合学术会议(HHME2005)论文集》.2005, * |
Also Published As
Publication number | Publication date |
---|---|
CN101894019A (zh) | 2010-11-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101177971B1 (ko) | 보호 영역 경계들에서의 오브젝트 호출 방법, 시스템 및 장치 | |
EP2843552B1 (en) | Method and system for executing callback functions delivered via a communication between a user-space application and the operating system kernel | |
CN107678835A (zh) | 一种数据传输方法及系统 | |
KR101856486B1 (ko) | 컴퓨팅 디바이스에서 수행되는 오픈 시스템과 메인프레임 시스템 사이의 양방향 호출 방법 | |
CN108829529A (zh) | 虚拟机内存共享方法、装置、计算机设备及存储介质 | |
CN112905304A (zh) | 一种虚拟机间通信方法、装置、物理主机及介质 | |
CN116860391A (zh) | Gpu算力资源调度方法、装置、设备和介质 | |
CN108829530B (zh) | 一种图像处理方法及装置 | |
CN103092676A (zh) | 虚拟机集群的模拟输入输出方法、装置及系统 | |
CN111427617B (zh) | 数据处理方法、装置及设备 | |
CN101894019B (zh) | 一种嵌入式Linux操作系统网络加速运行的系统及方法 | |
CN114397999A (zh) | 基于非易失内存接口-远程处理消息传递的通信方法、装置及设备 | |
CN109656675A (zh) | 总线设备、计算机设备及实现物理主机云存储的方法 | |
KR101468179B1 (ko) | 클라우드 컴퓨팅 환경에서 가상 환경을 변경하는 방법 및 이를 이용하는 단말 장치 | |
CN106933646B (zh) | 一种创建虚拟机的方法及装置 | |
Bertolotti et al. | Modular design of an open-source, networked embedded system | |
CN117221050A (zh) | 存储网关、芯片及电子设备 | |
CN108345492A (zh) | 一种虚拟化环境中的数据通信的方法、装置及处理器 | |
CN106575226B (zh) | 用于计算的装置、方法和计算机可读介质 | |
CN108307286B (zh) | 一种基于nfc实现安卓设备间通信的方法和系统 | |
CN101917780B (zh) | 无线通信终端网络设备功能的实现方法及装置 | |
CN111371799B (zh) | Mctp控制器收发数据的控制方法、装置及设备 | |
CN109656674A (zh) | 一种计算机设备、虚拟化芯片及数据传输方法 | |
TW202230140A (zh) | 管理記憶體的方法及非暫時性電腦可讀媒體 | |
US11119787B1 (en) | Non-intrusive hardware profiling |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C41 | Transfer of patent application or patent right or utility model | ||
TR01 | Transfer of patent right |
Effective date of registration: 20160726 Address after: 3, building 830002, executive building, 58 Qianjin Street, Tianshan, Xinjiang, Urumqi Patentee after: Xinjiang Rui net IKEA Technology Co., Ltd. Address before: 510006 teaching experiment center, east campus, Zhongshan University, Panyu District, Guangdong, C401, China Patentee before: Sun Yat-sen University |
|
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20141001 Termination date: 20200612 |