由于IP 寻址简单, 适于异构网互连, 为实现分布式处理、实时监控的测控系统的实现提供了很好的条件。本文所构建的系统被用于将多个采集点的数据传给主控机, 实时网络还有其他三个采集节点, 主控机按顺序给各个节点发指令字, 并依次从它们那里接收数据包, 其通信协议采用了T CP 和U DP。并以KEIL uVision3 的RT L 实时库为软件平台, 基于ATMEL公司ARM7 系列处理器, 实现了完整的功能。
1 系统的硬件构成
1. 1 系统的硬件
系统的三个采集节点都采用ATMEL 的A T91SAM7X256, 该微控制器具备嵌入式10/ 100 以太网(Ethernet) MA C、CA N、全速( 12Mbps) U SB 2. 0。它针对广泛的网络化实时嵌入式系统而设计的,AT 91SAM7X256 还具备一个10 位模数转换器( ADC) 、两个串行外围接口( SPI) 、同步串行接口( SSC) 、双线接口( TWI) 、三个通用异步收发器( UART) 、一个8 级( 8- level) 优先中断控制器( pr ior ity inter rupt controller ) 和众多的监管功能。这个新型的50 MIPS MCU 拥有64KB 的静态存储器和256K B 的25ns 闪存, 这种闪存支持实时控制系统所需的可确定性处理能力。
主控机用PC 机, *** 作系统用RedHat9. 0, 它主要用于轮询各个采集节点, 并将从它们那里收到的数据包储存和显示出来。
1. 2 系统的拓扑结构
实时以太网的拓扑结构与以太网相同。主机通过以太网卡连到通信电缆上。通信电缆可以是同轴电缆, 也可以用非屏蔽双绞线。如果是非屏蔽双绞线, 则需要用HUB。
2 系统的软件构成
2. 1 体系结构
实时以太网参照ISO 的OSI 模型, 采用缩减的网络体系结构。网络体系结构分为四层: 物理层、数据链路层、传输层和应用层, 其中数据链路层又可细分为MAC 子层和LLC 子层。以太网卡实现了物理层和MAC 子层能; LLC子层设计为向传输层提供无连接无确认的服务。传输层实现基于消息的数据传输, 并向应用层提供网络中节点间实时数据传输服务。下面将着重讨论传输层协议的设计。
2. 2 KEIL uVision3 的RTL 实时库
RealView RL- ARM 是为解决基于ARM MCU 的嵌入式系统中的实时及通信问题而设计的紧密耦合库集合。
它可以非常方便地应用于所有A RM7、ARM9 和Cort ex-M3 系列的处理器, 使得在ARM 处理器上运行实时程序非常容易。它包含四个部分: RT X 实时内核、Flash 文件系统、TCP/ IP 协议簇、RT L - CAN ( 控制域网络) , Real??
V iew 实时库可以解决嵌入式开发中的如下几个常见问题:
( 1) 多任务( 可以在单CPU 上管理几个工作或任务) ;( 2) 实时控制( 可以控制任务在既定时间内完成) ;( 3) 任务间通信( 可以实现系统中的任务间通信) ;( 4) Internet 连接( 通过以太网或串口( Modem) ) ;( 5) 嵌入式Web 服务器( 包括CGI 脚本) ;( 6)E- mail 公告( 通过SMT P) 。
系统的网络功能正是构建在RT L 实时库之上的。下面简述一些RTL 实时库的网络函数。
( 1) TCP 发送函数BOOL t cp_ send ( U8 Socket , U8* buf, U16 dlen) ;其中Socket 为通信TCP Socket, 它包含了对方的IP和端口信息, buf 为要发送数据的首地址, dlen 为发送数据包的最大值。
( 2)U DP 的发送函数udp _ send ( U8 Socket , U8 *remip, U16 rempor t, U 8 * buf, U16 dlen) , 其中Socket 为通信U DP S ocket , remip 为对方的IP 地址, rempor t 为对方的通信端口, buf 为要发送数据的首地址, dlen 为发送数据包的最大值。
( 3) 接收数据时, RT L 实时库不像BSD Socket 一样有专门的接收函数, 而是利用回调机制, 即收到数据时, 就触发相应的回调函数。另外, 对于T CP, 在回调函数里它有多个响应事件, 如TCP_EVT _CON REQ ( 连接请求) ; T CP_EVT_CONN ECT( 已建立连接) ; T CP_EVT _CLOSE( 连接已关闭) ; T CP_EV T_ABORT ( 连接异常终止) ; TCP_EV T_ACK( 发送的数据已被对方响应) ; T CP_EVT _DATA ( 收到数据包) , 提取收到的数据并进行处理就是在该事件下完成的。然而, 对于UDP, 它没有各个响应事件。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)