>
首页 » 业界动态 » 单芯片以太网瘦服务器的实现

单芯片以太网瘦服务器的实现

作者:  时间:2007-11-27 09:38  来源:

摘要:mc9s12ne64是内置以太网mac层和phy层的16位网络单片机。本文介绍如何在开发之初,为ne64建立硬件开发平台和软件调试平台,以及如何利用开放源代码,在ne64上实现单芯片的以太网服务器。

关键词:单片机;嵌入式;以太网;服务器

引言

随着网络应用的推广,网络的概念逐渐由pc向工控模块上转移,如何充分利用网络协议,进行数据采集或者远程控制越来越受到了行业的关注。

进行以太网服务器的开发时,一般的做法是mcu或者dsp加上网卡芯片。这样做可以根据设计应用的领域,选择速度资源合适的控制芯片,和外扩芯片配合,达到功能和成本的最优化。如果控制芯片中能够集成以太网的mac层和phy层,以此开发的系统当然会在灵活性方面更胜一筹。freescale公司在最近推出的网络芯片mc9s12ne64便是在集成度方面的一次开拓性尝试。

mc9s12ne64单片机特点

mc9s12ne64是freescale公司在2004年推出的一款s12系列的网络单片机。它内部集成了以太网控制模块和以太网物理层驱动模块,兼容ieee 802.3标准。和常用的网卡芯片一样,ne64的工作模式能够设定为10mbps/100mbps全双工/半双工,并且拥有自适应的功能,可以满足不同物理环境的要求。

ne64芯片与一般网卡芯片不同的是它的以太网缓冲区的设计,一般网卡芯片使用fifo作为缓冲区,这种设计可以最大限度的发挥缓冲区的作用。ne64内部则是使用3块ram作为缓冲区,两块用于接收,一块用于发送,而且ram大小可以用户设定。因为用于控制,以太网数据包一般少用到1.5kb的最大传输,所以这种用户设定大小的缓冲ram带来了应用上的灵活性,而节约下来的ram也可以被用户程序使用。

ne64的cpu是速度为50mhz的明星内核(star core),总线时钟可以达到25mhz,此外它还有8kb的片内ram和64kb的片内flash,因此只是一块ne64芯片,就可以在众多中低端网络应用领域取代以往的外扩芯片设计模式。

除了以上资源以外,mc9s12ne64内部还集成8路10位adc,各种串口(2个sci、1个spi、1个i2c),以及一些单片机常用模块,如定时器、振荡器等,功能足够强大。

ne64的封装形式有112引脚lqfp和80引脚qfp两种,112引脚的封装形式引出了总线扩展用的几组i/o,便于总线的扩展。

在线开发方法

对于新型单片机,最重要的是要熟知它的特性,建立开发环境,然后着手开发。笔者制作了基于ne64的硬件开发平台,同时继承实验室以前的积累,编写了片上调试监控程序,用于软件调试。以此为开发环境,实现了一个以太网服务器,用于以太网数据和串口数据的转换,详细介绍如下。

硬件开发

·开发平台

首先为ne64制作了一个开发平台,这是实现ne64最基本功能的核心子板,除了最基本的电源和时钟电路之外,子板上还有rs232和以太网的硬件驱动电路。开发平台的硬件示意图如图1所示。

图1 开发平台硬件示意图

其中,电源部分使用了一片lm1086,用来把供电变压器的5v电源转成3.3v给系统供电。rs232驱动部分使用max3232,用来转换rs232的电平。网口部分采用了一个内置隔离变压器的rj45头。

因为板子只是一个实现了基本功能的系统,所以单片机还有很多功能引脚暂且没有用到,这些引脚通过两个32引脚的欧式插座引了出来,用户可以根据引脚定义制作相应母板,完成更多功能的开发。

·下载工具

在开发学习中,使用调试监控程序已经能够满足调试的要求了,但是在产品使用中,总是需要一个下载工具来把用户的程序下载到单片机内部,因此又需要一个具有下载功能的编程器。针对这个要求,我们自行制作了一个bdm下载工具,俗称bdm头。

下载工具的硬件电路基本和开发平台一样,只是去掉了不需要的以太网驱动和欧式插座部分,仅用ne64单片机的一个i/o引脚实现和目标机的通信。软件部分是根据芯片手册写的bdm功能程序,使此下载工具可以完成最基本的擦除和下载功能。因为2个mcu具有速度相同的时钟,通信程序相当简单。

软件开发

·开发方式

s12系列单片机的程序编译可以使用metrowerks公司的coderwarrior系列编译软件,它的各种限制版本可在freescale的网站www.freescale.com下载。

bdm头的主要用途是首先将监控程序下载到单片机的flash中,以及最终擦除监控程序并下载最终的应用程序,bdm头也可用于软件调试。bdm头可以自己制作,也可以买到第3方开发的各种商用bdm调试工具。

继承实验室的积累,笔者针对ne64开发平台编写了相应监控程序,可以完成片内flash擦除、用户程序下载、断点设置、寄存器显示、修改,存储区显示修改等,用来做程序开发,这些功能基本够用了。监控指令的详细说明,可以访问www.tsinghua-mot.net 网站。

监控程序实际上也是一个用户程序,它通过串口与用户交互。监控程序它接收来自串口的命令,执行相应的操作,达到调试的目的。使用监控程序开发应用程序,完全是在线的,是用单片机自己调试自己,调试功能的强弱取决于监控命令的多少。缺点是监控程序本身要占用一些ram、flash资源。我们的ne64 监控程序占用了8k的flash和32b ram空间,相对于ne64所拥有的64kb flash和8kb ram,这些资源占用量是可以接受的。

·应用实例

基于上面的开发平台,我们完成了一个以太网服务应用器的开发实例,它是一个rs232与以太网之间进行数据转换的模块。由于目前在工控领域,串行接口的应用还是很普遍的,不可能短时间内完成升级,想要把已有的串行接口设备接入以太网,就需要一个“黑盒子”接在串口和以太网之间,把以太网的数据转给串口,同时把串口的数据发送到以太网上。

此服务器主要的工作是使用udp或者tcp来收发以太网数据包,对协议栈的齐备性要求不高,因此笔者使用一个uc/ip的精简版本作为以太网操作的协议栈。

整体程序基于中断设计而成,这是考虑到ne64的mac层可以产生接受中断,串口使用的sci模块也可以产生中断,因此选择中断作为整个软件的基础,可以提高程序运行效率。详细的流程图图2所示。

图2 应用程序流程图

当系统上电完成各种初始化之后,就进入了循环等待中断的状态。此时当以太网的数据包发送到交互工具的时候,会触发一次以太网接收的中断,在中断程序中,系统首先存储远端地址,然后调用协议栈进行解包分析,把有用数据通过sci发送给串口;同时当串口数据通过sci中断接收进来的时候,系统调用协议栈,把数据发送到暂存的以太网远端地址。这样,系统不停的接收以太网上发来的数据,把它转换给串口,同时接收串口的数据,把它发送到以太网上。

作为一个开发实例,这个系统的稳定性还是不错的,笔者把它接入所在局域网,网络环境不是很好,但在测试的48小时之内它的工作都是正常的。当然,如果要制作一个完备的产品,这样一个协议处理显得比较简陋了,还需要进一步完善。

·协议栈运用

进行网络应用的开发,最关键在于根据本身资源选择一个比较合适的协议栈。由于mc9s12ne64的资源比较丰富,足以支持大部分的嵌入式协议栈。

目前商业化的协议栈一般比较昂贵,鉴于一般嵌入式的应用对协议栈的完备性要求不是很高,因此可以选择使用开放源代码的免费协议栈。freescale为ne64选定了一个开放源代码的协议栈opentcp,他们与viola systems公司合作,已经把opentcp开放源码移植到了ne64。用户可以到www.freescale.com或者www.opentcp.org网站上下载开发源代码。

如果不用opentcp协议栈,别的一些开放源码,诸如lwip,uc/ip等,也都是较好的选择。

结语

本文介绍了一款内部集成了以太网模块的单片机,以及其开发方式和网络设计应用,希望给读者带来以太网开发方面的新思路。

mc9s12ne64内部集成以太网模块的尝试是对芯片集成化方向的一次开拓,或许ne64比起扩展式的网络模块设计方案有些欠缺,但面向中低端网络应用领域,其单片方式带来的灵活性与电磁兼容性还是颇具特色的。

参考文献:

1, 邵贝贝,‘单片机嵌入式应用的在线开发方法’,清华大学出版社,2004

2, w.richard stevens著,范建华等译,tcp/ip详解,北京,机械工业出版社,2000

相关推荐

Ctrack选用u-blox GPS和蜂巢式模组开发车队管理解决方案

u-blox  嵌入式  Ctrack  2014-05-21

动作撷取追踪的嵌入式体感控制新技术

嵌入式  体感控制  2013-12-06

嵌入式系统的固件更新

嵌入式  Flash  RAM  缓冲区  2013-09-12

工业以太网市场需求上长 交换机产业机不可失

以太网  交换机  2013-07-16

汽车电子向一体化集成、网络化与智能化发展

汽车电子  嵌入式  2013-05-23

飞思卡尔CEO:新战略初现成效 未来更关注中国市场

飞思卡尔  单片机  2013-04-28
在线研讨会
焦点