MPC860的HDLC通道驅(qū)動程序的設(shè)計與實現(xiàn)
3 驅(qū)動程序的設(shè)計思想及其實現(xiàn)
這里選擇VxWorks作為本CPU板的操作系統(tǒng)。VxWorks是美國風河系統(tǒng)公司推出的一種高性能、可裁減的實時嵌入式操作系統(tǒng),以其良好的可靠性和卓越的實時性被廣泛應(yīng)用于通信、軍事、航天等領(lǐng)域。因此,程序的設(shè)計必須按照這個操作系統(tǒng)的結(jié)構(gòu)來構(gòu)建。本文的主要目的是將MPC860處理器的一個SCC通道配置成為HDLC模式,以支持VxWorks操作系統(tǒng)下的HDLC通信,所以程序的設(shè)計主要圍繞這個目的進行,在此并沒有按照傳統(tǒng)驅(qū)動的模式構(gòu)建驅(qū)動程序,而是直接對硬件進行操作。首先設(shè)置通道參數(shù),將其配置成HDLC模式,然后設(shè)計基本功能函數(shù)。當驅(qū)動程序運行時,首先要進行SCC通道的初始化以及存儲區(qū)的初始化,然后才開始執(zhí)行收發(fā)功能,在這當中要加上中斷控制。按照這個程序的基本流程,具體的實現(xiàn)分為下面幾步(在本設(shè)計中將SCC2配置成HDLC模式)。本文引用地址:http://www.ex-cimer.com/article/202570.htm
3.1 定義參數(shù)RAM
參數(shù)RAM主要包括通道參數(shù)RAM和通道協(xié)議參數(shù)RAM兩部分,SCC通道的主要參數(shù)都在這個里面配置。它們包含CPM RISC用來正確操作SCC通道的特定協(xié)議所用的信息。
3.2 初始化SCC2
(1)將MPC860的PA12、PA13引腳作為SCC2的收發(fā)引腳。
(2)MPC860有四個BGR和八個外部時鐘引腳,將SCC的收發(fā)時鐘分別配置成內(nèi)部時鐘和外部時鐘。
(3)將SCC2配置為NMSI模式。
(4)初始化SDCR寄存器,給予SDMA一個仲裁ID以提供U總線上的優(yōu)先級。
(5)初始化SCC2的參數(shù)RAM(這步對所有的協(xié)議都是通用的):
?、僭O(shè)置Rx/TxBD 表的基址相對于雙端口RAM的偏移量;
?、谠O(shè)置收發(fā)緩沖區(qū)描述符表基址相對于IMMR寄存器中值的偏移量;
?、墼O(shè)置Rx/Tx 的函數(shù)代碼;
④在MRBLR中設(shè)置接收緩存的最大空間。
(6)針對SCC2的HDLC模式進行初始化;
①通過C_MASK和C_PRES 設(shè)置CCITT-CRC;
?、趯PM維護的五個計數(shù)器DISFC、CRCEC、 ABTSC、 NMARC和RETRC清零;
?、墼贛FLR中定義最大幀長度,通常定義為0x0100,表示最大幀長度為256字節(jié);
?、茉赗FTHR中定義接收到多少個HDLC幀時產(chǎn)生一個中斷申請,當將RFTHR置位0x0001時,表示每接收到一個幀產(chǎn)生一個中斷申請;
?、菰O(shè)置接收地址,hmask用來定義地址掩碼,當hmsk=0x0000時,表示接收所有幀。
評論