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