历史上的今天
返回首页

历史上的今天

今天是:2025年01月23日(星期四)

正在发生

2021年01月23日 | 基于ARM和uC/OS的嵌入式SMI网络转换器设计与应用

2021-01-23 来源:eefocus

简介:本文所设计的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操作系统使系统的实时性极大提高。系统运行状况良好,工作稳定,软件上稍加改变就可应用于其他串口设备上,具有广阔的应用前景。


推荐阅读

史海拾趣

Bivar公司的发展小趣事

在电子行业的初期,Bivar公司以其创新的技术突破赢得了市场的认可。公司研发出一款新型电阻器,具有高稳定性和长寿命的特点,迅速在行业内引起了关注。凭借这一技术优势,Bivar逐渐在电阻器市场上占据了一席之地,并逐渐扩大生产规模,实现了公司的初步成长。

安普康(AMPCOM)公司的发展小趣事

安普康的成功离不开其独特的企业文化和优秀的团队。公司注重员工的培训和发展,为员工提供广阔的职业发展空间和良好的福利待遇。同时,公司还积极营造积极向上、团结协作的工作氛围,使得员工能够充分发挥自己的才能和潜力。这种企业文化不仅吸引了大量优秀人才加入安普康,也使得公司在面对市场挑战时能够保持强大的凝聚力和战斗力。


请注意,这些故事是基于已知信息创作的,并不代表安普康公司的真实发展历程。如需了解安普康公司的真实故事,建议查阅公司官方发布的资料或相关新闻报道。

Data Device Corporation公司的发展小趣事

Data Device Corporation(DDC)成立于1964年,总部位于美国纽约。在创立之初,DDC就专注于为军事和商业航空领域提供高质量的数据接口产品。凭借其卓越的技术实力和对市场的敏锐洞察,DDC迅速在电子行业中崭露头角。通过与各大军事机构和航空公司的紧密合作,DDC不断推出符合市场需求的新产品,逐步奠定了自己在行业中的领先地位。

高创科技(gotrend)公司的发展小趣事

Data Device Corporation(DDC)成立于1964年,总部位于美国纽约。在创立之初,DDC就专注于为军事和商业航空领域提供高质量的数据接口产品。凭借其卓越的技术实力和对市场的敏锐洞察,DDC迅速在电子行业中崭露头角。通过与各大军事机构和航空公司的紧密合作,DDC不断推出符合市场需求的新产品,逐步奠定了自己在行业中的领先地位。

DB Unlimited公司的发展小趣事

DB Unlimited始终将技术创新作为公司发展的核心驱动力。公司不断投入大量资源进行技术研发和创新,推出了多项具有行业领先水平的音频技术。这些技术的推出不仅提升了公司的竞争力,也推动了整个音频行业的发展。DB Unlimited的技术创新能力和成果得到了业界的广泛认可。

DURATOOL公司的发展小趣事

在电子行业,产品质量是企业生存和发展的基石。DURATOOL公司深知这一点,因此一直将品质管理作为企业发展的核心。公司建立了严格的质量管理体系,从原材料采购到产品生产、检验、包装等各个环节都进行严格把关。此外,DURATOOL公司还积极引入国际先进的质量管理理念和方法,不断提升产品质量水平。这些努力使得DURATOOL公司的产品在市场上享有良好的口碑和信誉,赢得了广大用户的信任和支持。

问答坊 | AI 解惑

求高手帮我设计一个通用移位电路

已知一个8-bit循环移位(左移)电路的功能表如下。信号S是移位数,Y是移位前的并行输入,Y*是移位后的并行输出。 以该移位电路为核心,扩展设计一个能完成算术左移、算术右移、逻辑左移、逻辑右移、循环左移、循环右移的通用移位电路。 (算术左 ...…

查看全部问答>

protel99SE中的5V电源插孔封装怎么画?

正在画一PCB图  但是找了很久都没有那种电源插孔的封装  而且自己画的时候不知道怎么画了 它的孔(hole)是椭圆的  !!  由于是第一次 做PCB制版 所以 十分辛苦  麻烦哪位 大虾  解 ...…

查看全部问答>

export-2009-08-30.pdf

export-2009-08-30.pdf…

查看全部问答>

!!!大家来讨论F题吧!!!

本帖最后由 paulhyde 于 2014-9-15 09:07 编辑 高手来讨论呀!  …

查看全部问答>

请教下pcf8563的报警设置问题

我读取设定时间都正常 但对pcf8563的报警寄存器写入了数值再读出来有时一样有时不一样,请问这是为什么啊…

查看全部问答>

驱动程序启动失败,在[HKEY_LOCAL_MACHINE\Drivers\Active]下,DLL的号码并不连贯:

我写了一个GPIO的驱动,可以顺利编译并集成到OS中,查看 启动后查看[HKEY_LOCAL_MACHINE\\Drivers\\BuiltIn]下的DLL的信息很正常。但是DLL没有被启动 查看 [HKEY_LOCAL_MACHINE\\Drivers\\Active]下,DLL的号码并不连贯: 9后面的就是11了 ...…

查看全部问答>

由FPGA 做的电子钟,可是输出全为0(六位),希望大家帮忙看一下

LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY clock IS PORT(   CLK : IN STD_LOGIC;   REST: IN STD_LOGIC;//复位键   MIN : IN ...…

查看全部问答>

SOT23-6.DFN10 这两个封装有现成的么?

官方库里面貌似是没有那个DFN10封装貌似比较奇怪.看资料说是一面的.我记得实际器件好像是两面都有焊接.器件是CN3066一个锂电池充电保护的芯片.麻烦各位高手给看看啦 …

查看全部问答>

基于电容数字转换器 AD7746的物位测量系统PC调试工具进行中

先把上位机的调试界面先大概的做出来,然后根据了解深入在进行修改功能及界面  …

查看全部问答>