S3C44B0X与C54X DSP的接口设计
3.3.2:HDLC通道数据接收中断处理过程
DMA方式下HDLC通道接收完一帧数据,或者接收过程中出现了可引起中断的异常情况,此时软件会进入中断处理程序。引起中断的情况在HDLC通道初始化的步骤4,即中断控制寄存器的设置中已做了说明。在我们的编程中,HDLC通道接收中断处理过程主要完成以下一些功能:
1.进入中断后,首先清除4510中断指示寄存器INTPEND中相应的标志位。
2.如果DMA接收正确,则进行数据帧接收成功状态计数,并清除HDLC通道状态寄存器HSTAT中的相应状态位。对接收到的数据帧作相应的处理后,要重新将是用过的接收BUFFER描述符的OWERSHIP位设置为DMA所有。
3.如果接收出现异常,则完成相应的异常状态计数,并清除HDLC通道状态寄存器HSTAT中的相应位。其中有两个异常会影响以后的DMA操作,一:DMA接收BUFFER描述符不属于DMA所有(DRxNO);二:DMA接收BUFFER描述符指针空(DRxNL)。发生这两个异常时,说明接收BUFFER描述符双向环形链表结构出现错误,处理器会自动禁止DMA发送功能,因此建议重构接收BUFFER描述符双向环形链表结构并重新使能DMA发送功能。
4:S3C4510B的HDLC通道使用中的注意事项
我们编写了4510的HDLC通道底层驱动程序,并应用在了我们的155M SDH设备软件中。通过对软件的调试,感觉在使用4510的HDLC通道时,需要注意下面的问题:
1.发送和接收数据大端/小端模式要一致,否则收到的数据与发送的数据高字节和低字节颠倒。
2.使用DMA模式收发数据时,正常状态下进入中断后,读取发送BUFFER描述符指针寄存器(HDMATxPTR)或接收BUFFER描述符指针寄存器(HDMARxPTR)的内容时,他们指向的都是下一个未用的BUFFER描述符。因此想处理接收到的数据或者初始化用过的发送BUFFER描述符时,需要指回到它们。
3.使用DMA方式时,发送和接收BUFFER描述符在使用时的OWERSHIP位必须是DMA所有。因为发送是主动的,所以当把数据放进BUFFER描述符后,可以设置OWERSHIP位,然后启动DMA发送;而接收是被动的,因此数据到来前,将要使用的BUFFER描述符必须是DMA所有,这就是每次进入接收中断后需要重置接收BUFFER描述符OWERSHIP位的原因。
4.当发送端的时钟信息无法传递到接收端时,最好使用DPLL或者发送前导码,以便接收端能够恢复发送端的时钟信息。
5.当使用外部时钟源发送或接收数据时,注意数据采样点和外部时钟源的配合。我们的设备中一块芯片为4510的HDLC通道提供时钟,它在时钟上升沿发送,下降沿接收,4510的HDLC通道默认模式是时钟下降沿发送,上升沿接收。我们以这种模式收发数据,存在严重的数据不稳定问题,当改为上升沿发送,下降沿接收后,完全正常。因此数据采样点的配合很重要。
6.4510的HDLC通道收发方式还可以采用中断方式,由于时间紧迫和能力有限,我们的程序没有实现,有兴趣地可以参考4510数据手册实现中断方式收发。
5:总结
KS4510B是一款性价比很高的ARM处理器,功能丰富,编程简单,并且可以配合几种嵌入式实时操作系统,如pSOS,NUCLEUS等。我们的155M SDH传输设备中,使用4510B和NUCLEUS操作系统,完成了底层控制软件。经过调试,该软件性能稳定,其中HDLC通道完成了私有网管协议在SDH环网上的传输转发,实现了远程管理的功能。
随着各种电子,通讯产品对性能要求的日益提高,基于先进的ARM架构的各种32位微处理器也将得到越来越广泛的应用。因此,掌握了ARM处理器的使用和编程方法,必然能在工作中事半功倍,得到良好的结果和收益。
评论