摘 要:基于arm芯片lpc2214与 网络 芯片rtl8019as的串口网络转换器,并嵌入实时操作系统uc/os,在不改变原有光纤收发器结构的基础上,为其添加网络监控接口,从而实现其远程监控。
关键词:ip113f;arm ;rtl8019as ;uc/os;tcp/ip;以太网
1 ip113f芯片简介
ip113f芯片是ic plus公司生产的一款具有网管功能、超低功耗的光纤收发器。内置专为收发器设计的两口交换机内核,支持纯收发器模式,全/半双工模式均可采用相应的流量控制,支持单/多模光纤转换,支持3.3v i/o,并可通过smi(mdc,mdio)和ic内部mii接口对两组独立寄存器进行操作,监控或重新设置本地或远端光纤收发器的工作状态。用户可以通过串行管理接口mdc(管理数据同步时钟输入接口)和mdi0(双向管理指令接口)来访问mii寄存器, mdi0是信号线,mdc是时钟线,一个管理单元最多可同时外挂32个ip113f。数据在mdi0上是一位位传输的,是发生在mdc的上升沿跳变,mdi0上的数据通信协议如表1所示。当smi处于空闲状态时,mdi0则处于高阻态。管理单元在mdi0上发送32位连续的“1”和“01”信号来初始化mdi0接口。
2 整体功能设计
系统的基本功能是32台光纤收发器同时通过同一smi口网络转换器与远程的上位机进行通信(如图1所示)。转换器完成的具体工作是接收光端机发送过来的测试数据,自动识别其长度和来源,将其转化为网络数据格式,通过以太网发送到上位机,同时接收上位机通过以太网发送过来的控制信息,并自动识别其发送的目标,通过smi口发送给相应的光纤收发器。根据实际需要,可以在上位机通过以太网配置smi口网络转换器的ip地址。
3 硬件结构设计
转换器的硬件电路主要选用基于arm7内核的嵌入式处理器lpc2214芯片进行整体控制,lpc2214芯片带有256kb的高速flash,并带有16k片内sram,为了满足通信过程中的数据缓存和一定的系统运行空间,片外扩展了512k字节的sram(is61lv25616al)。片外通过iic总线扩展了256字节的eeprom(cat24wc02)用于保存好已设置的ip地址。选用10m全双工以太网控制器rtl8019as芯片完成网络通讯功能,与外界的通讯口选用utp rj-45接口,hr61101芯片充当网卡变压器。采用通用的i/o口p0.5和.p0.6模拟sim口的时序对ip113f进行数据采集,电路整体设计如图2。
4 系统软件设计与实现
4.1 引入rtos
光纤收发器数据采集的实时性要求比较高,若采用传统的前后台设计方法会显的过于复杂,且实时性不能保证。解决这个问题的最好方法是采用实时操作系统rtos。uc/os-ⅱ操作系统是一种源代码公开的嵌入式操作系统,具有代码短小精悍,简单易学的特点,对本设计是一个理想的选择。
uc/os-ⅱ完全是占先式的实时内核,基于优先级,即总是让就绪态中优先级最高的任务先运行,因此实时性比非占式的内核好。其大部分代码是用c语言编写的,可移植性强,可以在大多数8位、16位、32位以至64位微处理器上运行。uc/os-ⅱ在lpc2214上的移植可 参考 文献 [2]。
4.2 tcp/ip协议的选择与裁减
为使smi口转换器具有以太网接人功能,必须在arm处理器中嵌人tcp/ip协议,参考开放系统互连(osi)模型,在arm中嵌人的tcp/ip协议采用简化的四层模型,即链路层、网络层、传输层、应用层。根据实际需求,结合arm 微处理器的处理能力,设计中对完整的tcp/ip协议进行了全方位裁减。
(1)链路层。由控制同一物理网络上的不同机器间数据传送的底层协议组成。rtl8019as的驱动程序就是在该层实现的。
(2)网络层。保留了完整的ip协议,对arp协议进行简化,对于arp包只响应arp请求,取消rarp,只维护最简单的一个ip地址与mac地址的映射cache表,定时刷新。
(3)在传输层,用于 工业 现场一般采用tcp或udp协议,tcp协议提供了一种可靠的面向连接的字节流运输层服务,而udp协议是一个简单的面向非连接的数据报的运输层协议,考虑到所设计的系统数据传输的安全性,设计中选用tcp协议。
(4)在应用层,裁剪掉http协议,通过将控制界面设置在上位机上来代替其功能。
通过上述裁剪,把tcp/ip协议嵌入到操作系统uc/os-ⅱ中,并提供api接口函数供应用程序调用,使得arm可以快速无冲突地收发tcp数据包,符合系统对实时性和可靠性的要求。
4.3 系统的实现
采用嵌入式操作系统uc/os-ⅱ使整个设计简单,各个任务相互独立且具有不同的优先级来保证紧急任务及时响应,从而有效地对任务进行调度。整个软件设计由操作系统和一系列用户应用程序构成。
主函数是程序首先执行的一个函数,主要实现操作系统的初始化,该函数永不还回。操作系统的初始化包括任务控制块,事件控制块的初始化,而且在启动多任务调度之前,必须至少创建一个任务。此系统创建了一个启动任务taskstart,主要负责系统硬件的初始化,包括时钟的初始化和启动,中断的启动,iic总线的初始化与启动,smi口的初始化与启动,rtl8019as的初始化与启动,并且对各个应用任务进行了划分。
(1)任务的划分。
要完成多任务系统的各个功能,必须对任务进行划分。本程序根据各个任务的重要性和实时性,把整个模块分成6个具有不同优先级的应用任务,即ip地址设置、接收协议转换、发送协议转换、net发送、smi口发送、smi口采集。
除了3个主要应用任务外,还有两个中断服务子程序。一个是时钟节拍中断,用于提供周期性信号源,另一个是网口的接收中断,用于把接收到的数据写入缓冲区。
(2)任务的具体实现。
本系统采用arm作为服务器,pc端作为客户端的tcp通信模式,由上位机主动请求连接arm。在串口和以太网建立通信之前,首先要调用ip地址设置任务,对ip地址、子网掩码、网关进行初始化设置。
smi口通信实现的功能有smi口发送和smi口采集。smi口采集任务优先级较低,进行多任务调度后若没有相关事件发生系统就一直运行smi口采集任务,若采集到ip113f的状态发生变化,数据通过协议转换后发送到远程的上位机。smi口发送作为一个单独的任务独立运行。smi口发送任务需要系统调度器通知缓冲区中是否有待发送的数据,若没有数据发送,则将该任务挂起,系统运行其他任务
以太网通信模块由以太网数据收发和协议转换构成。数据的接收在rtl8019的中断服务程序中实现。以太网数据的发送,接收协议转换及发送协议转换分别作为独立的任务运行。以太网数据的发送任务同样需要系统调度器通知缓冲区中是否有待发送的数据。协议转换主要实现对接受数据报文的解析及给待发送数据添加协议报头,在编程时可以直接调用嵌入的tcp/ip协议的api函数,对数据报文进行分层。接收协议转换任务对从8019传过来的数据处理过程如3所示,不同的子协议具有不同的功能号,任务根据功能号对协议进行区别。发送协议转换则为图3的逆序表示。
(3)任务间的同步与调度。
通常多任务操作系统的任务不同于一般的函数,它是一个无限循环,而且没有返回值。如果没有更高优先级的任务进入就绪态,当前任务不会放弃对cpu的使用权。为了实现操作系统的正常运行和有关事件的同步,必须正确处理任务间的通信和事件标志的设置。系统的功能结构如图4所示。
系统进行多任务调度后,高优先级任务由于申请某个资源而发生阻塞,进入挂起态,系统运行较低优先级的smi口采集任务。每个事件分配一个信号量,一旦事件发生就启动信号量的等待任务表中进入就绪态的任务。当接收中断发生时就启动协议转换任务,这过程通过信号量的通信机制实现。接收协议转换任务先对来自上位机的数据解析,然后根据数据的命令头发往smi口发送队列或eeprom发送队列,进而启动相应的smi口发送任务或ip设置任务。发送协议转换任务对smi口采集的数据进行协议转换后存入以太网发送队列,然后通知net发送任务把数据发给上位机,从而保证任务与事件同步。
5 总结
本文所设计的smi口 网络 转换器模块实现了上位机同时对多光纤收发器进行监控。本设计既可作为一个独立的模块,又可嵌入到用户设计的系统中进行二次开发。总之,嵌入式internet技术代表着嵌入式系统和inernet的 发展 趋势,对其研究具有重要的实用价值和远大的发展前途,尤其是智能测控和家庭网络化方面的前景意义。
参考 文献
[1]周立功.arm嵌入式系统软件开发实例[m].北京:北京航空航天大学出版社,2004.
本文链接:http://www.qk112.com/lwfw/jsjlw/txlw/261951.html