MPC860的HDLC通道驱动程序的设计与实现
3 驱动程序的设计思想及其实现
这里选择VxWorks作为本CPU板的操作系统。VxWorks是美国风河系统公司推出的一种高性能、可裁减的实时嵌入式操作系统,以其良好的可靠性和卓越的实时性被广泛应用于通信、军事、航天等领域。因此,程序的设计必须按照这个操作系统的结构来构建。本文的主要目的是将MPC860处理器的一个SCC通道配置成为HDLC模式,以支持VxWorks操作系统下的HDLC通信,所以程序的设计主要围绕这个目的进行,在此并没有按照传统驱动的模式构建驱动程序,而是直接对硬件进行操作。首先设置通道参数,将其配置成HDLC模式,然后设计基本功能函数。当驱动程序运行时,首先要进行SCC通道的初始化以及存储区的初始化,然后才开始执行收发功能,在这当中要加上中断控制。按照这个程序的基本流程,具体的实现分为下面几步(在本设计中将SCC2配置成HDLC模式)。本文引用地址:http://www.amcfsurvey.com/article/202570.htm
3.1 定义参数RAM
参数RAM主要包括通道参数RAM和通道协议参数RAM两部分,SCC通道的主要参数都在这个里面配置。它们包含CPM RISC用来正确操作SCC通道的特定协议所用的信息。
3.2 初始化SCC2
(1)将MPC860的PA12、PA13引脚作为SCC2的收发引脚。
(2)MPC860有四个BGR和八个外部时钟引脚,将SCC的收发时钟分别配置成内部时钟和外部时钟。
(3)将SCC2配置为NMSI模式。
(4)初始化SDCR寄存器,给予SDMA一个仲裁ID以提供U总线上的优先级。
(5)初始化SCC2的参数RAM(这步对所有的协议都是通用的):
①设置Rx/TxBD 表的基址相对于双端口RAM的偏移量;
②设置收发缓冲区描述符表基址相对于IMMR寄存器中值的偏移量;
③设置Rx/Tx 的函数代码;
④在MRBLR中设置接收缓存的最大空间。
(6)针对SCC2的HDLC模式进行初始化;
①通过C_MASK和C_PRES 设置CCITT-CRC;
②对CPM维护的五个计数器DISFC、CRCEC、 ABTSC、 NMARC和RETRC清零;
③在MFLR中定义最大帧长度,通常定义为0x0100,表示最大帧长度为256字节;
④在RFTHR中定义接收到多少个HDLC帧时产生一个中断申请,当将RFTHR置位0x0001时,表示每接收到一个帧产生一个中断申请;
⑤设置接收地址,hmask用来定义地址掩码,当hmsk=0x0000时,表示接收所有帧。
评论