行业资讯
TCP/IP协议栈在嵌入式实时操作系统中的移植与实现
发布时间:2023-10-16 来源: 访问:
摘要:LwIP是一套用于嵌入式系统的开源、精简后的TCP/IP协议,具有移植性强、资源占用率低等特点。基于嵌入式系统的网络通信需要,本文论述了LwIP在uC/OS操作系统和S3C4510B处理器平台的实现方法,完成了LwIP的移植,为嵌入式系统与Internet网络互联提供了一种可行的解决方案。
关键字:LwIP; uC/OS; S3C4510
中图分类号:TP368.2 文献标识码:A
随着互联网技术及嵌入式系统智能化技术的不断发展,嵌入式系统的网络通信功能得到广泛应用并成为研究热点,嵌入式系统实现以太网通信,主要技术难点在于如何利用其有限的硬件资源来实现TCP/IP协议。
在32位ARM嵌入式系统中,主要通过嵌入式多任务操作系统对TCP/IP协议进行处理,从而实现网络通信功能。在嵌入式系统中常用的Linux操作系统及uClinux操作系统中都集成了完整的TCP/IP协议,但其占用空间大(网络部分源代码约6MB)、实现过程复杂。因此,LwIP作为一种适合嵌入式系统硬件特点的,简化后的TCP/IP协议(源代码约1MB),在嵌入式系统中得到广泛应用。
本文以嵌入式实时操作系统uC/OS和网络处理器S3C4510B作为软、硬件平台,在此基础上移植了LwIP协议,实现了嵌入式系统的以太网通信功能。
1 LwIP协议简介
LwIP是Light Weight IP(轻量级IP协议)的缩写,它是由瑞士计算机科学院(Swedish Institute of Computer Science)Adam Dunkels等开发,主要用于嵌入式系统的开源TCP/IP协议栈。LwIP可以移植到各种操作系统上运行,也可以在无操作系统的环境下独立运行,其特点是在保留TCP/IP协议主要功能的基础上对完整的TCP/IP协议栈进行了裁剪,从而减少对系统硬件资源占用,运行LwIP一般只需要几十KB的RAM空间和四十KB的ROM空间,这使得LwIP可以方便地移植到基于单片机或ARM的嵌入式系统中。
2 移植LwIP的软硬件平台
uC/OS是Micro Control Operation System的缩写,它是由美国人Jean.J.Labrosse编写的一种抢占式实时多任务内核,具有高度可移植性,适用于没有存储管理单元MMU的嵌入式处理器。uC/OS内核提供了任务调度、时间管理、任务间同步与通信、内存管理和中断服务等嵌入式实时操作系统的基体功能[1]。
S3C4510B处理器是三星公司生产的基于ARM7TDMI内核、针对网络应用的嵌入式处理器,S3C4510B内嵌一个可以10M/100M速率工作在半双工或全双工模式下的以太网控制器,并提供了媒体独立接口(MII --Media Independent Interface)[2]。从硬件的角度看,以太网接口电路主要由MAC控制器和物理层接口两部分构成,S3C4510B片内已经包含了MAC层控制器,只需外接一片物理层接口芯片(本系统中采用DM9161)就构成了完整的以太网接入通道。
本文以S3C4510B处理器作为硬件平台,uC/OS操作系统作为软件平台,研究LwIP嵌入式TCP/IP协议栈与uC/OS操作系统接口函数的编写,并根据S3C4510B处理器以太网模块工作原理,设计合理的网络接口函数,从而实现LwIP在S3C4510B和uC/OS平台的移植和实现。
3 LwIP的移植流程
如图1所示,从uC/OS、S3C4510B硬件平台和LwIP三者的关系看,移植工作主要集中在两个部分(图中虚线箭头部分):一方面,LwIP工作在uC/OS之上,为了系统的可移植性,LwIP中划分出了操作系统模拟层,由该层向上提供了进程间通信、任务调度等操作系统的标准服务,移植时需使用实际操作系统的相关函数来实现模拟层,另一方面,S3C4510处理器内部提供了MAC控制器并外接了物理层芯片DM9161,LWIP的移植还需设计相应的底层硬件驱动函数[3]。
图1 软硬件系统结构框图
Fig.1 Block diagram of hardware/software system
3.1 编写LwIP与UC/OS操作系统接口函数
LwIP在设计时已经考虑了系统的可移植性,为了方便LwIP移植,和操作系统相关的函数调用及数据结构被划分到操作系统模拟层(operating system emulation layer),操作系统模拟层使用统一的接口向上提供创建进程、进程间消息传递等由操作系统提供的服务,应根据uC/OS的相关系统服务函数来实现LwIP的模拟层,移植过程如下:
(1)定义数据类型和数据存储格式
typedef unsigned char u8_t;
typedef char s8_t;
typedef unsigned short u16_t;
typedef short s16_t;
typedef unsigned int u32_t;
typedef int s32_t;
(2)任务间通信方式的实现
uC/OS操作系统已经包含了LwIP需要使用的信号量和邮箱这两种进程间消息传递方式,移植工作主要使用uC/OS中的系统服务函数来实现LwIP模拟层接口函数,供LwIP上层函数调用,应注意uC/OS中提供的函数和LwIP模拟层接口函数参数和返回值并不统一,应根据模拟层接口函数的格式对函数执行结果(返回值)等做出相应调整,各函数的对应关系如表所示。
表1 接口函数比较表
Tab.1 Comparing between interface function
LwIP模拟层接口函数名称
函数功能描述
需调用的uC/OS实现函数
sys_sem_new
新建信号量
OSSemCreate
sys _sem_free
释放信号量
OSSemDel
sys_sem_signal
发送信号量
OSSemPost
sys_arch_sem_wait
等待信号量并阻塞线程
OSSemPend
sys_mbox_new
建立邮箱(向邮箱链表申请邮箱)
OSQCreate创建邮箱链表
sys_mbox_post
投递消息到邮箱
OSQPost
sys_arch_mbox_fetch
等待邮箱中的消息并阻塞线程
OSQPend
3.2 编写LwIP与uC/OS操作系统接口函数
S3C4510处理器片内集成了BDMA(Buffered DMA)模块和MAC控制器,MAC控制器和外接的物理层芯片DM9161相连,MAC控制器通过响应BDMA的数据准备完毕信号从BDMA接收数据并发送出去,或将接收到的数据发送给BDMA[4]。网络设备接口函数设计分为建立网络接口初始化函数、建立数据包发送函数、数据包接收函数和建立网络接收/发送中断服务程序四个部分[5]:
(1)建立网络接口初始化函数,实现流程如下:
//1.复位DM9161和MAC控制器
ResetPHY();
MACCON = Reset;
//2.初始化BDMA接收和发送缓冲区描述符,使每个描述符指向正确的缓冲区地址
InitDescriptors ();
//3.设置CAM地址
CAM_set();
//4.初始化MAC、BDMA控制器寄存器初始值
BDMATXCON = gBDMATXCON;
MACTXCON = gMACTXCON;
BDMARXCON = gBDMARXCON;
MACRXCON = gMACRXCON;
//5.打开BDMA接受中断并设置为IRQ模式
INTMOD &= 0xfff0ffff ;
INTMSK &= 0xfff0ffff ;
(2)建立数据包接收函数
网络数据包接收过程开始于BDMA产生数据包接收中断,中断服务程序向处于阻塞状态的以太网接收进程发送信号量hEthernetInput,接收线程收到该信号量后调用low_level_input函数将接收到的数据从BDMA缓冲区转移到pbuf链表中供上层函数使用,数据包接收函数的实现过程如下:
相关文章
热门资讯
摘要:9月28日-29日,《两岸关系》杂志社社长任勉一行3人来漯河临颍就陈星聚杯太极拳比赛筹备工作情况进行调...
摘要:摘 要:健康的心理素质是健康人的必备素质。在学科教学中进行心理健康的教育,是心理健康教育的重要途径...
火花 《火花》杂志,于1958年经国家新闻出版总署批准正式创刊,CN:14-1037/I,本刊在国内外有广泛的覆盖面,题材新颖,信...
解放军理论学习 《解放军理论学习》杂志,于2001年经国家新闻出版总署批准正式创刊,CN:11-5384/D,本刊在国内外有广泛的覆盖面...
中外医学研究 《中外医学研究》杂志,于2003年经国家新闻出版总署批准正式创刊,CN:23-1555/R,本刊在国内外有广泛的覆盖面,题...
中华文化画报 《中华文化画报》(月刊)创刊于1993年,是由中国艺术研究院主办。是一本图文并茂地解读中华传统文化艺术、展示...
黑龙江水利科技 《黑龙江水利科技》杂志,于1973年经国家新闻出版总署批准正式创刊,CN:23-1269/TV,本刊在国内外有广泛的覆盖面...
野草 《野草》杂志,于1985年经国家新闻出版总署批准正式创刊,CN:33-1038/I,本刊在国内外有广泛的覆盖面,题材新颖,信...