基于ARM和uC/OS的嵌入式SMI网络转换器设计与应用

发布者:NexusDream最新更新时间:2021-01-23 来源: eefocus关键字:ARM  嵌入式  SMI网络转换器 手机看文章 扫描二维码
随时随地手机看文章

简介:本文所设计的SMI网络转换器实现了上位机同时对本地/远端32对光纤收发器进行监控的功能。设计中采用LPC2214芯片,克服了原先使用8位单片机处理器所带来的资源短缺和处理能力有限等问题。软件上,采用裁减所得的TCP/IP协议,极大地简化了编程的复杂度,嵌入μC/OS操作系统使系统的实时性极大提高。系统运行状况良好,工作稳定,软件上稍加改变就可应用于其他串口设备上,具有广阔的应用前景。


引言


目前,随着互联网和嵌入式系统的高度发展,越来越多的工业测控设备已经将网络接入功能作为其默认配置,以实现设备的远程监控和信息分布式处理。然而,大量工业现场设备尚不具备网络接口。在IP113F光纤收发器监控系统的开发中,下位机通过单片机与光纤收发器的SMI进行通信以实现监控,上下位机通过RS-232接口传输数据。南于串口传输距离短,工作人员每天都要到现场对数据进行检查和诊断,不胜其烦。针对这种情况,有必要设计一个SMI到Internet的数据传输模块,以便对光纤收发器的运行状况作远程监测。


IP113F芯片简介


IP113F芯片是一款具有网管功能、超低功耗的光纤收发器,支持3.3V I/O,主要通过SMI(MDC,MDIO)对两组独立寄存器进行操作,以实现监控或重新设置本地或远端光纤收发器的工作状态。用户可以通过串行管理接口来访问寄存器,如图1所示。由于IP113F的地址是5位二进制码,所以一个管理单元最多可同时外挂32(25)个IP113F。数据在MDIO上是一位位传输的,是发生在MDC的上升沿跳变,MDIO上的数据通信协议如表1所示。当SMI处于空闲状态时,MDIO则处于高阻态,管理单元在MDIO上发送32位连续的"1"和"01"信号来初始化MDIO接口。







整体功能设计


系统的基本功能是32台光纤收发器同时通过同一个SMI网络转换器与远程的上位机进行通信,如图2所示。转换器完成的具休工作是接收本地或远端光纤收发器发送过来的测试数据,自动识别其长度和来源,将其转化为网络数据格式,通过以太网发送到上位机,同时接收上位机通过以太网发送过来的控制信息,并自动识别其发送的目标,再通过SMI口发送给相应的光纤收发器。根据实际需要,可以在上位机中通过以太网配置SMI网络转换器的IP地址。


硬件结构设计


转换器的硬件电路中选用基于ARM7内核的嵌入式处理器LPC2214芯片,用于进行整体控制。LPC2214芯片带有256KB的高速FLASH,并带有16K片内SRAM。为了满足通信过程中的数据缓存和具备一定系统运行空间的要求,片外利用IS61LV25616AL扩展了512KB的SRAM。另外,通过IIC总线,片外扩展了256字节的EEPROM,用于保存已设置的IP地址。选用10M全双工以太网控制器RTL8019AS芯片完成网络通信功能,HR61101芯片充当网卡变压器。采用通用I/O口,P0.5和P0.6模拟SIM的通信时序,对IP113F进行数据采集。电路整体硬件电路如图3所示。



LPC2214具有外部存储器接口,可以扩展4个Bank的存储器组(Bank0~Bank3),且Bank0~Bank3的片选信号分别为CS0-CS3,本设计中,用Bank0扩展SRAM,Bank3扩展RTL8019AS模块。由于LPC2210芯片是一个8/16/32位的微处理器,可以接受16位数据位宽的读写。设计中将RTL8019AS芯片的16位I/O脚IOCS16B连到高电平,实现以16位操作模式读写控制寄存器的内容,与用单片机作为处理器的设计相比,系统运行效率提高。通过将RTL8019AS的65脚JP接高电平以选择跳线工作方式,即RTL8019AS的I/O和中断由跳线决定,不需外扩EEPROM 93C46芯片存储信息来控制RTL8019AS的I/O和中断,减少了连线,提高了高频电路的稳定性。RTL8019AS工作在跳线模式时,其基地址为0X300。由于RTL8019AS工作电源是5V,而LPC2210的I/O电压是3.3V,因此在总线连接上串接470Ω的保护电阻。


系统软件设计与实现


引入RTOS


光纤收发器数据采集要求实时性比较高,若采用传统的前后台设计方法,会过于复杂,且实时性不能保证。采用实时操作系统RTOS可以解决这个问题。μC/OS-II操作系统是一种源代码公升的RTOS,具有代码短小精悍、简单易学的特点,对本设计来说是一个理想的选择。


TCP/IP协议的选择与裁减


为使SMI转换器具有以太网接入功能,必须在ARM处理器中嵌入TCP/IP协议。参考开放系统互连(OSI)模型,在ARM中嵌入的TCP/IP协议采用简化的四层模型,即链路层、网络层、传输层、应用层。根据实际需求,结合ARM微处理器的处理能力,设计中对完整的TCP/IP协议进行了全方位裁减。链路层由控制同一物理网络上不同机器间数据传送的底层协议组成,RTL8019AS的驱动程序就是在该层实现的;在网络层,对于ARP包只响应ARP请求,取消了RARP,只维护最简单的一个IP地址与MAC地址的映射Cache表,定时刷新;对传输层,考虑到所设计的系统数据传输安全性,设计中选用TCP协议;对应用层,裁剪掉HTTP协议,通过将控制界面设置在上位机上来代替其功能。


通过上述裁剪,就得到一个适用的TCP/IP协议。把裁减后的TCP/IP协议嵌入到操作系统μC/OS-II中,并提供API接口函数供应用程序调用,使得ARM可以快速无冲突地收发网络TCP数据包,符合工业测控系统对实时性和可靠性的要求。


关键问题的解决


当SMI串口和以太网进行双向通信时,如果双方的数据传输率处于同步状态,即接收方速率等于发送方速率,系统能够即时地将数据进行转发。但大多数情况下,收发双方的数据传输速率并不一致,相对于以太网来说,串口是一个慢速连接,可能导致丢失数据。因此,在系统中必须定义循环队列作为数据收发的缓冲区。在本系统中,定义了两个1024字节的循环队列作为数据收发的缓冲区,一个是串口接收缓冲区,另一个是以太网接收缓冲区。以太网的接收是通过中断触发的,相对而言,串口和以太网的发送任务优先级较低,接收的数据并不能立即转发出去,而是暂存在循环缓冲区中。如图4所示,Head和Tail分别指向队列的头部和尾部,当Head=Tail时表示队列空,(Head+1)Mod 1024=Tail表示队列己满,空闲缓冲区的大小也可通过Head和Tail指针计算。



收发器的串口通信协议中通过加入本地/远端和收发器号来辨别源地址和目的地址,对数据进行校验。由于转换器IP地址主要采用上位机通过以太网进行设置,所以在以太网的数据帧中加入命令头,以辨别设置的是IP数据还是与收发器通信的数据。


软件系统的实现


本系统整个软件设计由操作系统和一系列用户应用程序构成。系统创建了一个启动任务TaskStart(),主要负责系统硬件的初始化,包括时钟的初始化和启动、中断的启动、RTL8019AS的初始化与启动等,并对各个应用任务进行了划分。根据各任务的重要性和实时性,整个模块被分成6个具有不同优先级的应用任务,即IP地址设置、接收协议转换、发送协议转换、NET发送、SMI发送、SMI采集。


任务的执行


任务划分后,各任务便具有独立的堆栈空间,彼此争夺CPU的使用权。一旦获得CPU的使用权,就会独立运行,完成特定的功能。


本系统采用ARM作为服务器,PC端作为客户端的TCP通信模式,由上位机主动请求连接ARM。在串口和以太网建立通信之前,首先要调用IP地址设置任务,对IP地址、子网掩码、网关和SMI口的通信参数进行初始化设置。


SMI口通信实现的功能有SMI发送和SMI采集。SMI采集任务优先级较低,进行多任务调度后若没有相关事件发生,系统就一直运行SMI采集任务,若采集到本地或远端IP113F的状态发生变化,数据通过协议转换后发送到远程的上位机。SMI发送作为一个单独的任务独立运行。SMI发送任务需要系统 调度器通知缓冲区中是否有待发送的数据。若没有数据发送,则将该任务挂起,系统运行其他任务,如图5所示。


以太网通信模块由以太网数据收发和协议转换构成。数据的接收在RTL8019的中断服务程序中实现。以太网数据的发送、接收协议转换及发送协议转换分别作为独立的任务运行。以太网数据的发送任务同样需要系统调度器对缓冲区中是否有待发送的数据进行通知。协议转换主要实现对接收数据报文的解析及给待发送数据添加协议报头,在编程时可以直接调用嵌入TCP/IP协议的API函数,对数据报文进行分层。


任务间的同步与调度


通常多任务操作系统的任务是一个无限循环,而且没有返回值。如果没有更高优先级的任务进入就绪态,当前任务不会放弃对CPU的使用权。为了实现操作系统的正常运行和有关事件的同步,必须正确处理任务间的通信和事件标志的设置。系统的功能结构如图6所示。


系统进行多任务调度后,高优先级任务由于申请某个资源而发生阻塞,进入挂起态,系统运行较低优先级的SMI采集任务。每个事件分配一个信号量,一旦事件发生就进入就绪态的任务。当接收中断发生时,启动协议转换任务,此过程通过信号量的通信机制实现。接收协议转换任务先对来自上位机的数据解析,然后根据数据的命令头发往SMI发送队列或EEPROM发送队列,进而启动相应的SMI发送任务或IP设置任务。发送协议转换任务对SMI采集的数据进行协议转换后,存入以太网发送队列,然后通知NET发送任务,把数据发给上位机,从而保证任务与事件同步。


结语


本文所设计的SMI网络转换器实现了上位机同时对本地/远端32对光纤收发器进行监控的功能。设计中采用LPC2214芯片,克服了原先使用8位单片机处理器所带来的资源短缺和处理能力有限等问题。软件上,采用裁减所得的TCP/IP协议,极大地简化了编程的复杂度,嵌入μC/OS操作系统使系统的实时性极大提高。系统运行状况良好,工作稳定,软件上稍加改变就可应用于其他串口设备上,具有广阔的应用前景。


关键字:ARM  嵌入式  SMI网络转换器 引用地址:基于ARM和uC/OS的嵌入式SMI网络转换器设计与应用

上一篇:基于ARM-Linux的MAX1303接口与驱动程序设计
下一篇:关于在AMR 运用无线模块

推荐阅读最新更新时间:2024-11-02 01:09

嵌入式系统通用的应用软件结构研究
摘要:嵌入式实时多任务操作系统在软件编程上有一定的相似性。这种相似的特性,使得我们可以将个别系统的编程经验推广到更多的系统上。本文就μC/OS-II内核的任务管理和内存管理进行基本的介绍,并介绍一个通用的应用软件结构。然后,与之相对应,提供两个不同操作系统下的应用实例。 关键词:嵌入式系统 多任务 编程 引言 嵌入式系统的面向应用特性,使得大多数程序员沉陷于不同的应用中。在进入新的一轮开发后,往往只有一些简单的经验可供参考。为了加快应用的开发进度,有必要研究一种统一的应用软件结构,使开发人员能够通过简单模式套用,简化大量系统研究方面的工作,以加快嵌入式开发人员对新系统的理解和使用。 操作系统μC/OS-II和ECOS(Em
[嵌入式]
基于DSP的彩色TFT-LCD数字图像显示技术研究
计算机技术的飞速发展,嵌入式图像系统广泛应用于办公设备、制造和流程设计、医疗、监控、卫生设备、交通运输、通信、金融银行系统和各种信息家电中。所谓嵌入式图像系统,是指以图像应用为中心,以计算机技术为基础,软件、硬件可裁减,对功能、可靠性、成本、体积、功耗等严格要求的专用计算机系统。嵌入式图像系统对图像显示技术提出了各种严格要求,必须选择合适的显示器,设计出合理的显示控制方法。 系统硬件设计   系统要构建一个嵌入式、高速、低功耗、低成本的图像显示硬件平台,要求能真彩显示静态或动态彩色图像。为达到真彩和无拖影的显示动态图像,同时兼顾低功耗的要求,采用SHARP(夏普)公司的LQ057Q3DC02彩色TFT-LCD作为显示器;
[医疗电子]
基于DSP的彩色TFT-LCD数字图像显示技术研究
图形界面设计工具加速嵌入式系统的开发
在嵌入式市场中,为客户寻找加快产品上市的方法是半导体供应商永恒的主题。有多种不同的方法可以缩短开发时间,例如,有一些开源活动提供大量合作开发和自由发布的代码。在此应用基础上,整个系统开发的时间缩短了 6 至 9 个月。这种方法的优点在于直接从已经完成并得到验证的工作中获益。 当今的大多数嵌入式处理应用中,控制和实时编程都是通过 C/C++ 和优化的汇编代码库联合实现的。在开源端,一旦为给定的体系结构写好了底层的驱动程序,所有的操作系统内核上层的其它代码都能自动 “ 继承 ” 。在购买部分或完整的解决方案(例如嵌入式 VoIP 参考设计)时,大部分基础工作已经完成,剩下的需要处理的只是整个系统的一小部分。比如,设计工程师可能只要
[嵌入式]
ARM7单片机(学习ing)—(三)、UART—03
今天这个实验是使用UART0的FIFO中断~~ 接收从虚拟终端发过来的数据~~ 这里深度设为8~~ 然后再发回去~~ 但是~~发不回去~~我日了~~ 这个问题先留着~~ 回头一起解决~~ 三、UART 三—(03)、向串口发送字符串然后送回PC(中断方法,FIFO) 直接上图和程序: MDK3_2.c //------------------------------------------------------------------------------ //串口的接收与发送 //使用产口的FIFO功能,使能串口接收中断,使能FIFO //设置接收FIFO的触发点为8字节 //当串口接收到8字节数据后,立即把接
[单片机]
<font color='red'>ARM</font>7单片机(学习ing)—(三)、UART—03
基于FPGA的片上系统和嵌入式系统的远程监控系统
本系统立足于利用Intemet实现核环境信息的远程采集。在实现上,采用了基于SOPC技术的嵌入式解决方案,通过在FPGA中嵌入NioslI软核处理器和所需外设的IP Core(硅知识产权核),然后再配备相应的网络接口,实现利用互联网进行信息的传输。   另外,通过开发用于控制信息采集子系统的IP核,利用FPGA固有的硬件并行特性,本系统做到了对多个信息源进行真正意义上的并行监控,即在进行α射线探测的同时也可以进行γ射线和温湿度等信息的获取。    1 系统硬件设计及实现   在本系统的设计中,硬件上为了做到通用性,在结构上划分为两部分,即用于完成现场监控和数据远程传输的通用网络平台和用于完成温湿度、液位、α及γ辐射总量测量
[嵌入式]
基于FPGA的片上系统和<font color='red'>嵌入式</font>系统的远程监控系统
arm7 力天电子lpc2148 GPIO之二单路LED控制实验
说明:力天电子的此款开发板,跟周立功的LPC2131不同,周立功的开发板上可以用跳线棒来选择是否用595驱动,周立功课本上进行GPIO输出实验——单路LED控制实验时,直接把LED接到了arm2131处理器上,如下图所示: 而力天电子的流水灯跟驱动是直接连在一起的必须使用595驱动,如下图所示: #include NXP/iolpc2148.h #define SCLK 0x01 24 #define MISO 0x01 5 #define MOSI 0x01 6 #define RCK 0x01 7 void Delayn(unsigned long n); void HC59
[单片机]
<font color='red'>arm</font>7 力天电子lpc2148 GPIO之二单路LED控制实验
基于MEMS 和MR 传感器的嵌入式系统姿态测量
1. 介绍: 传统的姿态测量系统采用捷联式惯导系统(SINS),相比平台式惯导系统而言,其具有 体积相对更小,成本相对更低,易于安装和维护并且可靠性更高的有点,因此,捷联惯导系 统在飞行器导航和姿态测量中得到了广泛的研究和应用。 然而,传统的姿态测量系统包括捷联式惯导普遍具有体积大,重量大,复杂程度高等特 点,使得传统的姿态测量系统无法应用于日常应用。同时,传统的捷联惯导系统一般需要一 个寻北系统的辅助来获得载体的方位角,但是传统的寻北系统多为基于陀螺的系统,其体积 和复杂度也是日常应用所无法接受的。可见,对于对体积具有严格限制的嵌入式系统而言, 需要研制一种小型的姿态测量系统来满足其姿态测量的要求。MEMS 技术和MR 技术
[测试测量]
基于MEMS 和MR 传感器的<font color='red'>嵌入式</font>系统姿态测量
arm学习笔记五(c/c++与arm汇编混合编程)
常见方式: 1 在c/c++程序中嵌入汇编指令 语法格式: __asm { 汇编语言程序 } 2 在汇编程序中访问c/c++定义的全局变量 示例代码如下: test.c #include stdio.h int gVar_1=12; extern asmDouble(void) int main(void){ printf( original value of gVar_1 is %d ,gVar_1); admDouble(); printf( modified value of gVar_1 is %d ,gVar_1); return 0; } test.s AREA asmfil
[单片机]
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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