根据项目设计要求 嵌入式 处理器作为 服务器 ,串行端口收发信息,经快速以太网接口实时发送到局域网。客户端将需要发送到串口的数据通过快速以太网接口经处理器转发到串口。因此,这是提出一种基于MPC860与 STl6C654的串行通信设计方案。采用MPC860连接STl6C654。 MPC860是目前在网络与通信领域应用广泛的一款微处理器,其高速的PowerPC内核,连同集成的网络与通信外围设备,为用户提供一个建立高端通信系统的解决方案。STl6C654是一个带有收发各64字节、可扩展4路串行通道FIF0的扩展通用异步收发器,用于和高速调制解调器及需要快速处理数据时间的共享网络环境一起工作。
1 系统硬件设计
1.1 主要器件选型
1.1.1 MPC860型微处理器
MPC860 PowerQIUCC(简称MPC860)内部集成了2个处理单元。一个处理单元是嵌入的PowerPC核(PowerPCCore),是主处理单元 (CPU),是一个RISC芯片,通常编译后的程序指令都是由它执行;另一个处理单元是通信处理模块CPM(CommunICaTIons Processor Module),内部集成有一个RISC微处理器,对各种常用的通信模块进行管理。通信处理模块内部集成有4个串行通信控制器SCC、2个串行管理控制器 SMC、1个串行外围接口电路SPI和1个I2C接口。另外,还有一个系统接口单元SIU,主要功能是提供内外总线的接口及一些其他功能(如SIU中断) 的管理等。本设计利用通信处理模块CPM强大功能,与STl6C654通信。MPC860硬件结构如图1所示。
1.1.2 STl6C654
STl6C654是一个带有收发各64 Byte的FIF0的扩展通用异步收发器,自动软硬件流程控制,速率最高达到1.5 Mb/s(24 MHz时钟),支持16(Intel)/68(Motorola)总线接口类型。STl6C654结构图如图2所示。扩展的4路串口通道,每个通道有15 个(64/68PIN封装)或16个(100pin封装)内部寄存器,用来存放收发数据以及配置该串口的工作模式,需要在初始化时对各寄存器进行配置。工作模式有中断模式和定时查询模式,中断模式实时性能好,适合于紧急情况,中断次数多,中断任务切换频繁影响主要任务的运行;定时查询模式,由于 STl6C654具有缓存,定时查询方式具备一般实时性,数据不丢失。
1.2 系统组成
电路设计需要注意:1)MPC2860采用大端(big-end)工作模式,STl6C654从BD0开始接收数据。STl6C654数据总线 D[0..7]连接MPC860的数据总线D[7..0],地址总线A[O..4]连接
2 系统软件设计
2.1 操作系统
Vxworks是由WRS(Wind River System Ine.)公司开发的一套具有微内核、高性能、可伸缩的实时操作系统,支持广泛的网络通信 协议 ,支持32位的CPU,包括Intel公司的x86、 MIatorola公司的68k和PoweerPC、MIPS、 arm ,并能够根据用户的需求进行组合;同时WRS公司还提供了优秀的实时操作系统开发工具Tornado。Tornado是一整套强有力的交叉开发工具,它能够支持几乎所有的工作平台和目标处理器,所提供有工具可用于所有目标机,并具有两种调试模式(系统模式和任务模式),能够轻松给Vxworks操作系统添加删除各种通信 协议 ,能够支持目标机和宿主机的如以太网、串行线路、在线仿真等通信选项,其机制和功能都是基于C/ C++ 语言,任务、中断、通信都提供了统一的API接口。这些特性为编写应用程序和设备驱动提供了极大便利。 Tornado目前已发展到6.O及更高板本。本设计开发工具是Tornado 2.0。
在Vxworks下,设备驱动可以嵌入到内核随系统一起启动,也可以作为加载模块在系统启动后运行。前一种需要修改内核,需要熟悉内核结构和运行方式,这实现比较困难:而后一种比较简单,与编写一般的应用程度类似。本设计采用后者。
2.2 STl6C654程序设计
定义消息结构MSG_STRUCT和串口接收UART_RECE_STRUCT数据结构:
系统启用收发2个任务,初始化STl6C654后,实现收发数据流程如图4所示。
数据流程 src="/article/UploadPic/2011-2/201121421245445.jpg" onload="return imgresize(this);" onclick="javascript:window.open(this.src);" style="cursor:pointer;"/>
3 结论
在详细分析MPC860和STl6C654元件性能参数的基础上,介绍了具体的开发实例。硬件采用MPC860连接STl6C654,软件采用 VxWorks系统,双任务驱动STl6C654进行串口收发通信,该实例已在TornadoⅡ2.0_2版本上通过调试,单通道连续收或发5字节实验,1秒20次无丢失包。该实例已成功应用于某型 网络设备 开发中。