基于ARM的单芯片嵌入式网关设计

发布时间:2010-4-15 22:29    发布者:我芯依旧
关键词: arm , 单芯片 , 嵌入式 , 网关
1 引言

近年来,使用RS-485传输技术的PROFIBUS-DP/FMS现场总线网络在工业自动化领域得到了广泛的应用。这种网络覆盖范围有限,传输速度不高,如果把它和覆盖范围广、速度高的以太网连接起来,就叮以利用以太网的优势实现远程监控等功能。解决这两种异质网络互连问题的途径之一是开发能够在网间进行转换的嵌入式网关。

而在现有的嵌入式网关中,一类是基于专用的网络处理器,价格昂贵,可扩展性不强;另一类则是基于通用的微处理器.但往往还需要外接以太网物理层控制芯片,使得电路设计复杂,工作稳定性降低。针对这些不足,本文设计了一种基于ARM Cortex-M3微处理器和嵌入式实时操作系统μC/OS-II的单芯片嵌入式网关,在PROFIBUS-DP/FMS现场总线和以太网之间进行数据交换。

2 硬件设计

嵌入式网关以内核为ARM Cortex-M3的LM3S6916微处理器为核心搭建硬件平台,其硬件结构框图如图1所示。

1.gif
图1 嵌入式网关硬件结构框图

2.1 微处理器

微处理器是整个嵌入式网关的核心.在工业以太网中作为智能节点的主控制器。本文选用以ARM Cortex-M3为内核的LM3S6916微处理器.它是基于ARMy7-M架构的32位RSlC处理机。Cortex-M3是ARM最近专为低功耗、小尺寸、短中断延时和优异的确定性而设计的一款内核。LM3S6916在CORTEX-M3的基础上,还集成了256KB的FLASH和64KB的SRAM存储器、睡眠模块、正交编码器ADC、带死区PWM、温度传感器、模拟比较器、UART、SSI、通用定时器,I2C、CCP等外设。除此之外,它还是第一款同时集成了10/100M以太网MAC和物理层控制器的ARM处理器。它以8位单片机的价格提供32位的计算性能,非常适合用于对成本敏感的工业应用。

2.2 存储系统

LM3S6916内部集成的存储器已经能够满足本应用的需要,因此不用在芯片外部扩展存储器。Cortex-M3内核对4GB的可寻址存储空间提供简单和固定的存储器映射,256KB的FLASH用作存储异常/中断向量表以及操作系统镜像,系统复位后从中读取指令执行,起始地址为0x00000000,64KB的SRAM作为程序运行空间和数据空间.启动代码将系统镜像复制到SRAM后执行,起始地址为0x20000000。

2.3 串口

串行接口使用片内集成的UART接口,外接MAX1485芯片进行电平转换,实现和RS-485现场总线网络的连接。

2.4 以太网接口

芯片内部集成的全双工10/100M以太网控制器遵循IEEE802.3规范,完全支持10BASE-T和100BASE-TX标准,支持对10BaseT拓扑结构的自动极性修正,允许2个诊断LED引脚编程输出。

芯片外部只需外加一个1:1的隔离变压器和RJ-45接口就可实现与以太网的连接。LM3S6916芯片的XTALPPHY和XTALNPHY引脚跨接一个25MHz的无源晶振,作为外部时钟信号输入。需要注意的是,MDIO引脚需要通过一个10KΩ的上拉电阻连接到+3.3V电源上,以使MAC子层的媒体无关管理接口(MII)正常工作。

此外,硬件部分还包括电源部分、复位电路等,在此不是重点,就不详细介绍了。

3 软件设计

嵌入式系统的软件部分分为BootLoader、操作系统与网络协议栈、应用程序三部分。

3.1 BootLoader的编写

Bootloader是运行于操作系统之前的引导程序,主要任务是完成系统启动之前必要的硬件初始化和操作系统加载。BootLoader代码与微处理器芯片的内核结构、具体芯片和使用的操作系统等因素有关,比较复杂。为了简化开发人员的工作,Luminary公司为它生产的LM3S系列微处理器提供了免费下载的外设驱动程序库,包括了各种外设的驱动程序和通用的Bootloader,通常只需根据具体硬件进行很少的改动即可正常运行。在本例中,只需更改程序中定义的FLASH和SRAM的大小。

3.2 操作系统与网络协议栈

本文所设计的嵌人式网关并没有过多复杂的功能,亦不需要图形化的用户接口.硬件资源有限,有一定的实时性要求,因此我们选用μC/OS-II,它是一个可剪裁、源码开放、结构小巧、抢先式的实时多任务内核,主要面向中小型嵌入式系统,具有执行效率高、占用空间小(10KB左右)、可移植性强、实时性能优良和可扩展性强等特点。

对μC/OS-II的移植有以下几个步骤:

(1)下载μC/OS-Ⅱ源代码;

(2)根据微处理器配置和编译内核;

(3)编写相应的设备驱动程序;

(4)下载、调试和执行内核,加载应用程序。

要接入以太网,还需要TCP/IP网络协议栈的支持,为此我们选择移植1wlP,它是瑞士计算机科学院(Swedish Institute of Computer Science)的Adam Dunkels等开发的一套用于嵌入式系统的开放源代码TCP/IP协议栈。1wlP的含义是Light Weight(轻型)IP协议。IwIP可以移植到操作系统上。也可以在无操作系统的情况下独立运行。1wIP TCP/IP实现的重点是在保持TCP协议主要功能的基础上减少对RAM的占用,这使1wIP协议栈适合在低端嵌入式系统中使用。

对1wlP的移植与μC/OS-II的移植类似,在此不再赘述。

3.3 应用程序的实现

应用程序主要完成以太网接口和串行接口间的数据传输。此应用系统中有4个任务或称为进程:以太网网接收进程、以太网发送进程、串口接收进程和串口发送进程。这4个线程可并发执行.因网络速度与串口速度存在着差异,需设置相应的缓冲区来对收发数据进行缓冲。在此应用系统中设置两个环形缓冲区,其中之一用于接收以太网数据,然后串口从此缓冲区中取出数据发送。另一缓冲区用于接收串口数据,然后以太网控制器取出此缓冲区中数据发送出去。我们利用Socket套接字编写了一个简单的客户机/服务器模式的应用程序,实现现场总线和以太网上位机的通信。以太网上位机被设定为服务器.它运行了服务器端的应用程序。该程序主要用于监听服务器端口、接受客户端的连接请求、接受客户端的信息、向客户端发送信息等。嵌人式网关系统中运行的是客户端程序,该程序主要是用于申请连接到服务器、将现场总线方发来的消息向服务器发送、处理服务器发来的信息、将这些信息发送给现场总线系统。主程序流程图如图2所示。

2.gif
图2 主程序流程图

进程间需实现相互通信和同步,共用缓冲区既要互斥执行又要同步执行,其操作遵循生产者和消费者模型。进程问的互斥操作采用信号量来实现。线程间的同步通过设置两个指针来实现,一个是读指针,另一个是写指针,写指针指向队头,初始化为0,读指针指向队尾.初始化为bufsize-1。当写数据时。比较读写指针是否相等,相I司则写线程阻塞;不相等,则写入数据,然后将写指针加1。当读数据时,读指针加1,然后比较读写指针是否相等,相等则读线程阻塞;不相等,则读出数据。

4 结语

本文使用内核为ARM Cortex-M3的LM3S6916微处理器设计了一种单芯片的嵌入式网关。经实验验证,它可以实现PROFIBUS-DP/FMS现场总线网络和以太网的互连。相比其它的设计方案,本文的方案具有高性能、低功耗、低成本、高稳定性、开发迅速等优点,因此具有广阔的应用前景。

本文作者创新点:使用新型的ARM芯片设计了单芯片的嵌入式网关,实现了PROFIBUS—DP/FMS现场总线与以太网的互连。该网关简单可靠、实用性强。

预计正式产品投入市场之后,每年能取得10万元以上的经济效益。


作者:任强,程新明,徐洞成,戴喻      来源:《微计算机信息》(嵌入式与SOC)2009年第2-2期
本文地址:https://www.eechina.com/thread-10518-1-1.html     【打印本页】

本站部分文章为转载或网友发布,目的在于传递和分享信息,并不代表本网赞同其观点和对其真实性负责;文章版权归原作者及原出处所有,如涉及作品内容、版权和其它问题,我们将根据著作权人的要求,第一时间更正或删除。
您需要登录后才可以发表评论 登录 | 立即注册

厂商推荐

相关视频

关于我们  -  服务条款  -  使用指南  -  站点地图  -  友情链接  -  联系我们
电子工程网 © 版权所有   京ICP备16069177号 | 京公网安备11010502021702
快速回复 返回顶部 返回列表