交换机日志记录模块的制作方法

文档序号:12375679阅读:507来源:国知局
交换机日志记录模块的制作方法与工艺

本发明是关于光通信领域,实时记录交换机日志信息和网络管理的交换机日志记录模块。



背景技术:

日志系统是以太网交换机中不可或缺的一部分,它是系统软件模块的信息枢纽。日志系统为网络管理员和开发人员监控网络运行情况和诊断网络故障提供了强有力的支持。日志系统管理大多数的信息输出,并且能够进行细致的分类,从而能够有效地进行信息筛选。在现有的交换机技术中,通常采用SYSLOG服务器的方式对日志文件进行记录,SYSLOG是一种工业标准的协议,可用来记录设备的日志。在UNIX系统,路由器、交换机等网络设备中,系统日志(System Log)记录系统中任何时间发生的大小事件。管理者可以通过查看系统记录,随时掌握系统状况。UNIX的系统日志是通过SYSLOGD这个进程记录系统有关事件记录,也可以记录应用程序运作事件。通过适当的配置,还可以实现运行SYSLOG协议的机器间通信,通过分析这些网络行为日志,追踪掌握与设备和网络有关的状况。一般情况下用户可将日志分为两个部分:短期的在线存储和长期的离线存储。将旧日志信息存储在磁带中,既能节约离线存储的成本,还能长久保存以备未来分析。这样需要在交换机中配置大容量存储器来记录日志信息,提高交换机的成本,而且有部分交换机内并没有配置存储器而造成日志信息丢失,无法实时监控交换机的运行状态和安全事件。对于可网管交换机而言,目前通常采用3种管理方式:网络浏览器管理、网络管理软件管理、UART串口管理。

1.网络浏览器管理:可网管交换机可通过web管理,但必须给交换机指定一个IP地址。在默认状态下,交换机没有IP地址,必须通过串口或其他方式指定一个IP地址之后,才能启用这种管理方式。使用网络浏览器管理交换机时,交换机相当于一台Web服务器,只是网页并不储存在硬盘里面,而是在交换机的NVRAM里面,通过程序可以把NVRAM里面的Web程序升级。当管理员在浏览器中输入交换机的IP地址时,交换机就像一台服务器一样把网页传递给电脑,此时给你的感觉就像在访问一个网站一样。但是这种方式占用交换机的带宽,是带内管理方式。

2.软件管理:可网管交换机均遵循简单网络管理协议SNMP协议,SNMP协议是一整套的符合国际标准的网络设备管理规范。凡是遵循SNMP协议的设备,均可以通过网管软件来管理。你只需要在一台网管工作站上安装一套SNMP网络管理软件,通过局域网就可以很方便地管理网络上的交换机、路由器、服务器等,其也是带内管理方式。

3.UART串口管理:可网管交换机附带了一条串口电缆,供交换机管理使用。先把串口电缆的一端插在交换机的串口上,另一端插在普通PC机的串口上。然后接通交换机和电脑电源。在windows系统的PC机里都提供了“超级终端”程序。打开“超级终端”,在设定好连接参数后,就可以通过串口电缆与交换机交互,这种方式并不占用交换机的带宽。是一种带外管理方式。在这种管理方式下,交换机提供了一个菜单驱动的控制台界面或命令行界面。你可以使用“Tab”键或箭头键在菜单和子菜单里移动,按回车键执行相应的命令,或者使用专用的交换机管理命令集管理交换机。不同品牌的交换机命令集是不同的,甚至同一品牌的交换机,其命令也不同。使用菜单命令在操作上更加方便一些。采用网络浏览器与网络管理软件管理交换机需要管理数据是通过公共使用的局域网传递的,可以实现远程管理,但安全性不强。然而在采用UART串口管理方式时,数据只在交换机和管理用机之间传递,因此安全性很强。但是需要相关的人员到现场用电脑连接交换机来查看,从而增加导致人员费的增加和可维护性降低,并且由于串口电缆长度的限制,不能实现远程管理。



技术实现要素:

本发明的目的是针对上述现有技术存在的不足之处,提供一种不占用交换机带宽,能够降低交换机配置成本,安全性强,更方便快捷,可实时存储由交换机串口输出的日志信息和可远程采用UART串口对交换机进行管理的交换机日志记录模块。

本发明的上述目的可以通过以下技术方案予以实现:. 一种交换机日志记录模块,包括搭载MQX操作系统对UART串口、网口、两线式串行总线I2C BUS进行控制与实时交互,采用cotex M4处理器系列的单片机作为主控制器的微控制单元MCU,其特征在于:交换机主从设备输出的日志信息通过UART A与UART B这两个输入输出串口进入到MCU,MCU接收到信息后通过安全数字记忆卡总线SD BUS将数据写入到嵌入式多媒体存储器eMMC中保存;在串口处理进程中日志记录模块设有每隔一定时间检查串口数据是否发送完成的串口数据超时检测子模块,以及设置有IP地址命令、子网掩码地址命令、串口的速率设置命令、远程登录协议telnet应用程序的用户名与登录密码命令、文件传输协议ftp应用程序的用户名与登录密码命令、判断网络故障的ping服务命令、远程复位模块命令、恢复出厂设置命令、远程模块升级命令和远程交换机控制命令的命令传输子模块,当交换机通过上述两个串口发送数据到日志记录模块后,日志记录子模块接收到数据进入到日志记录进程中,由主进程子模块生成日志记录进程、telnet服务器进程子模块、FTP进程子模块、I2C接收进程子模块和I2C发送进程子模块;远端PC主机通过以连接telnet服务器进程子模块发出远程交换机管理命令后,在telnet服务器进程子模块中接收到相应的命令后生成远程交换机管理进程子模块;在主进程子模块中安装提供标准接口并管理闪存的嵌入式多媒体存储器eMMC的设备驱动以及分区管理驱动,进而建立多媒体码流格式MFS文件系统,当MFS码流文件系统初始化完成后检查重要配置语句和记录串口UART A与串口UART B的配置参数、FTP与telnet的用户名与密码信息的system.ini文件系统是否存在,如果不存在就新建system.ini文件,如果存在就跳过system.ini文件的初始化,初始化模块利用存储的IP地址参数的网络配置、与外部信号接口的物理层以太网PHY芯片建立以太网通信,初始化FTP服务器进程访问模块中记录的日志文件和system.ini文件与telnet服务器远程控制模块进程,初始化建立日志文件夹与文件,分别保存交换机主设备串口数据和从设备串口数据;然后对串口日志记录进程进行初始化,模块上的主串口UART A与从串口UART B实时接收交换机的串口输出的日志信息并记录到模块的存储器eMMC中保存,当上面所有工作都完成后主进程子模块主进程进入阻塞状态。本发明相比于现有技术具有如下有益效果。

不占用交换机带宽强。本发明采用将交换机主从设备输出的日志信息通过UART A与UART B这两个输入输出串口进入到MCU,MCU接收到信息后通过SD BUS将数据写入到eMMC存储器中保存,可以将交换机串口输出的日志信息记录在模块的存储器中保存,不占用交换机带宽。在远端PC主机通过FTP服务器登录到模块,下载存储器中记录的日志信息便于查看与分析,可以通过网口转串口的方式对网管交换机进行远程串口管理与配置交换机。

能够降低交换机配置成本,安全性。本发明采用cotex M4系列的高性能单片机作为主控制器,搭载其开发的MQX操作系统对ftp、telnet、串口、网络传输、文件系统等进程进行实时交互与管理工作,采用大容量eMMC存储器对交换机的系统日志进行存储,可实时存储交换机串口输出的日志信息。通过交换机串口输出的日志信息进入到模块中实时存储,可弥补在交换机中配置大容量存储器而造成的成本增加,也可弥补交换机中无存储器而造成的日志信息丢失的情况。

更方便快捷,可实时存储由交换机串口输出的日志信息。本发明采用的远程UART串口对交换机管理,交换机的故障定位更方便,远端PC主机通过ftp登录到模块即可将存储的数据进行下载,可以实现检测、排除交换机故障等功能。当交换机与模块的网络接通后,串口发送数据到模块,模块会自动接收发来的数据并将其实时写入到eMMC存储器中保存。可及时排除交换机故障,并且给管理管理人员和设备维护人员带来极大的方面,不用到现场进行维护和故障定位通过远程即可查找、排除故障。

可远程采用UART串口对交换机进行管理。本发明采用网口转串口的方式可远程采用UART串口对交换机进行管理,能够弥补网管交换机中对串口管理方式中的UART串口电缆长度的限制,通过远端PC主机登录到模块建立网口转串口服务器建立通信连接,从而可实时接收交换机发出的信息和对交换机的管理,避免了不能实现远程管理的不足。远端PC机通过登录模块端口号为23的telnet服务器来设置模块的IP地址、子网掩码地址、串口的速率、telnet的用户名与登录密码、ftp的用户名与登录密码、ping服务、远程复位模块、恢复出厂设置、远程模块升级等功能。远端PC主机可通过登录模块端口号为24的telnet服务器实现网口转串口功能,可以实现远程对交换机进行管理与控制。

附图说明

图1为本发明实时记录交换机日志记录模块硬件的工作流程图。

图2为本发明日志记录模块总体程序的工作流程图。

图3为本发明主进程子模块主进程的工作流程图。

图4为本发明日志记录模块日志记录进程的系统框图。

图5为本发明日志记录模块日志记录进程的详细工作流程图。

图6为本发明主进程子模块FTP服务器进程的工作流程图。

图7为本发明主进程子模块Telnet服务器进程的工作流程图。

图8为本发明主进程子模块I2C发送、接收进程的工作流程图。

图9为本发明主进程子模块Telnet服务器进程子进程模块的远程交换机管理进程的工作流程图。

图10为本发明主进程子模块Telnet服务器进程远程升级的结构图。

图11为本发明主进程子模块Telnet服务器进程远程升级校验的工作流程图。

图12为本发明主进程子模块Telnet服务器进程远程升级写入校验的工作流程图。

具体实施方式

在图1中,提出的一种能够实时记录交换机日志的模块,其采用标准的SFP电口封装结构,网口一侧通过金手指与交换机的任意以太网接口相连接,RJ45一侧定义为UART串口通信方式,其与交换机的串口输出相连接。实时记录交换机日志模块的内部硬件,具有如下技术特征:日志记录模块可工作在三种模式下:1.日志记录模式;2.模块控制模式;3. 远程交换机管理模式。日志记录模式:当交换机通过串口发送数据到日志记录模块后,日志记录模块接收到数据进入到日志记录进程中。在串口处理进程中设置串口数据超时检测功能,每隔一定时间检查串口数据是否发送完成,如果所定时的时间完成,则将数据写入到存储器中予以保存。在远端可通过文件传输协议FTP登录到模块中,进入到多媒体码流格式MFS文件系统的root根目录下,下载文件到远端PC主机进行查看。日志记录模块控制模式:在远端通过远程登录协议telnet中的命令登录到日志记录模块中,日志记录模块中有设置模块的IP地址命令、子网掩码地址命令、串口的速率设置命令、telnet的用户名与登录密码命令、ftp的用户名与登录密码命令、判断网络故障的ping服务命令、远程复位模块命令、恢复出厂设置命令、远程模块升级命令、远程交换机控制命令等。利用日志记录模块控制模式可随时检测日志记录模块的运行状态,并且可随时对日志记录模块进行控制。远程交换机管理模式:在本模式下,串口输出的数据将不会进入到日志记录模块中保存,而是将远程PC主机发送的信息通过网络发送到实际串口中来控制交换机,交换机发送的信息也可以回传到PC主机上显示以达到对交换机管理的目的。其中的微控制单元(Microcontroller UnitMCU) ,又称单片微型计算机(Single Chip Microcomputer )或者单片机,是把中央处理器(Central Process UnitCPU)的频率与规格做适当缩减,并将内存(memory)、计数器(Timer)USBA/D转换、UARTPLCDMA等周边接口,甚至LCD驱动电路都整合在单一芯片上,形成芯片级的计算机,为不同的应用场合做不同组合控制。微控制单元MCU部分采用freescalecotex M4系列的高性能单片机作为主控制器,搭载其开发的MQX操作系统对UART串口、网口、两线式串行总线I2C BUS进行控制与实时交互,是整个方案的核心。UART AUART B是串口的输入输出部分,交换机主从设备输出的日志信息通过这两个串口进入到MCUMCU接收到信息后通过安全数字记忆卡总线SD BUS将数据写入到嵌入式多媒体存储器eMMC中保存。freescalecotex M4系列的单片机只支持RMII接口,100M PHYMCU到网口的桥梁,其支持RMII接口。普通交换机上通常采用SGMII接口,通过10/100/1000M PHYRMII接口转换为SGMII接口再与交换机相连接。远端可通过网口登录模块的FTP,然后下载eMMC存储器中记录的日志信息。日志记录模块内部闪存flash存储模块的产品名称、产品序列号、IP地址、MASK地址、GETWAY地址、MAC地址等信息,交换机可通过I2C BUS访问0xA0地址来实时读取这些信息。10/100/1000M PHYI2C从机地址为0xAC,交换机可通过I2C BUS配置它,并建立物理层通信。

在图2日志记录模块的总体程序流程中,由主进程子模块生成日志记录进程、FTP进程、telnet服务器进程、I2C接收进程、I2C发送进程,在telnet服务器进程中接收到相应的命令后生成远程交换机管理进程。

在图3所示的主进程子模块主进程中,主进程子模块上电进行系统和硬件初始化工作。

第一步主进程子模块发送在位信号给交换机,主进程子模块将在位信号引脚设置为低电平5S后设置为高电平,交换机实时检查在位信息是否变低,当交换机收到在位信号为低电平后启动其I2C进程每20S访问模块从机地址为0xa0中的信息,以识别主进程子模块的型号。

第二步主进程子模块安装eMMC存储器的设备驱动以及分区管理驱动,进而建立MFS文件系统。当MFS文件系统初始化完成后检查system.ini文件系统是否存在,如果不存在就新建system.ini文件,如果存在就跳过system.ini文件的初始化。system.ini文件系统中记录串口A与串口B的配置参数,FTPtelnet的用户名与密码等信息。

第三步主进程子模块初始化I2C的发送与接收进程,当此进程初始化成功后交换机就可实时访问模块,以识别模块型号,读取主进程子模块中存储的IP地址、MAC地址、Mask地址等信息,为交换机与主进程子模块的以太网连接做准备。

第四步利用主进程子模块中存储的IP地址等参数初始化模块的网络配置、外部信号接口的物理层以太网PHY芯片寄存器配置等,建立以太网通信。

第五步主进程子模块初始化FTP服务器与telnet服务器进程,交换机可通过FTP服务器进程访问模块中记录的日志文件和system.ini文件,这是主进程子模块实现远程查看和记录的主要功能之一。telnet服务器进程主要作用是远程控制模块,以及查看模块的工作状态与配置模块等功能。

第六步主进程子模块初始化建立日志文件夹与文件,在ROOT跟目录下安排两个文件夹分别是文件夹A、文件夹B,分别保存主设备串口数据和从设备串口数据。在AB文件夹下还分别安排了两个子文件夹,其中文件夹A中的两个子文件夹名为A_1A_2,文件夹B中的两个子文件名为B_1B_2。每个子文件夹中的数据容量为1G。在每个子文件中安排存储数据的文件最大容量为20M,最多可生成10000个文件,每一个文件的标号从0~9999。当子文件夹A_1中数据容量达到1G后,数据转入到子文件夹A_2中保存。当A_2文件夹中数据容量也达到1G后,可将文件夹A_1中所记录的数据全部清除,然后在其文件夹中建立新的文件,依次循环。B文件夹的文件操作与A文件的文件操作方式相同。当第一个文件中的数据达到20M时,程序自动生成一个新文件,接着上次没有写完的数据继续写入到新的文件中保存,以此类推。需要说明的是在每次模块重新上电或复位后,需检查文件夹是否存在,如果存在就不重复建立,而对于日志文件,每次模块重新上电或复位后应新建立一个文件,这样做的目的是方便查看交换机异常掉电后所记录的数据。

第七步对串口进程(日志记录进程)进行初始化,主进程子模块上的主从串口实时接收交换机的串口输出的日志信息并记录到模块的eMMC存储器中,以方便交换机通过FTP来查看。当上面所有工作都完成后,主进程进入阻塞状态。

在图5所示的日志记录子模块的日志记录进程的串口进程流程中,日志记录子模块中的串口UART A、串口UART B接在交换机的主从串口输出端子上,当交换机发送串口数据后,日志记录子模块进入到串口进程中。在串口进程中,当收到数据后,将数据实时写入到存储器中保存。模块每次通过定时器来判断日志信息是否有时间间隙,当收到前一帧数据后,30秒之内没有收到数据时,模块将已接收到的数据写入存储器保存。如果模块始终没有收到数据则串口进程进入挂起状态,直到有数据到来时才唤醒。

第一步日志记录子模块首先应读取system.ini文件中关于串口的设置参数并配置模块上的两个串口,包括波特率、校验位数、数据位数、停止位数等数据。

第二步日志记录子模块读取system.ini文件中记录的文件名编号和要写入的文件夹编号,日志记录子模块出厂设置默认串口A的文件编号为1,文件夹编号为A_1,串口B的文件编号为1,文件夹编号为A_2。第一步与第二步是串口进程的初始化阶段。

第三步日志记录子模块实时检测串口A与串口B是否接收到数据,如果接收到数据后,日志记录子模块将串口A与串口B中读取到数据分别保存在定义大小为4K的缓存区bufferAbufferB中。

第四步日志记录子模块分别检查缓存区bufferAbufferB的数据容量是否已达到4K,如果没有达到就继续从串口中接收数据并保存于缓存区中,如果在30S定时时间到,串口接收到的数据仍然没有达到4K,日志记录子模块则将数据通过缓存区写入到文件中记录,以保持文件的完整性和实时性,当数据量达到4K后进入到第五步。

第五步日志记录子模块判断串口A中子文件夹A_1的容量是否等于1G,如果子文件夹A_1中的文件总量小于1G,日志记录子模块则利用第二步所读取的system.ini文件中记录的文件名序号作为当前文件名创建文件并以可读可写的方式打开,需要说明的是文件夹中所记录的每个文件容量为20M,文件夹容量为1G,则最多可以记录50个文件,并且文件夹的容量不会超过1G

第六步日志记录子模块获取当前要写入文件的大小并判断文件的大小是否等于20M,如果当前文件容量等于20M,说明当前文件已写满,需要新建立一个文件将数据写入到新文件中,并且更新system.ini文件中的文件名序号为新建文件的序号,同时应更新A_1的总容量。如果当前文件容量大小为0说明是新建立的文件,日志记录子模块则将串口接收到的数据直接写入到此文件中,写入完成后将此文件编号记录到system.ini文件中同时更新A_1文件夹的总容量。如果当前文件长度小于20M,则需要计算当前文件剩余长度与串口接收到的数据长度的差值。如果当前文件剩余长度等于串口接收到的数据长度,日志记录子模块则将串口数据直接写入到文件中,如果小于串口接收到的数据长度,则需要分段写。首先日志记录子模块将串口接收到的数据长度分为两部分,其中一部分写入当前文件,当当前文件达到20M时,另外新建一个文件,日志记录子模块将剩余部分的数据写入到新建文件中,并且更新system.ini文件中的文件名序号为新建文件的序号,同时应更新A_1的总容量。在第五步中,日志记录子模块判断串口A中子文件夹A_1的容量总量如果等于1G,则说明A_1文件夹的容量已满,需要将转存文件到A_2文件夹中。此时先判断文件编号是否已到最大数值10000,如果已是最大值则将文件编号重新设置为1,并从编号1开始计数。无论A_2文件夹下是否有数据都先删除,然后创建新的文件。同样文件编号与文件夹编号A_2应记录到system.ini文件中以便下次对文件和文件夹的访问。A_2文件夹中的操作方式与A_1的方式相同,只是当A_2文件夹的容量已满的情况下需要删除A_1文件夹中的数据而已。同样串口B的操作方式相同,只不过其存放的文件夹为B_1B_2。第六步对串口进程延时50ms已方便操作系统进行进程切换。上述过程完成后程序进入到第三步继续检测串口是否接收到数据,以此循环。

在图6所示的主进程子模块的FTP服务器进程中,主进程子模块在主进程中生成FTP服务器进程,FTP可在任何时候由远端PC主机对模块进行连接。FTP服务器进程分为主进程和子进程,主进程主要作用是给PC机提供并发服务,允许多个远端PC主机对模块连接并获取MFS文件,而子进程的主要作用是对FTP下的命令进行解析。通常PC机关闭FTP服务器时,只是通过“quit”命令退出子进程,而主进程不会退出,主进程一直处于运行状态已方便下次PC机对模块的连接。FTP服务器进程的建立、运行步骤如下:

第一步主进程子模块创建套接字,设置FTP服务器的端口号为21

第二步设置FTP缓存区的大小、设置超时时间。

第三步绑定套接字。

第四步对套接字进行监听。

第五步开始接收连接,一旦连接成功后就获取eMMC存储器中存储的文件,当所有文件都获取完成后进入到第六步。

第六步建立子进程,对FTP命令进行解析。此时如果PC机要访问存储文件则需要要输入模块FTP的用户名和密码登录命令进行解析,用户名与密码记录在system.ini文件中,只要FTP的命令解析正确并且用户名与密码与system.ini文件中记录的相一致则PC机就可以访问主进程子模块的中文件。FTP的用户和密码在telnet服务器中通过命令“ftppwd”来修改和设置。日志信息下载也是通过FTP子命令进行。

第七步检测FTP是否在1分钟内没有进行任何操作,如果有操作,继续进行命令解析,如果没有操作进行退出FTP子进程并释放子进程的内存空间。

第八步当主进程子模块的FTP服务器收到主机发送的“quit”命令后,FTP子进程退出并释放子进程的内存空间。

在图7所示的主进程子模块的Telnet服务器进程中,远端主机可通过网络登录模块的telnet服务器,实现对交换机日志记录模块的控制。模块内设置登录名和密码,主机登录时,模块比对登录名和密码。登录成功后,如果1分钟不做任何处理,telnet作超时处理来断开连接。通过telnet功能,主机可控制交换机日志记录模块的一些功能,如:设置模块的IP地址命令、子网掩码地址命令、串口的速率设置命令、telnet的用户名与登录密码命令、ftp的用户名与登录密码命令、ping服务命令、远程复位模块命令、恢复出厂设置命令、远程模块升级命令、远程交换机控制命令等。主进程子模块在主进程中生成Telnet服务器进程,Telnet可在任何时候由PC机对主进程子模块进行连接。Telnet服务器进程分为主进程和子进程,主进程主要作用是给PC机提供并发服务,允许多个PC机对主进程子模块连接,而子进程的主要作用是对Telnet下的命令进行解析。通常PC机关闭Telnet服务器时,通过“exit”命令退出子进程,而主进程不会退出,主进程一直处于运行状态已方便下次PC机对模块的连接。Telnet服务器进程的建立、运行步骤如下:

第一步主进程子模块创建套接字,设置Telnet服务器的端口号为23

第二步设置Telnet缓存区的大小、设置超时时间。

第三步绑定套接字。

第四步对套接字进行监听。

第五步开始接收连接,一旦连接成功后就获取eMMC中存储的文件,这里主要获取system.ini文件。

第六步建立Telnet子进程,此子进程主要是对Telnet命令进行解析。此时如果远端PC主机要访问存储文件则需要要输入主进程子模块Telnet的用户名和密码登录,用户名与密码记录在system.ini文件中,只要Telnet的命令解析正确并且用户名与密码与system.ini文件中记录的相一致则PC机就可以访问主进程子模块的中文件。Telnet的用户和密码在telnet服务器中通过命令“tnetpwd”来修改和设置。

第七步检测Telnet服务器是否在1分钟内没有进行任何操作,如果有操作,继续进行命令解析,如果没有操作进行退出FTP子进程并释放子进程的内存空间。

第八步当模块的FTP服务器收到主机发送的“exit”命令后,Telnet子进程退出并释放子进程的内存空间。在Telnet命令中设计了10条命令:

reset”命令:远程复位模块。

terminal”命令:远程配置模块上的串口UART A、串口UART B的参数。命令格式为:

terminal [baudrate <baudrate>] [databits <databits>] [parity <parity>] [stopbits <stopbits>] [flowcontrol <flowcontrol>]

ipconfig”命令:远程设置、修改IP地址、netmask地址、getway地址。命令格式为:ipconfig [<A.B.C.D>] [netmask<A.B.C.D>] [gateway <A.B.C.D>]

ping”命令:远程通过模块向PC机发送ICMP包,检查网络联通状态。命令格式为:ping<A.B.C.D> [size <1..1472>] [delay <1..3600>] [number <0..65535>]

restore”命令:远程对模块恢复出厂设置,对eMMC存储器进行格式化,重新建立system.ini文件,并且对串口参数、FTPtelnet用户名、密码,文件目录编号、文件名编号设置为初始值。

ftppwd”命令:修改ftp服务器的用户名和密码,并设置登录等级。命令格式为:

ftppwd<username><password><log grade>

tnetpwd”命令:修改telnet服务器的用户名和密码,并设置登录等级。命令格式为:tnetpwd<username><password><log grade>

control”命令:远程交换机管理,实现网络转串口功能,用于远程串口登录、控制交换机。命令格式为:control<serial port>

upgrade”命令:远程模块应用程序升级。

versions”命令:查看当前软件的版本号。

exit”命令:退出telnet子进程。

在图8所示主进程子模块的I2C接收、发送进程,在接收进程中,主进程子模块I2C从机收到主机发送的从机地址0xa0,然后根据I2C协议陆续收到存储地址与数据,主进程子模块每收到一个数据后将其存储在单片机的flash中。Flash存储下表中的信息,其中IP地址、netmask地址、getway地址与MAC地址为自定义的内容,其余内容与SFF84720xa0地址定义的内容相一致以方便交换机对主进程子模块的识别。

在图9所示主进程子模块的远程交换机管理进程中,由远端PC主机通过以连接telnet服务器端口号为23的进程子模块发出“control”远端交换机管理命令后生成,其主要实现网络转串口的功能。当输入命令成功后,串口日志记录进程阻塞,串口输入的数据不进入到日志记录进程而是将其转换为网络数据传输到PC机中。网络转串口的实现仍然采用telnet服务器,但是此时端口号设置为24,以避免与控制模块的telnet服务器相冲突。远程交换机管理进程分为主进程和子进程,主进程子模块主进程主要作用是给PC机提供连接服务,而主进程子模块子进程的主要作用是实现网络转串口的功能。通常远端PC机关闭Telnet服务器时,直接退出子进程,而主进程子模块主进程不会退出,主进程子模块主进程一直处于运行状态已方便下次PC机对模块的连接。远程交换机管理进程的Telnet服务器进程的建立、运行步骤如下:

第一步主进程子模块创建套接字,设置Telnet服务器的端口号为24

第二步设置Telnet缓存区的大小、设置超时时间。

第三步绑定套接字。

第四步对套接字进行监听。

第五步开始接收连接。

第六步主进程子模块建立Telnet子进程,重新通过system.ini文件中保存的串口参数设置串口,对应的串口号由端口23telnet服务器输入命令“control + serial port”以确定打开的串口号。

第七步主进程子模块循环检查串口、网口是否有数据输入,当接收到数据后就将其进行转换。当PC机关闭远程交换机管理进程的telnet子进程后,主进程子模块子进程退出同时释放内存空间。

第八步,重新启动日志记录进程。

10图所示的主进程子模块在整个闪存flash memory区域划分中,主进程子模块安排地址0x00000000-0x000BFFF为远程升级的bootloader的代码区域,这个区域受到保护,任何情况下都不被修改、擦出。安排0x0000C000-0x00007E7FFF为模块的应用程序区域,这个区域就是模块程序的具体实现部分,可通过远程升级程序修改。安排0x0007E800-0x00007EFF存储模块的版本号信息,可通过主进程子模块远程升级程序修改,用telnet服务器中的“versions”命令查看升级是否成功,当前版本信息等情况。安排0x0007F000-0x0007F7FF为主进程子模块EEPROM 0xa0地址中的信息,此地址中的存储的是模块的类型、IP地址、netmask地址、MAC地址等重要信息,所以此地址中的内容受到保护,只能通过I2C或者telnet服务器中的命令修改。安排0x0007F800-0x0007FFFFbootloader与系统参数信息,此地址中的数据同样受到保护。在执行远程升级时,只对0x0000C000-0x00007EFFF进行擦出与修改。

在图11所示的主进程子模块远程升级校验流程中。由远端PC主机通过以连接telnet服务器端口号为23的进程子模块发出“upgrade”后运行。首先通过主进程子模块FTP将编译好的升级文件“module.srec”存放在MFS文件系统的ROOT跟目录下,在telnet中输入命令“upgrade”后,主进程子模块程序自动打开“module.srec”文件,当文件打开不成功说明MFS文件系统的ROOT根目录下无“module.srec”文件,程序返回不执行。当文件打开成功就开始读取“module.srec”文件中的数据,如果读取的数据没有到文件尾部,主进程子模块则判断读取的512字节数据是否成功,读取不成功就删除“module.srec”文件然后返回,读取成功后主进程子模块将.srec文件转换为.bin文件并进行数据校验。校验不成功说明“module.srec”文件中有错误不能用于升级,必须删除“module.srec”文件然后返回。校验成功后将地址指针加512字节指向下一个位置,直到“module.srec”文件中的所有数据都读取、校验、写入完成后就复位单片机。

在图12所示的主进程子模块的远程升级程序流程中,主进程子模块按照图11的流程执行完成后主进程子模块复位,主进程子模块程序从闪存flash memory地址为0x00000000地址开始取址,进入到远程升级bootloader程序运行。首先主进程子模块初始化MFS文件系统,当文件系统初始化完成后打开MFS文件系统中ROOT根目录下的“module.srec”文件,当文件打开不成功说明MFS文件系统的根ROOT根目录下无“module.srec”文件,主进程子模块程序跳转到0x0000C000地址处执行应用程序。当文件打开成功就开始读取“module.srec”文件中的数据,如果读取的数据没有到文件尾部,主进程子模块则判断读取的512字节数据是否成功,读取不成功先关闭“module.srec”文件并将其删除,然后程序跳转到0x0000C000地址处执行应用程序。读取成功后主进程子模块将.srec文件转换为.bin文件并进行数据校验。校验不成功说明“module.srec”文件中有错误不能用于升级,必须删除“module.srec”文件然后,主进程子模块程序跳转到0x0000C000地址处执行应用程序。校验成功后主进程子模块从0x0000C000地址处的应用程序按512字节擦除,主进程子模块将转换为.bin的数据写入到擦除的区域中,随后地址指针加512字节指向下一个位置,直到“module.srec”文件中的所有数据都校验正确并写入flash后,关闭“module.srec”文件并将其删除以避免主进程子模块重新上电或复位后又读取到“module.srec”文件,重复执行上面的流程,随后程序跳转到应用程序处开始运行。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1