一种双MCU结构的嵌入式Internet接入服务器
软件部分要实现的协议[3]至少是:应用层上负责Web页面请求和应答的HTTP协议;位于传输层上保证数据进行可靠传输的TCP协议[4],在数据传输时采用带重传机制的停-等协议,有效保证数据的传输;位于网络层上进行数据传输的IP协议;IP[5]是TCP/IP协议族中最为核心的协议,它对收到的IP数据报进行分用,提交TCP或ICMP协议处理,对TCP或ICMP[6]报文进行IP封装,交数据链路层装帧发送是IP协议负责的主要任务,因此对这两个功能也要进行实现;实现32位IP地址到48位网卡地址转换的ARP协议,完全可以满足网络上主机对InetMCU的IP地址进行解析的需求;实现网卡的驱动程序。Ping这一常用的网络诊断工具也应该被提供,所以与Ping相应的ICMP协议应该予以实现。
2.2 DCX嵌入式实时操作系统
DMCUEIAS基于实时多任务操作系统“&”,这是一段在DMCUEIAS启动后首先执行的后台程序。用户的应用程序是运行于RTOS上的各个任务,RTOS[8]根据各个任务时要求,进行资源(包括存储器、外设等)管理、消息管理、任务调度、异常处理等工作。在RTOS[9]支持的DMCUEIAS系统中,每个任务均有一个优先级。DMCUEIAS根据各个任务的优先级,动态切换各个任务,保证实时性的要求。
DCX(Distributed Control Executive)嵌入式实时操作系统[10]相当于实时操作系统的核,本文讨论的DMCUEIAS支持8位的DCX51。DCX51执行程序已固化在DevMCU中,为BITBUS网络上的节点提供多任务能力,并且控制DevMCU和InetMCU之间的通信。DCX51操作系统提供中断处理,能实时地响应外事件发出的中断服务请求、任务间的通讯、任务的同步,内部存储器管理对应用程序代码段和数据区以不同方式管理;定时服务以及其于优先级的抢占式任务调度方法。新建任务如果优先级最高,可立即运行,否则处于就绪状态。就绪队列中的任务按优先级顺序排列,下一次运行的总是就绪阶列中优先级最高的任务,同优先级的任务则按就绪时间顺序排列是。DCX支持多任务,0号任务RAC是系统任务,它管理目标机与上位机通信。含有DCX51的DevMCU作为主控芯片安装到目标机上,分布到工业现场中控制设备。对于每部分功能,DCX都提供系统调用,这些调用就是用户任务与DCX的接口。这些服务综合在一起就实现一个实时系统。这样在DMCUEIAS中,用户主要完成控制外部设备的各个程序模块。
2.3 RAC任务
任务是一个可调度的执行单元,它由执行代码和只能由该任务存取的私有数据组成。RAC(Remote Access Control)任务,即远程存取和控制,专门负责远程任务的接收和发送。当信息发送到另一节点时,DCX51执行程序发送信息到RAC任务(即任务0)。RAC任务内含通信服务,它已经随同DCX51操作系统一道固化到DevMCU,通过DCX51,可以实现InetMCU与DevMCU的通信。它有两种类型的服务:数据存取和任务控制。数据存取类的服务可以对DevMCU不同的存储器段或I/O空间进行数据的读或写。任务控制类的服务可以下载一个任务的目标代码到DevMCU,建立或删除在DevMCU的一个任务。传到InetMCU的数据通过RAC任务从InetMCU传到DevMCU,再由DevMCU完成远端设备的控制和访问。
RAC任务的信息格式如表1。其中,Link是系统用于保存信息表的两字节的参数;Message length是RAC命令或回答的字节数。MT(Message-type):指定信息类型的一位;SE(src-ext)表示产生信息的任务是否在扩展节点上;DE(dest-ext):表示接收命令信息的任务驻留在扩展节点上,还是在一个设备上;Node address:只能通过PC系统接口进行传递的信息参数是0xff,当信息从同一节点的一个任务传递到另一个任务时,参数是"0";Source task:是源节点发送任务的任务ID(0~7);Destination task:是目的任务的任务标识符;Command/respond:包含选择规定的RAC任务的参数(不同服务其值也不同),RAC任务的响应信息包含了指示服务结果的状态代码;data:数据,对不同RAC服务而不同。
表1 RAC信息格式
Link(高字节) | |||||||
Link(低字节) | |||||||
Message Length | |||||||
MT | SE | DE | 0 | 0 | 0 | 0 | 0 |
Node address | |||||||
Source task | Destination task | ||||||
Command/respond | |||||||
data |
2.3.1 RAC任务控制类
任务控制类允许用户在远程节点上使用适当的DCX51系统调用,或者控制远程节点自身。在DMCUEIAS中用户可以把指定的任务文件(必须是十六进制格式,如.hex)通过Internet下载到InetMCU里,然后通过下载后,客户端还要发create命令激活下载的文件数据,通过RAC任务create服务把命令传到DevMCU,完成新任务的建立,实现控制设备。
用户还可以控制其它服务如delete task(删除特定的任务,并禁止所有与该任务有关的中断)、reset device(全部任务初始化),为此用户必须知道当前运行的任务号。这需用户事前发get function ids命令,DevMCU通过RAC任务的get function ids服务把ID号传给InetMCU,并通过Internet返回到客户端,用户可对任务进行不同的操作(如删除等)。
2.3.2 RAC数据存取类
数据存取类使用户可以对不同的存储段或I/O空间进行数据的读写。在DMCUEIAS中,客户端