基于ARM和eCos的嵌入式WEB服务器设计

发布者:满足的36号最新更新时间:2012-12-04 来源: 维库开发网关键字:ARM  eCos  WEB服务器 手机看文章 扫描二维码
随时随地手机看文章
  引 言

  随着现代通信技术和网络技术的迅猛发展,以太网技术也越来越成熟,特别是基于TCP/IP通信协议的Web技术得到了广泛应用。我们可以用微控制器加以太网接口芯片,取代PC机进行现场控制,组成嵌入式Web Serv-er系统。现场传感器自动跟踪各监测点的信息,把检测到的数据存储在非易失性存储器中,并及时发布到互联网上;相关的工作人员就可以通过Web技术对设备进行远程控制、管理和维护,从浏览器上直接监控现场设备的运行,这样就大大提高了生产效率和管理水平。

  为了实现WEB服务器的功能,嵌入式操作系统和一个可实现的TCP/IP协议栈是必需的,因此对嵌入式处理器提出了更高的要求。与传统的8/16位单片机相比,ARM核处理器在运算速度、功耗和存储容量方面都有很大的优势,而且ARM核处理器可以很方便地实现嵌入式TCP/IP协议栈,所以ARM核处理器成为嵌入式Web服务器设备的首选处理器。系统的设计模型如图1所示。


  1 系统硬件设计

  ARM核处理器LPC2210基于支持实时仿真和嵌入跟踪的32/16位ARM7TDMI—S CPU。片内有16 KBSRAM,通过外部存储器接口配置成4组,每组的容量达16 MB。LPC2210采用144脚封装,功耗极低,具有多个32位定时器、8路10位ADC、PWM输出,最多可提供76个GPIO以及多达9个外部中断引脚;采用3级流水线技术,极大地提高了指令执行效率,通过可编程的片内锁相环(PLL)可实现最大60 MHz的CPU操作频率。

  LPC2210的EMC组合符合ARM公司的PL090标准,总线宽度可设置为8位、16位或32位,通常16位总线宽度的存储器具有较高的性价比。

  以Philips公司的ARM核处理器LPC2210为核心来实现嵌入式Web服务器;网络接口芯片采用Realtek公司的NE2000兼容芯片RTL8019AS,它内置了10BASE—T收发器,通过HR901170A器件接入以太网。硬件结构如图2所示。


  在图1中,LPC2210扩展了2 MB的NOR Flash(芯片型号为SST39VFl60)和8.MB PSRAM(芯片型号为MT45W4Mwl6)。为了方便调试及最终代码的固化应用,使用LPC2210外部存储器接口BankO和Bankl的地址空间,通过片选信号选通nCE_F和nCE_R,来将地址空间Bank0和Bankl分别分配给PSRAM和Flash。通常将代码固化到Flash,分配Flash为Bank0,PSRAM为Bankl,因为Bank0可以用来引导程序的运行。[page]

  LPC2210的大容量片上存储器为TCP/IP协议栈的实现和数据处理提供了足够的存储空间;利用LPC2210SPI接口扩展MMC/SD卡作为外部非易失性存储器,可以将ADC现场采集的数据、IP地址、网卡物理地址以及更新网页保存在里面,需要时还可随时更换MMc/SD卡。LPC2210具有ARM和Thumb指令集,采用流水线处理技术,能在指令执行期间预处理下一条指令,极大地提高了指令执行效率,为需要快速传输数据的网络应用提供了有效的支持。

  2 系统软件设计

  eCos(embedded Configurable operating system,嵌入式可配置操作系统)是一种针对16位、32位和64位处理器的可移植嵌入式实时操作系统。由于其源代码公开,因而越来越多的设计人员开始关注eCos操作系统。eCos最大的特点是模块化、内核可配置。最小版本的eCos只有几百字节,非常适合小型嵌入式系统的开发。与嵌入式Linux相比,eCos有配置灵活和节省资源的优势。它的其他优点是使用多任务抢占机制、具有最小的中断延迟、支持嵌入式系统所需的所有同步原语,并拥有灵活的调度策略和中断处理机制。因而eCos具有良好的实时性,与μClinux和μC/OS等操作系统相比,它更适用于处理实时信号的设备,如移动通信、WLAN等通信设备的开发。

  3 eCos的移植

  图3所示为eCos的移植流程。eCos的移植通过3个子模块来完成,即体系结构抽象层(Architeeture Hal)、变体抽象层(Variant Hal)和平台抽象层(Platform. Hal)。对一个新的体系结构来说,系统结构抽象层的建立相对来说比较困难。目前,eCos已经支持各种主流CPU,也就是说,eCos源码中包含了CPU的体系结构层和变体抽象层,所以移植工作主要集中在平台抽象层。



  RedBoot移植是平台抽象层移植的最好开始。RedBoot是位于硬件抽象层之上的命令行接口,并且包含GDB调试工具及其调试stub。一旦硬件抽象层移植到目标板中,RedBoot能将程序加载到目标板中,并且能在目标板上调试代码。

  4 TCP/IP协议栈——LwIP的实现

  LwIP是瑞士计算机科学院Adam Dunkles等人开发的用于嵌入式系统的开放源代码TCP/IP协议栈。它既可以移植到操作系统上,也可以在无操作系统的情况下运行。LwIP实现的重点是,在保持TCP协议主要功能的基础上,减少对RAM的占用;一般只需要几十字节的RAM和40 KB左右的ROM就可以运行,这使得LwIP适合在中低端的嵌入式系统中应用。

  LwIP主要可以分为图4所示的几个层次。主要功能模块有:操作系统模拟层、网络接口函数、实现TCP/IP协议的各部分模块 (IP、UDP、TCP、IC—MP、ARP)、缓冲和存储管理子系统、校验和函数。

 


  LwIP API是一组应用程序接口,通过该接口程序员就可以使用LwIP所有的功能。另外,LwIP也为开发者提供了更加高级的BSD Socket APl,使其可以使用通用的Socket函数来编写网络通信软件。操作系统模拟层可以使LwIP能够使用操作系统提供的一些高级管理功能,例如信号量管理、消息队列管理、创建线程等。[page]

  4.1 IP处理

  LwIP仅能实现IP层大部分基本功能。它虽然能够发送、接收以及转发信息包,但不能接收和发送IP分片包,也不能处理携带IP参数选项的信息包。不过对大多数的应用来说,这不会成为问题。

  ①接收信息包。对于到达的IP信息包,可由网络设备驱动调用ip_input()函数开始处理,并在这里完成对IP版本字段及包头长度的初始完整性检查,同时还要计算和验证包头校验和。

  ②发送信息包。外发的信息包由ip_output()函数处理,该函数使用ip_route()函数查找适当的网络接口来传送信息包。当外发的网络接口确定后,信息包传给以外发网络接口为参数的ip_output_if()函数。

  ③转发信息包。如果没有网络接口的地址与到达信息包的目标地址相同,信息包应被转发。这项工作由ip_ forward()函数完成。

  ④ICMP处理。ICMP处理相当简单。ip_input()函数收到的ICMP信息包被移交给icmp_input()函数,后者对ICMP包头解码,然后进行适当的动作。

  4.2 UDP处理

  UDP是被用来在不同进程问分解信息包的简单协议。每个UDP会话的状态保存在一个PCB结构体中。UDP PCB保存在一个链表中,当一个UDP数据包到达时对这个链表进行匹配检索。

  4.3 TCP处理

  TCP属于传输层协议,它为应用层提供了可靠的字节流服务。对它的描述要比对其他协议的描述复杂的多,其代码占了LwIP代码总量的50%。基本的TCP处理过程被分割为6个功能函数来实现,tcp_input()、tep_ process()及tcp_receive()函数与TCP输入有关,tcp_write()、tcp_enqueue()及tcp_output()则用于TCP输出。TCP的处理过程如图5所示。

  


  4.4 应用程序接口设计

  LwIP API专为LwIP设计,所以它可以充分利用LwIP的内部结构实现其设计目标。LwIP API与BSDAPI类似,但操作相对低级。API不需要在应用程序和协议栈之间复制数据,因为应用程序可以巧妙地直接处理内部缓冲区。另外,BSD Socket API易于理解,并且很多应用程序为它而写,所以LwIP保留一个BSD Socket兼容层是很有用的。

  鉴于TCP/IP协议栈的处理模式,APl分成两部分实现。如图6所示,一部分作为应用程序的连接库实现,另一部分在TCP/IP进程内实现。这两部分之间采用由操作系统模拟层提供的进程间通信机制(IPC)进行通信。当前的实现采用以下3种IPC方式:共享内存、消息传递和信号量。虽然这些IPC方式被操作系统支持,但它们并不需要操作系统底层支持,实际上是操作系统模拟层在模拟它们。


  结 语

  基于实时内核eCos,在嵌入式系统中实现了LwIP协议栈的移植与优化。移植优化后的LwIP栈做为一个网络模块运行,代码占用40 KB的ROM,实现了Ethernet/IP/TCP网络功能,并提供了模块API,与系统实现无缝连接。基于LwIP的网络应用任务与其他非网络应用任务在eGos实时内核管理下协调运行。进一步增强了协议栈的网络安全性与稳定性,并开发相应的的网络应用程序。“eCos/LwIP协议栈”架构有望应用在信息家电和网络化的仪器、仪表方面。

参考文献:

[1]. LPC2210 datasheet http://www.dzsc.com/datasheet/LPC2210_454566.html.
[2]. ARM7TDMI datasheet http://www.dzsc.com/datasheet/ARM7TDMI_139812.html.
[3]. EMC datasheet http://www.dzsc.com/datasheet/EMC_2342312.html.
[4]. RTL8019AS datasheet http://www.dzsc.com/datasheet/RTL8019AS_1096173.html.
[5]. HR901170A datasheet http://www.dzsc.com/datasheet/HR901170A_1098413.html.
[6]. ROM datasheet http://www.dzsc.com/datasheet/ROM_1188413.html.
[7]. PCB datasheet http://www.dzsc.com/datasheet/PCB_1201640.html.

关键字:ARM  eCos  WEB服务器 引用地址:基于ARM和eCos的嵌入式WEB服务器设计

上一篇:DSP/ARM双核系统的通信接口设计
下一篇:实时操作系统C/OS-II在ARM7上的移植

推荐阅读最新更新时间:2024-03-16 13:14

为啥往人工智能领域砸大钱?孙正义:答案很明显
因为投资 阿里巴巴 的远见而被国人津津乐道的 孙正义 ,如今正将全部的注意力投向 人工智能 ,也就是 AI 。   北京时间昨晚的世界移动通讯大会(MWC)上,日本软银总裁孙正义发表演讲,首次披露了他去年收购英国芯片架构厂商 ARM 后的最新进展,以及他为何要领投OneWeb这家从事生产、发射卫星的美国公司。   孙正义志在将ARM打造为未来智能界具有垄断地位的公司,他预言明年人工智能的“奇点”就会到来,穿上安装芯片的鞋子,脚可以比脑袋更聪明。   “你脑袋的智商可能还不如脚” 去年下半年开始,孙正义连续大手笔猛砸人工智能。先是于7月耗资320亿美元收购ARM,此后又传出为OneWeb公司提供12亿美元的新一轮融资,其中软银出资
[嵌入式]
ARM服务器成败关键在中国市场?
中国的大型资料中心将会是ARM伺服器的下一个希望? 美国电子零组件业者Macom在不久前宣布收购资料中心解决方案供应商Applied Micro,并表示将出售后者的X-Gene系列ARM伺服器业务,一切就已昭然若揭;Applied在美国拥有稳定的大型资料中心业务,到2017年之后将透过100~400G乙太网路进一步拓展频宽──并非是利用ARM伺服器。 在上述消息之后,我还听说有不少消息指出博通(Broadcom)准备结束Vulcan──也就是以FinFET制程打造强大客制化ARM核心伺服器SoC的计画;这个高风险的产品预期将因为博通被安华高(Avago)收购而取消(一位博通的前任工程师透露,该公司也取消了采用客制化ARM核
[单片机]
将X86与ARM完美结合 AMD推出两款处理器
AMD公司日前宣布推出两款28nm X86移动版处理器,搭载了一颗ARM安全处理器,支持Trustzone,以增强移动数据的安全性,AMD宣称该款产品性能功耗比较之前代提升了一倍以上。 每颗SoC包含2至4个Puma X86内核,GCN系列显示核心以及A5安全处理器。笔记本用SoC Beema的功率为10-25W,而平板电脑用SoC Mullin大约仅为2W左右。 在Microsoft Windows8.1的instantgo支持下,AMD的产品可以在需要的时候实现500毫秒以内的即时唤醒,迅速回复工作状态。 AMD CTO Mark Papermaster表示AMD的新SoC系列可以比竞争对手“提供更好的图像及整体计算能力
[嵌入式]
基于ARM、WiFi和蓝牙实现农田生产检测管理系统的设计
近年来,由于新疆农田生产管理技术和管理模式停滞不前,农业生产管理人员水平不一,农情基础数据信息缺乏,资源不能合理利用和共享,使该区农业的进一步发展受到了严重的制约。因此,随着农田膜下滴灌等节水灌溉技术的大面积推广应用,迫切需要提出与现有的节水灌溉设备、方式和灌溉技术等相配套的农田生产检测管理系统,以提升该区农田生产的管理技术和管理水平。目前国内已开发的一些农田生产管理系统产品,由于没有解决农田信息采集的空间变异、农田灌溉、施肥等的智能诊断决策、渠系运行管理知识模型构建等瓶颈问题,使农田生产管理系统产品缺乏实时性、时效性和有效性,与灌溉、施肥等自动控制设备成为两张皮,不能真正达到精准控制灌溉、施肥的目的。本系统应用地理信息、空间数据
[单片机]
基于<font color='red'>ARM</font>、WiFi和蓝牙实现农田生产检测管理系统的设计
移植 libxml2-2.9.4 到arm
一、环境介绍 1.1 宿主机 Ubuntu 1404 32 位 1.2 嵌入式平台 ATMEL AT91SAM9X25 1.3 交叉工具链 arm-none-linux-gnueabi libxml2-2.9.4移植所需源码包下载地址 二、交叉编译 2.1 先编译 libxml2-2.9.4 依赖的模块 2.1.1 libicobv tar xvf libiconv-1.15.tar.gz cd libiconv-1.15/ ./configure --prefix=$PWD/tmp --host=arm-none-linux-gnueabi --build=i686-linux make V=s make in
[单片机]
ARM与Cadence签署了新的EDA技术应用长期协议
ARM与Cadence实现行业里程碑,成功流片了20纳米ARM Cortex-A15 MPCore处理器 【加州圣荷塞与英国剑桥,2011年10月18日】 — ARM与Cadence设计系统公司(NASDAQ: CDNS)今天宣布成功流片了业界首款基于ARM CortexTM-A15 MPCoreTM 处理器的20纳米设计。该测试芯片面向TSMC的20纳米工艺,由来自ARM、Cadence与TSMC的工程师使用Cadence RTL-to-signoff流程共同开发完成。今天的声明是ARM和Cadence在优化Cortex-A15处理器设计流程方面合作18个月的成果。 “Cortex-A15是我们迄今为止最高级的A
[半导体设计/制造]
ARM 汇编学习笔记
1.LDR和MOV的不同 ARM是RISC结构,数据从内存到CPU之间的移动只能通过L/S指令来完成,也就是ldr/str指令。 比如想把数据从内存中某处读取到寄存器中,只能使用ldr 比如: ldr r0, 0x12345678 就是把0x12345678这个地址中的值存放到r0中。 而mov不能干这个活,mov只能在寄存器之间移动数据,或者把立即数移动到寄存器中,这个和x86这种CISC架构的芯片区别最大的地方。 x86中没有ldr这种指令,因为x86的mov指令可以将数据从内存中移动到寄存器中。 2.汇编的位操作技巧 ldr r0,=rGPBCON;//设置GPB5~GPB8输出端口 ldr r1,=0x55
[单片机]
ARM存储系统概述
ARM存储系统的体系结构适应不同的嵌入式应用系统的需要差别很大。最简单的存储系统使用平办事的地址映射机制,就像一些简单的弹片机系统中一样,地址空间的分配方式是固定的,系统各部分都使用物理地址。而一些复杂系统可能包括下面的一种或几种技术,从而提供更为强大的存储系统。 **系统中可能包含多种类型的存储器,如FLASH,ROM,RAM,EEPROM等,不同类型的存储器的速度和宽度等各不相同。 **通过使用CACHE及WRITE BUFFER技术缩小处理器和存储系统速度差别,从而提高系统的整体性能。 **内存管理部件通过内存映射技术实现虚拟空间到物理空间的映射。在系统加电时,将ROM/FLASH影射为地址0,这样可以进行一些初始化处理;当这
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved