基于ARM的嵌入式TCP/IP协议的实现

嵌入式经验总结——TCP传输控制协议 传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793定义。 阅读详情

来源:电子技术应用  作者:武汉理工大学自动化学院 胡友水 李汉强

摘要:介绍嵌入式TCP/IP协议在低速处理器中的一种简化实现方案,并成功应用于某分布式监控系统中。

    关键词:TCP/IP协议 嵌入式 ARM
在网络应用日益普遍的今天,越来越多的嵌入式设备实现Internet网络化。TCP/IP协议是一种目前被广泛采用的网络协议。嵌入式Internet的技术核心是在嵌入式系统中部分或完整地实现TCP/IP协议。由于TCP/IP协议比较复杂,而目前嵌入式系统中大量应用低速处理器,受内存和速度限制,有必要将TCP/IP协议简化。

图1 协议处理

1 TCP/IP协议的实现
嵌入式TCP/IP协议一般实现:ARP/RARP、IP、ICMP、TCP、UDP、HTTP、SMTP、FTP、TELNET等协议,协议处理的主要流程如图1所示。
1.1 TCP协议的实现
工业控制领域传输层采用TCP协议、不用UDP协议,是考虑到实时监控系统中传输量并不大,而可靠性要求较高。TCP协议是面向连接的、端对端的可靠通信协议。它采用了许多机制来保证可靠传输,应用于嵌入式系统显得过于复杂。
TCP协议数据传输可分为三个阶段:建立连接、传输数据和断开连接。它的实现过程可以用状态机来描述。建立连接有两种方法,即主动打开和被动打开。服务器端是一种被动打开,它一直在侦听连接请求;而客户端是一种主动打开,它发送连接请求以建立连接。研究发现,如果TCP层的上层实现服务器端的应用,可以将标准TCP状态机建立连接过程中客户端建立连接的状态机部分简化掉。同理,如果应用是基于客户端的,可以将服务器端建立连接的状态机部分简化掉。断开连接有两种方式:一是主动断开连接;另一是被动断开连接。被动断开连接的处理较为简单,但标准TCP协议的主动断开连接的状态机部分过于复杂。经过实验发现,在需要主动断开连接的时候,发送一个Fin数据报;接收到对Fin数据报的确认后,再发送一个Reset数据报,即可顺利完成一次主动断开连接。
标准的TCP协议使用慢启动的滑动窗口机制。滑动窗口是一种在流量控制和网络传输效率之间折中的方案。它允许发送方在等待一个确认之前发送多个窗口,其确认是一种批量的确认。研究滑动窗口协议发现,滑动窗口的一个极限情况,是只使用单个窗口,就变成了一种简单确认的处理方法。使用该方法后,所有的处理只是对单个数据报的发送和确认,节约了系统的资源,也使维护更加方便。为了协议的兼容性,需要通信的另一方也使用简单确认方法。因为如果对方使用较大的窗口,就可能造成处理器被淹没。这个问题可以通过设置待发送数据报的TCP头部的Windows字段的大小解决。
在上述基础上,简化实现TCP协议的流程图如图2所示。其中“不同状态的相应处理”指根据接收到的TCP报文准备待发送数据报并将其发送到以太网上。这部分根据TCP所处的不同状态,所做的处理是不一样的。
1.2 IP协议
IP协议是TCP/IP的基础,为不同网络的主机之间发送数据报的操作序列提供无连接服务。通过在数据报前添加IP协议头,使每个数据报具有寻址能力。嵌入式系统只把IP作为传输工具,进行简化以完成主要的操作。得到IP包后,检验IP头部的版本、目的地址、校验和正确否,解析出协议类型字段,由此交给相应的高层协议处理。发送IP包时,将缓冲区内的源地址与目的地址互换,设置校验和,然后交给下层协议处理。不符合要求,则将此包丢弃。IP包最大可以为65KB,可以分段传输,而在嵌入式系统里根本无法容纳如此大的数据包,因此一般不支持分段传输。所以限制MCU发送和接收数据包的方式以避免分段传输,从而减少程序复杂度。

    1.3 其它协议    ·对同一类超时处理可以由同一处理程序来完成,只是传入到相应的处理程序中的参数不同而已。例如一个ARP高速缓存中的表项超时时,需要将其置为无效,可以统一用一个处理程序,参数中放入相应的表项地址即可。    定时器任务使用一个信号量作同步。信号量有两个变量:count和waiting_task。count对事件计数,当count大于0时,表示有count个事件发生并等待处理;当count小于0时,表示有某个任务在等待事件的发生,此时waitint_task保存相应任务控制块的地址。信号量有两个操作:sem_up和sem_down。sem_up首先使count加1,然后看count是否为0,若为0表示有任务在等待,通过waiting_task中记录的任务控制块的地址把等待任务的状态设为就绪,否则返回。sem_down首先使count减1然后看count是否小于0,若小于0会使当前任务成为等待状态并引发任务管理器对任务的调度,否则返回。  
ARP协议为32位IP地址到对应的48位以太网地址之间提供动态映射。嵌入式系统中仅响应ARP请求,发送ARP回答包。请求者广播出包含ARP请求的以太帧、目的以太网地址为全1的广播地址。本机收到后,由目的IP地址发现自己是目的主机,发送一个ARP回答。ICMP通过IP协议传输其报文。IP协议是无连接的,它无法将报文和错误信息传到最初的主机,ICMP将状态信息和错误信息发送到发报文的主机。
2 前端设备的系统设计
TCP/IP协议扩展到工业控制级,将企业内部计算机网络应用于工业现场实时信息的发布和显示,通过Internet浏览器对现场工业信息进行动态监视。下面是笔者在某公司一分布式监控系统中的应用实例。基于TCP/IP协议的前端设备系统软件结构如图3。前端嵌入式设备处理器是Samsung公司的S3C4510B(ARM核)。该芯片是用在基于以太网系统的高性价比、高性能的16/32位RISC微控制器。通信部分采用BNC接口方式,信号输出经耦合隔离变压器由RJ45接头联入集线器,此外还设计了液晶显示和键盘输入当地接口功能。
在TCP/IP协议中多处用到超时和重发机制。这种机制对于确保两个或多个彼此独立的通信结点从通信错误或故障状态自动恢复到正常状态是非常有效的,但也增加了软件结构的复杂性。因为对超时的处理通常独立于正常程序流程,也就是与正常的程序流程异步。要实现的TCP/IP协议软件中有四处要用到定时器:第一是在ARP高速缓存的维护中,被添加到ARP高速缓存中的表项在一段时间后要置为无效;第二是在等待对发出的ARP请求返回响应时,可能会在指定的超时时间内还未收到返回的响应;第三是在IP组装收到分片时,由于部分分片在一定时间内没有收到而丢弃整个IP包;第四是在TCP等待接收方对数据段的确认时。如果在指定时间内还未收到对某个数据段的确认,需重新发送。从上述可见,要实现的定时器具备以下特点:
·对定时的精度要求都不是很高,基本都是秒级的精度。这样,完全可以稍滞后一些来处理定时器超时,不把超时处理放在时钟中断处理程序中。

首先,定义一定时器的数据结构,如图4所示。每一类超时都是由一个超时控制块和其所属的一个由超时事件项组成的链表管理。整个链表按超时事件将要发生的时间顺序排列,先发生的超时事件排列在前。超时控制块中的head_ptr用以指向一个超时事件项链表的首项;timeout_process是超时事件发生时处理程序的入口地址。在每个超时事件项中,next_ptr指向链表中的下一项;relative_time是本表项的超时事件相对于上一表项的超时事件发生的相对时间。所以某个表项表示的超时事件距离当前的时间是它以前所有表项(包括自身)中的relative_time的和。relative_time的基本单位是granularity。

每当时钟中断服务程序计数到granularity个时钟中断,给定时器任务使用的信号灯作sem_up操作。当定时器任务被调度执行时,它遍历每一个超时控制块,对每一个超时控制块作如图5所示的处理,最后对信号灯调用sem_down。

 

基于Arm-Linux和TCP/IP的远程控制嵌入式系统设计 一 概要设计 1.1系统功能说明 基于博创up-techs3c2410实验箱的硬件平台,设计基于TCP/IP协议的arm-linux嵌入式系统服务器端。在局域网内的PC客户端(或另一台基于博创up-techs3c2410实验箱的arm-linux嵌入式系统客户端)设计TCP/IP协议的客户端程序,远程控制同一局域网内的arm-linux嵌入式系统服务器端的LED等,分别实现LED灯的流水灯(轮询点... 阅读详情

相关推荐

ARM Linux与Windows 10通过TCP/IP实现网络通信详解

ARM Linux系统在现代嵌入式开发中扮演着至关重要的角色。它不仅具备低功耗、高性能的硬件特性,还依托Linux操作系统强大的网络支持与开源生态,成为构建智能设备、工业控制、物联网系统的核心平台。本章将从ARM架构与嵌入式系统的关联出发,逐步深入ARM Linux系统的网络配置、开发环境搭建,以及其在网络通信中的实际角色。Winsock(Windows Sockets)是Windows平台上的网络通信接口标准,它基于Berkeley Socket API设计,提供了用于TCP和UDP通信的函数集。

weixin_30951515的博客 1008

嵌入式(TCP编程)

TCP

afddasfa的博客 919

STM32微控制器网络TCP/IP通信实现

STM32微控制器是基于ARM Cortex-M系列处理器的广泛使用的32位微控制器家族。它们在性能、功耗和成本之间取得了平衡,成为嵌入式设计人员的首选。本章将介绍STM32微控制器的基本特点,并探讨其在现代嵌入式系统中的应用。STM32系列微控制器由STMicroelectronics公司开发,提供多种系列和配置选项,以满足从简单到复杂的各种应用需求。它们采用高性能的ARM Cortex-M处理器核心,包括Cortex-M0、M3、M4和M7等,这些核心针对低功耗和高效处理进行了优化。

weixin_28913879的博客 1063

几道简单的Linux驱动相关面试题,你看你会几题?

中断:是指CPU在执行程序的过程中,出现了某些突发事件时CPU必须暂停执行当前的程序,转去处理突发事件,处理完毕后CPU又返回源程序被中断的位置并继续执行。中断发生后,ARM核的操作步骤可以总结为4大步3小步。GPIO是相对于芯片本身而言的,如某个管脚是芯片的GPIO脚,则该脚可作为输入或输出高或低电平使用,当然某个脚具有复用的功能,即可做GPIO也可做其他用途。

一口Linux的专栏 5010

Python爬虫实战(基础篇)—23—爬取微信小程序<随机目的地旅行>生成随机地址(附GUI版)

爬取微信小程序<随机目的地旅行>生成随机地址

weixin_42636075的博客 1228

英飞凌 TC4X MCAL之SPI中断与DMA高效传输实战

本文详细介绍了英飞凌TC4X芯片的SPI通信实战,重点讲解如何通过MCAL配置SPI中断与DMA实现高效数据传输。针对汽车电子领域的高吞吐需求,提供了从基础配置到中断处理、DMA优化的完整解决方案,包含代码示例和调试技巧,帮助开发者提升系统性能与CPU利用率。

k0l1m2n3o的博客 876

基于ARM的嵌入式TCP/IP协议的实现方法

     分析嵌入式TCP/IP协议的选取原则,采用ARM芯片和网络接口控制芯片设计以太网接口,介绍ARM芯片对网络接口控制芯片的控制过程和TCP/IP协议栈处理数据包的流程,完成嵌入式TCP/IP系统的开发。该系统可以将数据按网络协议处理,实现数据的以太网传输。其是一套基于嵌入式实时操作系统的嵌入式网络软件开发平台,即在μC/OS—II的平台上,实现ARM微处理器的TCP/IP协议,在此平台之上,可以方便地进行嵌入式应用系统的开发a<br />关键词:ARM;嵌入式系统;TCP/IP;以太网 0 引 言<

ping_li422的专栏 5749

Anaconda创建python环境常见命令

Anaconda功能庞大,其可以理解为一个工具,也是一个可执行命令。Anaconda可以创建多个python环境,且python环境间相互独立。

m0_59405106的博客 1万+

ARM程序优化及其在嵌入式TCP/IP协议实现中的应用

摘要:本文从ARM结构的特点出发,根据程序优化的基本原则,阐述了面向ARM的C语言程序优化设计的一些基本原则和方法及其在TCP/IP协议实现中的应用。 关键词:程序优化;嵌入式系统;ARM结构;TCP/IP协议 随着嵌入式技术的发展,人们对系统的智能化、小型化的要求也越来越高。基于ARM结构的微处理器以其高性能、低功耗、低价格等方面的优势被广泛应用于各种电子产品,特别是一些高端

记录点滴,静心学习 978

在Cursor中集成Ollama与Qwen2.5‑Coder:零成本本地AI开发环境搭建

本文详细介绍了如何零成本搭建本地AI开发环境,通过将Cursor IDE与本地运行的Ollama及Qwen2.5-Coder模型集成,实现数据不出本地的智能编程辅助。教程涵盖Ollama安装、模型拉取、ngrok内网穿透配置及Cursor设置等核心步骤,并提供了实战测试与常见问题排错指南,为注重隐私与成本的开发者提供安全高效的解决方案。

weixin_29296241的博客 1073

SMPTE ST 2110 概论(三)

SMPTE ST 2110 概论(三)ST 2110-30:未压缩的PCM音频流ST 2110-31:非PCM音频传输ST 2110-40:辅助数据传输结语 ST 2110-30:未压缩的PCM音频流 鉴于音频系统是广播系统中最复杂,也是最重要的一套系统,我们先来回顾一下广电音频系统的历史。 最老式的音频都是基于模拟信号的,具有有限的动态范围,并且用连续的电压变化来描述音频。再后来就基于数字信号(...

Cidd0422的博客 1万+

[EK-LM3S8962]简易版智能家居:lwIP TCP/IP协议栈在ARM开发板实现嵌入式网络服务器(上)

简易版智能家居:lwIP TCP/IP协议栈在ARM开发板实现嵌入式网络服务器(上) 利用EK-LM3S8962开发板,我们可以开发出很多应用,比如移植一些嵌入式GUI、网络服务器、CAN通信等等。个人最喜欢的就是其中开发板中的以外网模块,而且LM3S8962这芯片业内置了Ethernet PHY层,对于学习网络及TCP/IP来说实在是利器。 这几天就在开发板上,移植了嵌入式T

TCP/IP协议栈学习ing 4965

实战复盘:如何用Frida脚本绕过某书APP的libmsaoaidsec.so检测(附完整Hook代码)

本文深入探讨了如何利用Frida脚本绕过某书APP通过libmsaoaidsec.so实现的反Frida检测机制。通过分析动态链接过程中的关键节点和检测模式,提供了两种实战验证的绕过方案:动态Hook关键链接器函数和静态Patch SO文件。文章还分享了进阶对抗策略和调试技巧,帮助安全研究人员有效应对现代移动安全防护挑战。

weixin_42706667的博客 219

基于ARM的嵌入式网络收音机的设计

基于ARM的嵌入式网络收音机的设计 摘要:研究了一种基于ARM处理器的嵌入式网络收音机的设计方案。该系统以ARM处理器及其外围设备为硬件平台,以嵌入式Linux为操作系统,实现了网络收音、局域网共享音频文件和本地SD/MMC卡内音频文件的播放功能,该系统还使用了无线网卡模块,通过USB接口与系统连接。由于该系统运用嵌入式Linux提供的TCP/IP协议直接与网络电台的地址连接,所以省去PC机...

duyouhua1214 783

别再瞎改注册表了!实测Win10/Win11远程桌面60帧的正确姿势(附ToDesk对比)

本文深入解析Windows远程桌面60帧优化的科学方法,揭示常见误区并提供实测有效的解决方案。从版本差异到硬件加速,再到第三方工具对比(如ToDesk),帮助用户避开无效的注册表修改,实现流畅的远程桌面体验。

weixin_33738555的博客 343

用 SemanticObject 把字段变成可点击链接:Fiori Elements Navigation Using a Link 的工程化实践

SAP Fiori elements 通过 Common.SemanticObject 注解可将字段转为可点击链接,实现应用间跳转。当源字段名与目标属性名不一致时,需使用 Common.SemanticObjectMapping 进行映射。该功能依赖 Fiori Launchpad 的目标映射配置,确保正确解析 semantic object + action 并传递参数。常见误区包括未配置目标映射或字段映射错误,需逐一检查语义标注、intent 解析和参数传递链路。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 272

arm嵌入式web服务器 性能,基于ARM的嵌入式Web服务器的设计与实现

李振 张勤 王磊摘要 随着科学技术的飞速发展,嵌入式系统在计算机领域中显得尤为重要。嵌入式系统具有软硬件性能的裁剪性。除此之外,嵌入式系統还具有精简的系统,时效性非常高和功耗非常低的特点。因为HTML具有语言标准统一性的特点,所以只要将网络服务器嵌入到嵌入式设备中,就可以实现客户端浏览器收发信息和控制外围设备等功能。本论文根据ARM的嵌入式系统的网络互连技术和网络通信基础知识,对嵌入式设备用到...

weixin_35807050的博客 1183

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

实时操作系统uC/0S II下TCP/IP协议栈的实现

摘要: 结合ez80和ARM7两种系统上的具体实现,说明了如何在嵌入式实时操作系统uC/0SII上移植实现LwIP这套TCP/IP协议栈,使uC/0S II成为支持网络的RTOS。 关键词: uC/0S II,TCP/IP,LwIP,网络设备驱动

fulaidai的专栏 924

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

嵌入式以太网络设计实现方案——新浪博客迁移

嵌入式系统设计中网络通信接口已成为标配接口,网络技术应用到嵌入式设备中时,若使用传统的TCP/IP协议,因其比较完善且过于复杂,在嵌入式系统中需要占用大量资源。考虑使用精简的以太网协议是比较适合的方式,并且可以提高嵌入式系统的实时性。 本文对嵌入系统网络设计中使用的主要几种硬件实现设计方式的认识做一些简单的介绍,以及在硬件实现方式中结合使用TCP/IP协议的方式加以介绍。尤其主要介绍在ARM系列MCU中使用精简的TCP/IP协议的几种方式,主要的实现方式如下: 第一种:MCU芯片+MAC芯片+PHY芯片

sinat_19440229的博客 964

用GPRS modem实现嵌入式Internet接入系统

摘要:运用ARM单片机LPC2104及西门子公司的GPRSmodem设计一种嵌入式Internet接入系统,并提供相应的硬件原理图和嵌入式操作系统移植方案。    关键词:uc/OS-II uIP GPRS TCP/IP 嵌入式Internet引言随着GPRS技术在无线通信领域的发展,GPRSmodem作为GPRS在Internet的PC机终端已得到了广泛应用。相应的,在单片机系统中

ncdawen的专栏 1596

微型嵌入式Web服务器的设计与实现

  1 引言  随着计算机、网络通信和Internet技术的飞速发展和不断进步,嵌入式系统在家庭和工业应用广泛。  如何将嵌入式系统和工业控制系统接人Internet,综合利用嵌入式系统资源,实现嵌入式系统的远程管理和控制,已成为关注的研究课题,而实现嵌入式系统的网络化则成为嵌入式系统的发展趋势。  以太网以其成本低、速度快、应用普遍、有广泛的硬件和软件支持等优点为实现管理控制网络一体

IT强哥的专栏 3675

linux嵌入式webserver,基于ARM和Linux的嵌入式WebServer设计与实现.docx

Acaderric-Ffepers IBZSNB基于ARM和Linux的嵌入式Web Server设计与实现.Design and Realization of Embedded Web Server Based 彭道剛d余梏2江刽宁*许5、(I同济大f ClMS^t中心?上 海200092:2上海电力挙皮电力与自劲化工程爭陀?上 海200090)m ?介wins人式ARMttwa的椅点wifrt...

weixin_39559382的博客 336
上一篇: 使用 Trace32 对 FLASH 编程
下一篇: 经典大学课程:石油大学教学视频
Mobidogs
博客等级 码龄21年 186粉丝 264原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值