?
PPC8270是一款通用的通信協議處理器芯片,片上集成了高性能的PPC精簡指令系統微處理器、非常靈活的系統集成單元以及多種通信協議控制器以支持不同的應用,特別是在通信及網絡系統的應用環境中有著十分廣泛的應用。基于PPC8270的BSP開發為上層系統軟件操作底層硬件環境提供了豐富而有效的軟件接口,進而為應用軟件的開發提供有力的支持。
1 PPC8270處理器介紹
1.1 PPC8270內部寄存器基本結構
PPC8270采用G2_LE內核,該內核設計繼承了G2內核與PPC603e內核的設計,其寄存器可根據訪問權限分為用戶模式(USER MODEL)與超級模式(SUPERVISOR MODEL)。
1.2 PPC8270內部存儲器空間
在超級模式下,PPC8270所有內部寄存器均可被訪問,而在用戶模式下,只有部分寄存器可被訪問,其內部寄存器訪問定義如圖1所示。

?
PPC8270擁有256 KB內部存儲空間,該內部存儲空間被影射在一塊4 GB范圍內連續的內存空間上,可根據IMMR(Internal Memory Map Register)寄存器設置該內部存儲空間起始地址,本開發實例設置IMMR值為0xF0000000;PPC8270內部存儲空間映射如圖2所示。

?
PPC8270內部寄存器均通過IMMR值與寄存器偏移量進行尋址,從而完成BSP開發中對內部寄存器的讀/寫訪問。
2 BSP軟件的定義與職責
2.1 BSP軟件的定義
所謂BSP軟件通常是指針對具體的硬件平臺、用戶編寫的驅動代碼和部分設備驅動的集合。它所實現的功能包括初始化、驅動部分設備。BSP軟件是介于底層硬件設備環境和上層操作系統之間的一個軟件接口,它的主要功能是系統加電后初始化目標機硬件、初始化操作系統及提供部分硬件的驅動程序。BSP軟件屬于嵌入式軟件的一部分,其在目標機應用系統中的層次如圖3所示。
BSP軟件是根據具體的硬件環境進行設計和開發的,因此只能運行在指定設備的硬件環境中。
2.2 BSP軟件的職責
根據上節關于BSP軟件的定義,BSP軟件的職責主要包括以下兩點:
(1)目標機硬件環境的初始化。
(2)硬件驅動程序的集成。訪問硬件設備驅動程序,BSP必須包含設備驅動程序的相關支持、設備的配置管理等。
3 PPC8270的BSP開發過程
3.1 目標機硬件環境的初始化
所謂目標機硬件環境的初始化是指從目標機系統上電復位開始到操作系統開始初始化用戶應用時的一段時間內系統所執行的過程,該過程主要包括兩部分工作:CPU初始化和目標機初始化。
3.1.1 CPU初始化
CPU初始化的目的是通過對CPU內部各種控制與狀態寄存器的設置來使得CPU具有確定的工作方式和穩定的狀態,在該開發實例中,主要完成以下幾種工作:
(1)設置CPU啟動方式為冷啟動;
(2)通過IMMR設置PPC8270芯片內部存儲空間為0xF0000000;
(3)通過清除MSR(Machine state register)使PPC8270芯片達到初始工作狀態;
(4)根據應用需求對目標系統進行空間配置,并進行IBAT,DBAT以及TLB的初始化;
(5)初始化指令Cache和數據Cache;
(6)初始化棧地址為0x20000。
3.1.2 目標機初始化
初始化控制芯片的寄存器、I/O設備寄存器,為整個軟件系統提供底層硬件環境的支持。在該開發實例中,目標機的初始化主要完成:
(1)將目標機啟動地址設置為0xFFF00100;
(2)PCI總線的初始化,包括PCI總線配置地址和數據地址的指定;
(4)將FLASH基地址配置為0xFF800000;
(5)通過清除MSR(Machine State Register)使PPC8270芯片達到初始工作狀態。
3.2 硬件驅動程序的開發
PPC8270的BSP開發涉及的基本硬件資源包括串口控制器、中斷控制器、定時器、網絡控制器,在該開發實例中,上述基本硬件資源均采用PPC8270處理器內部集成的控制芯片。
3.2.1 串口控制器驅動開發
串口通信是目標機與宿主機聯系的橋梁,在BSP的硬件驅動開發中,通常首先進行的是串口控制器的開發,從而為后續的開發工作提供更多的調試途徑。在該開發實例中采用PPC8270內部集成的SCC(Serial Communications Controllers)作為串口控制器,根據上層操作系統的需求,串口控制器驅動應具有的基本功能包括:串口初始化和串口的讀/寫。
串口控制器的驅動開發首先應完成串口初始化的工作,使串口芯片達到一個確定的工作狀態,主要包括以下幾個方面的內容:
(1)輸入/輸出端口的初始化。PPC8270內部包含4路通用的輸入/輸出端口。每路輸入/輸出端口包含4組獨立的可讀/寫的配置寄存器:PODRA(Port OpenDrain Registers)-PODRD,PDIRA(Port Data Direction Registers)-PDIRD,PSORA(Port Special Options Registe-rs)-PSORD和PDATA(Port Data Registers)-PDATD。根據本實例硬件設計,采用第四路輸入/輸出端口,因此應對其各配置寄存器進行設置,并將其與采用的串口通道進行連接。
(2)串口波特率的初始化。對于SCC的波特率初始化可通過PPC8270內部BRGs(Baud-Rate Generators)來實現,并通過CMXSCR(CMX SCC Clock Route Register)的設置將BRG的設置與具體的串口通道進行連接。在該實例中,設置串口波特率為115 200 Kb。
(3)緩沖區描述符的初始化。SCC接收數據和發送數據的緩沖區是通過緩沖區描述符來指定的,包括接收緩沖區描述符和發送緩沖區描述符。SCC緩沖區描述符的結構如圖4所示。

?
SCC串口發送和接收數據均通過緩沖區描述符來查詢數據狀態與地址,因此,緩沖區描述符的初始化應完成緩沖區描述符起始地址的指定、緩沖區長度的初始化以及串口發送接收的工作方式設置。
(4)參數RAM的初始化。SCC中每一路串口通道均可以進行獨立的參數RAM初始化,主要完成本串口通道基地址、串口中斷處理方式以及串口數據的傳送方式的設置。
(5)UART工作方式設置。
(6)串口中斷向量的掛接。
在完成串口初始化的基礎上,可以進一步進行串口讀/寫功能的開發。基于SCC的串口讀/寫控制是通過緩沖區描述符來實現的。當接收緩沖區描述符中指定的緩沖區地址有新的接收數據到達時,接收緩沖區描述符的狀態會發生改變。當發送緩沖區描述符中指定的緩沖區地址有新的發送數據到達時,發送緩沖區描述符的狀態會發生改變。因此,可以通過對緩沖區描述符狀態的監控,來確定何時從接收緩沖區拷貝數據以及何時將發送數據拷貝至發送緩沖區,從而完成串口數據的接收和發送。
3.2.2 中斷控制器驅動開發
中斷機制是目標機感知事件的重要手段,PPC8270具有內部集成的中斷控制器,對各類中斷源的中斷向量號進行了明確的定義,并在一定程度上規定了各類中斷源的中斷優先級。在中斷控制器驅動中,應實現的主要功能包括:中斷控制器的初始化、中斷向量的獲取以及中斷的使能與禁止。
(1)中斷控制器的初始化。PPC8270集成中斷控制器的初始化過程較為簡單,主要的工作是通過SIMR(SIU Interrupt Mask Registers)的設置將所有中斷源對應的中斷信號進行禁止。
(2)中斷向量的獲取。PPC8270集成中斷控制器獲取中斷向量可通過讀取SIVEC(SIU Interrupt Vector Register)寄存器來獲得。
(3)中斷的使能和禁止。在PPC8270集成中斷控制器中,通過對SIMR中相應數據位的置位與復位操作來實現指定中斷源的使能與禁止。
3.2.3 定時器驅動開發
定時器是一種特殊的中斷源,可為系統運行提供時間精度的支持,PPC8270內部具有4路獨立的16位定時器,也可以作為2路32位定時器使用,4路定時器分別擁有獨立的寄存器組:包括TMR(Timer Mode Register),TCR(Timer Counter Register),TRR(Timer Reference Register),TER(Timer Event Register),TGCR(Timer Global Configuration Register),可以根據應用的需要對相應的寄存器進行設置來完成定時器的初始化、定時器的使能與禁止、定時器頻率的設置與獲取等功能。
(1)定時器的初始化。定時器的初始化主要是通過TRR來完成定時器的時鐘頻率設置并將指定的定時器中斷連接到相應的中斷處理程序。
(2)定時器的啟動與停止。定時器的啟動與停止應能夠根據指定的定時器通道完成定時器的啟動與停止,包含兩方面的內容:即指定定時器中斷向量的使能與禁止和通過TGCR對指定定時器進行的啟動與停止。
(3)定時器頻率的設置與獲取。
3.2.4 網卡控制器驅動開發
在進行網卡控制器驅動開發前,目標機系統與宿主機之間的通信是通過串口來實現的,雖然能夠滿足通信的功能,但面對大數據量的通信任務時,其性能卻遠不能滿足應用的需求。網卡控制器驅動的開發是目標機系統通訊能力實現升級的重要環節,為操作系統、應用程序的加載提供了更為高速的通路。
(1)FCC的特征
PPC8270采用內部集成的FCC(Fast Communications Controller)作為網卡控制器,FCC是為了適應高速傳輸協議而升級的SCC,具有如下特征:
①支持HDLC(High-level data link control)/SDLC(Synchronous data link control);
②FCC時鐘既可以通過內部BRG獲得,也可以通過外部時鐘源獲得;
③通過緩沖區描述符進行發送接收數據緩沖區管理;
④192 B FIFO(First In First Out)緩沖區;
⑤全雙工工作模式;
⑥支持數據回繞測試模式。
(2)基于FCC的網卡控制器驅動開發
基于FCC的網卡控制器驅動開發應包含網卡初始化、網口讀/寫功能。其中,網卡初始化是實現網卡正常工作的關鍵,其初始化過程需要在上電復位后對一系列的寄存器及參數進行設置,在本開發實例中的網卡初始化過程所述如下:
①輸入/輸出端口的初始化;
②通過配置GFMR(General FCC Mode Registers)MODE位選擇FCC的工作模式為以太網模式,并禁止發送和接收事件;
③根據系統需求通過FPSMR(FCC Protocol-Spe-cific Mode Registers)配置FCC在以太網模式下的各種工作參數,包括CRC校驗、心跳檢查、全雙工模式等;
④通過配置FDSR指定同步協議中的幀同步過程。由于FCC工作在以太網模式,選用推薦值0xD555;
⑤配置FCC的參數RAM,指定接收與發送緩沖區描述符的地址,并對其進行初始化;
⑥通過FCCE(FCC Event)寄存器清除所有FCC外部中斷事件,并通過FCCM(FCC Mask)使能所有在FCCE中指定的事件;
⑦使能網卡中斷向量,并連接相應的中斷處理程序;
⑧發送INIT TX AND RX PARAMETERS命令,并通過GFMR使能發送與接收事件。
在完成網卡初始化后,可以通過判斷網卡中斷的狀態來區分發送和接收事件,并從相應的緩沖描述符中獲取緩沖區地址,實現數據的發送和接收,此過程與第3.2.1節中SCC的發送與接收過程相似。
4 結語
本文通過對目標機硬件環境初始化過程和硬件驅動開發過程的描述,詳細介紹了基于PPC8270的BSP開發過程。在該開發實例中,該BSP軟件能夠在目標機模塊上穩定運行,并為上層操作系統及應用程序提供有效的運行支持。在今后的工作中,將對該BSP軟件的而可移植性進行進一步的優化,以便其能更好的應用于其他BSP軟件的開發實例中。
評論