引言
目前,随着计算机技术、通信技术得飞速发展,使得使得我们通过计算机进行网络互连的同时,许多领域的嵌入式设备如工业控制、数据采集、数控机床和智能仪表等也有接入网络的需求。伴随着信息家电出现,嵌入式设备的网络化必将拥有更广阔的发展前途。在这个过程里,首先要解决的问题使嵌入式设备如何实现网络互连。
基于以太网技术的网络化控制系统NCS(NetworkedControl System)是继现场总线控制了当前通信技术中的以太网及网络技术,很好地统一了底层的控制网络协议,建立了良好的兼容接口,因此成为了当前及后工业控制领域应用和研究的热点。随着以高性能嵌入式微处理器和嵌入式操作系统为核心的嵌入式技术的发展与推广使用,网络节点在性能、成本、功耗和体积等方面都达到了令人满意的效果,并对NCS 结构和应用产生了很大的影响。
本文主要基于S3C44B0X+uClinux 系统平台开发出嵌入式以太网控制器,该方案和其它设计比较具有高性能、低功耗、软硬件易扩展特点,是当前及今后工业以太网控制器的理想选择方案。
1 嵌入式以太网控制器硬件设计
本文主要基于S3C44B0X+RTL8019AS 系统硬件平台开发出嵌入式以太网控制器硬件平台。
图1 为嵌入式以太网控制器硬件设计原理图。嵌入式以太网控制器的硬件设计主要有S3C44B0X 微处理器、以太网模块、存储器模块、串口驱动模块、电源模块、复位和时钟和JTAG 接口7 部分。
1.1 S3C44B0X 处理器
1.2 以太网模块
RTL8019AS 是高度集成以太网控制器,它能够简单的解答即插即用NE2000 兼容适配器,这种适配器具有二重和功率下降特性。
RTL8019AS 以太网控制器共有32 个输入地址,对应地址偏移量为00h~1Fh,现分别说明如下:
(1)00 h~0 Fh 的16 个地址,为寄存器地址。
(2)10 h~17 h 的8 个地址,为数据读写端口地址。
(3)18 h~1 Fh 的8 个地址,为复位端口。
2 嵌入式以太网控制器软件设计
系统软件平台设计主要使用C语言和ARM汇编语言。系统软件平台设计主要包括3个方面:启动引导程序Bootloader;建立μCLinux操作系统的开发环境;以太网模块驱动程序的实现。
2.1 启动引导程序Bootloader
引导程序Bootloader是在操作系统运行之前执行的一段程序。它主要实现的功能包括:初始化CPU 运行的时钟频率;初始化Flash 和内存的数据宽度,读写访问周期和刷新周期;初始化中断系统;初始化系统中各种片内、片外设备和I/O 端口;初始化系统各种运行模式下的寄存器和堆栈;加载和引导μCLinux 操作系统。
2.2 建立μCLinux 操作系统的开发环境
μCLinux 操作系统沿袭了传统Linux 操作系统的主要特性,包括稳定、强大的网络和文件系统支持。建立μCLinux操作系统的开发环境主要包括3 个步骤:建立μCLinux 操作系统的交叉编译环境、μCLinux 操作系统的编译和μCLinux 操作系统的加载。
2.3 RTL8019AS 驱动程序
设备驱动程序是操作系统内核和硬件之间的接口,它作为应用设备之间的软件层, 为应用程序屏蔽了硬件的细节。
以太网模块驱动程序属于网络驱动程序。嵌入式μCLinux网络驱动程序的体系结构可以划分为4层,即网络协议接口层、网络设备接口层、设备驱动功能层和网络媒介层。在设计网络驱动程序时,最主要的工作就是完成设备驱动功能层,使其满足嵌入式设备的目标功能。完成设备驱动功能层主要有2 个步骤,RTL8019AS 的初始化和网络数据包的发送和接收。
2.3.1 RTL8019AS 的初始化
为能够准确无误地接收和发送数据包,必须先对RTL8019AS进行初始化操作,其中包括数据配置寄存器OCR、发送配置寄存器PCR、接收配置寄存器RCR的、物理地址、数据包接收缓冲区和发送缓冲区的设置:当前页面寄存器CURR的设置。RTL8019AS的初始化由函数void InitRTL8019AS()来完成,此函数的设计流程如图2所示。
2.3.2 RTL8019AS数据包的发送与接收
RTL8019AS以太网控制器发送数据包分两步走,首先将数据从系统内存通过远程DMA传到RTL8019AS以太网控制器的发送缓冲区,然后本地DMA将数据传到FIFO并发送出去。
RTL8019AS以太网控制器接收数据包时,RTL8019AS以太网控制器将网络上的数据包接收,通过其本地DMA通道将接收到的数据包缓存于接收缓冲区中,再通过远程DMA通道由主处理器将接收缓冲区的数据包经数据总线读入内存单元以被程序使用。
2.3.3 编译和测试RTL8019AS驱动程序
RTL8019AS驱动程序采用模块加载方式。模块加载方式具体步骤如下:
(1)通过module_init宏修饰的函数会在模块加载时被调用。
(2)网络设备被检测到以后,通过调用register_netdev()函数在μCLinux系统中把该RTL8019AS网络设备添加到系统的网络设备链表的末尾。
(3)如果注册成功,则网络设备结构体中init成员函数被调用,对设备进行初始化。
最后我们得到zImage 内核压缩文件。用引导程序Bootloader通过串口将zImage文件引导到S3C44B0X处理器上片外SDRAM上进行调试。
3 结语
嵌入式系统具有低功耗、可靠性高等突出优点。采用嵌入式系统来设计和实现带有以太网的工业控制系统,使得工业控制系统可靠性高、性能强、实时性好,将以太网接口集成与工业控制系统中,使得对工业控制系统的远程控制和监视变得简单易行。因此,研制一个带以太网接口的嵌入式工业控制系统具有重要的科学意义和价值。