下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 基于PowerPC的自环通信系统的BSP设计 常耀斌,邓中亮 时间:2008年03月26日 字 体: 大 中 小 关键词:<"cblue" " target='_blank'>描述符<"cblue" " target=
2、39;_blank'>串口通信<"cblue" " target='_blank'>接收数据<"cblue" " target='_blank'>设备上<"cblue" " target='_blank'>最大 摘要: 针对PowerPC在高速信号和大量数据处理中的应用
3、优势,在PowerPC860板的通信处理模块CPM的SCC3<"cblue" " title="设备上">设备上开发了板级支持包BSP,使<"cblue" " title="串口通信">串口通信通道SCC3端口实现了HDLC协议的自环方式通信,通过SCC3端口发送数据或文件,将接收到的数据通过串口发送到PC仿真终端显示。关键词: BSP设计 驱动程序 缓存区 缓存区描述符?嵌入式系统是一种对可靠性和实时性要求较高的专用计算机系统。PowerPC860能够提供良好的编程、编
4、译、系统配置和调试环境,同时能在底层实现模块化和屏蔽化。VxWorks是32位的实时操作系统,支持32位以上的嵌入式处理器,如MIPS、ARM、PowerPC系列等。在VxWorks的开发环境Tornado中已集成了很多基于ARM和PowerPC系列的驱动模块,如网卡设备驱动、串口通信驱动、块设备驱动等。在Tornado系统中,已在串口通信通道SCC3设备上开发了基于UART协议的板级支持BSP。但由于UART协议没有数据差错校验处理,所以不能实现数据的可靠传输。本文基于HDLC协议,提出了通过SCC3端口发送和<"cblue" " title="
5、接收数据">接收数据,其中SCC3的接收缓冲区不但包括发送缓冲区的数据内容,还包括16位或32位的CRC差错校验,实现了数据的高可靠性和实时性传输。PowerPC860的板级支持包BSP的设计是实现SCC自环通信系统开发及移植的重点,BSP 主要完成VxWorks 对专用目标板的支持。由于对硬件系统紧凑性和操作系统处理性能的要求,本BSP设计是在SCC3端口上采用NMSI方式实现的自环通信。1 系统的BSP初始化方法PowerPC860由其内核、系统接口单元和通信处理模块CPM三部分组成。其中通信处理模块可以在不同的设备上发送和接收信息,还可以在CPM的串口通信通道SCC上实现
6、不同协议的传输。一个BSP 包括硬件初始化、中断处理和产生、硬件时钟管理、本地和总线内存空间映射,同时也包含定制VxWorks 映像。目标板初始化和驱动程序设计是SCC3端口实现HDLC协议自环方式通信的关键和难点。通常,BSP提供的功能有:初始化(CPU初始化、目标板初始化、内核初始化)和驱动程序支持。驱动程序负责硬件设备的初始化,并与设备交互实现系统对设备功能的调用。本文提出的BSP设计特点是基于HDLC模式对SCC3通道初始化以及存储区的初始化配置,并采用中断控制提高数据传输效率。该BSP能够提供标准接口,包括设备初始化、设备的启动和停止、设备状态查询、中断和查询方式下发送和接收数据,从
7、而实现底层模块化及提高数据处理效率。1.1 对自环通信的SCC3初始化的硬件设计配置发送与接收所用的波特率发生器,将SCC3的收发时钟分别配置成内部时钟和外部时钟;将SCC3配置成NMSI模式,初始化SDCR寄存器。在函数sccIoctl中,模式为16位CRC寄存器的设置如下:sccIoctl(SCC_CHAN*pChan,int com,int arg)if(arg=CRC16_MODE) pChan->hdlc.pSccReg->psmr&=0x0800;pChan->hdlc.pScc->c_mask=CRC16_MASK;pChan->hdlc.p
8、Scc->c_pres=CRC16_PRES;return (status);1.2 对初始化SCC3的软件设计SCC3的初始化包括参数RAM和收发缓冲区<"cblue" " title="描述符">描述符BD的初始化。IMMR寄存器的值是内存基址,其中内存包括寄存器基址和收发缓冲区描述符BD等。设置Rx和TxBD表的基址相对于双端口RAM的偏移量;设置Rx和Tx的函数代码;在MRBLR中设置接收缓存的<"cblue" " title="最大">最大空间;设置收发缓
9、冲区描述符BD表基址相对于IMMR寄存器中值的偏移量。收发缓冲区描述符BD对Buffer结构进行描述,包括对Buffer的状态statusMode(即是否为空)、长度dataLength和指针dataPointer的描述。收发缓冲区描述符BD初始化过程如下(其中MAX_RXBD_NUM为最大接收缓冲区描述符BD数,MAX_BUF_SIZE为最大接收Buffer数目):static void InitBDs(void)int i=0;/*pRxBuffer是Buffer的首地址*/for (i=0;i<MAX_RXBD_NUM;I+)RecvBDi->statusMode=0x000
10、0;RecvBDi->statusMode|=(BD_RX_EMPTY_BIT);RecvBDi->dataLength=0;RecvBDi->dataPointer=(u_char*)(pRxBuffer+i*MAX_BUF_SIZE);2 自环方式通信系统的驱动设计由于系统在自环通信方式下工作,所以SCC3的参数RAM、收发缓存区描述符等的内存地址设计、UART协议和HDLC协议的驱动设计方法、自环通信和多通道通信方式设计将发生根本变化。因此系统设备驱动程序需编写具有相应特点的设备函数。(1)接收函数sccPollInput()的设计。正式读入数据前,必须先检测帧开始标志
11、,并匹配地址,然后决定是否进入接收状态。进入接收状态后,首先提取RxBD的状态模式字节,若接收未准备好,则继续等待;若已准备好,则开始接收。由于一个数据包可以放置于多个缓存,所以检测RxBD状态模式字节的L位,以判断是否为本帧的最后一个缓存。如果不是,则关闭这个缓存,处理下一个缓存描述字;如果是,则接收完最后一个缓存的数据后结束接收过程。对于最后一个buffer,需要检测是否有接收错误。下面举例说明SCC3的一个接收缓冲区描述符BD所描述的5个Buffer的数据接收过程,如图1所示。该例设节点地址STADDR为0x1999,最大Buffer接收数MAX_BUF_SIZE为5,接收缓存地址pRx
12、Buffer,连续接收发送缓存区数据66,XmitBD0->dataPointer为首地址pRxBuffer赋值。接收Buffer的数据结构和实现接收数据的基本过程如下:#define MAX_BUF_SIZE 5#define STADDR 0x1999typedef structSCC_HDLC_BUF*pTxBuffer;SCC_HDLC_BUF*pRxBuffer;SCC_HDLC_DEV*pRxBuffer =XmitBD0->dataPointer;*pRxBuffer=(STADDR%256);*pRxBuffer=pRxBuffer +1;*pRxBuffer=(S
13、TADDR/256);pRxBuffer=pRxBuffer +1;for(index=2;index<MAX_BUF_SIZE;index+)<MAX_BUF_SIZE;INDEX+)*pRxBuffer=0x66;pRxBuffer=pRxBuffer+1;(2)发送函数sccPollInput( )的设计。设计方法同接收函数相似,但对于最后一个Buffer,需要检测是否有发送错误,并以剩下的实际数据长度作为发送帧中数据段的长度发送。(3)设备控制函数sccIoctl()和数据发送函数sccStartup( )的设计。sccIoctl()函数用于设备工作模式配置和参数读取。其中
14、包括工作模式、通信速率、节点地址、CRC模式、最长帧等。轮询模式下的收、发消息不需外部消息激励,减少了任务的相互调度,可以用taskDelay实现 ,但是效率较低。sccStartup( )是中断方式下的数据发送函数,设计要求在sysHwInit2( )函数中用接口inConnect( )实现关联sccStartup( )和ISR。本文是在CS860板的SCC3设备上开发支持标准HDLC点对点通信协议的BSP,它实现了数据的高可靠和实时性传输。基于Vxworks 操作系统的HDLC协议自环通信,按一定的步骤分阶段编码调试实现。开发步骤包括:建立开发环境、编写初始化代码驱动、调试BSP等。通过测试程序实现了在查询及中断方式下发送和接收数据,在超级终端设置和查看工作模式、通信速率、节点地址、CRC模式,最长帧等,并设有收发是否正常及错误类型告警提示。通过硬件配置和程序调试,本文的BSP能在PowerPC860的其他SCC上移植。参考文献1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论