基于DSP/ARM的網絡硬盤錄像機的設計方案
在本設計中,硬盤控制器芯片使用Silicon Image公司的SiI3512雙口SATA 控制器來實現SATA 功能。
SiI3512 直接掛載在S3C2510 的PCI 總線上為系統提供SATA 接口。連接方式如圖2 所示:
圖2 SiI3512 與S3C2510 的連接方式。
2.4 電源模塊
2.4.1 供電電路
整個電路板采用+5 V 電壓供電,可以從外部引入,也可以從擴展的PCI 接口引入。DM642 芯片需要2 個獨立的電壓,CPU 內核電壓GVDD(+1.4 V)和外圍I/O 電壓DVDD(+3.3 V)。這兩個電壓在供電時需要嚴格按照順序進行,即GVDD 要比DVDD 上電早,至少不能晚于DVDD.設計中采用2 片TI 公司專為高性能DSP、FPGA、ASIC 和微處理器的應用而設計的電源芯片TPS54310,分別給DM642 提供CVDD 和DVDD 電壓。在電路連接上將TPS54310(1)的PWRGD引腳和TPS54310(2)的SS/EN引腳相連。
當(1)的輸出電壓高于1.2 V 時,芯片(2)開始工作;當這個值達到穩(wěn)定的+1.4 V 后,PWRGD 引腳輸出高電平送到芯片(2)的SS/EN 引腳。這就保證了CPU 內核的上電時間早于I/O 的上電時間,如圖3 所示:
圖3 電源電路。
2.4.2 電源監(jiān)測電路
為了保證DM642 芯片在電源未達到要求的電平時,不會產生不受控制的狀態(tài),而且允許系統中的各個芯片在任意時刻可以通過復位來調整工作狀態(tài),這就需要在系統中加入一個電源監(jiān)測電路,.該電路能確保在系統的加電過程中,CVDD 和DVDD 達到要求的電平之前,DSP 始終處于復位狀態(tài)。選用了TI 公司生產的TPS3823-33 芯片,其固定復位信號時間長達200 ms,能滿足系統中所有芯片的復位需求。芯片帶有一個看門狗電路,通過WDI 引腳接收來自CPU 的定時信號,避免發(fā)生系統程序跑飛的情況。
3 系統的軟件設計
3.1 系統的軟件設計
該系統的軟件主要包括三個部分:啟動程序,內核與根文件系統,專業(yè)芯片驅動及應用。為了開發(fā)和升級的方便,我們將根文件系統作成RAMDISK 的格式。據此我們將FlashROM 分為3 個區(qū):1 Cramfs,2 Boot-Loader,3 Kernel+RAMDISK.本系統的啟動程序用的是DENX 的U-boot-1.1.0.它的主要工作是初始化硬件,為加載操作系統準備必要的環(huán)境及其參數,同時可以與開發(fā)主機通訊,下載程序到SDRAM 和Flash.通過修改它的一些配置文件,可以完成對目標系統Memory Controller,memory map以及I/O,PCI,Flash,Ethernet controller,Serial等硬件設施的初始化。
對于芯片驅動程序的編寫,一些通用設備驅動,如以太網卡驅動已經在內核中,對于系統的一些專業(yè)芯片的驅動由于其特殊性,將其和應用做成Cramfs文件系統格式,在目標板的的操作系統啟動時以module 的形式進行加載,方便修改和升級。編寫驅動程序可以按照Linux 下編寫驅動程序的規(guī)則來編寫。編寫的驅動程序應該具有以下功能:a)對設備的初始化和釋放:b)數據從內核傳到硬件和從硬件讀取數據:c)讀取應用程序傳遞給設備文件的數據和回應應用程序請求的數據:d)檢測和處理設備出現的錯誤。
設備驅動程序的實質就是中斷處理。Linux 中斷處理程序分為上半部和下半部。上半部即一般的中斷服務程序, 由硬件中斷觸發(fā),一般運行在關中斷的方式下,應當盡可能的短小,處理盡可能的快:下半部運行在開中斷和任務串行化的環(huán)境下,處理需要較長時間的任務。驅動程序上半部在處理完實時性很強的任務后,用Queue-task 函數將下半部處理函數掛入立即隊列,用mark-bh 函數來激活立即隊列,下半部就可以最優(yōu)先的被執(zhí)行。
3.2 應用程序的設計
應用程序的設計可以采用多線程或者多進程的方式。多線程的優(yōu)點在于線程比進程要小,可以使應用更輕量,線程間通訊方便,缺點就在于由于線程使用同一個地址空間,如果一個線程出了問題,將可能影響到整個系統;多進程各自占有一份內存空間,因此可以增強系統的健壯性,但是多進程增加了系統的開銷,同時進程間通訊較復雜。結合我們系統的實際,考慮到各個線程通訊的重要性,我們采取多進程多線程的方式,在軟件上增加一個與主進程并行的守護進程,在硬件上設置看門狗,以增強系統的健壯性。
4 遠程控制與通信鏈路的建立
本設計采用PPP 串行通信接口協議方式。PPP(PointtoPointProtocal,點對點協議)協議中包含3 個部分:
在串行鏈路上封裝IP 數據報的方法;建立、配置及測試數據鏈路的鏈路控制協議(LCP);不同網絡層協議的網絡控制協議(NCP)。PPP 具有很多優(yōu)勢;支持循環(huán)冗余檢測、支持通信雙方進行IP 地址動態(tài)協商、對TCP 和IP 報文進行壓縮、認證協議支持(CHAP 和PAP)等。
PPP 的實現可以通過2 個后臺任務來完成,協議控制任務和寫任務。協議控制任務控制各種PPP的控制協議,包括LCP、NCP、CHAP 和PAP.它用來處理連接的建立、連接方式的協商、連接用戶的認證以及連接中止。寫任務用來控制PPP 設備的數據發(fā)送。數據報的發(fā)送過程,就是通過寫任務往串行接口設備寫數據的過程,當有數據報準備就緒,PPP 驅動通過信號燈激活寫任務,使之完成對串行接口設備的數據發(fā)送過程。PPP 接收端程序通過在串行通信設備驅動中加入hook程序來實現。在串行通信設備接收到1 個數據之后,串行設備的中斷服務程序(ISR)調用PPP 的ISR.當1 個正確的PPP數據幀接收之后,PPP 的ISR 通過調度程序調用PPP輸入程序,然后PPP 輸入程序從串行設備的數據緩存中將整個PPP 數據幀讀出,根據PPP 的數據幀規(guī)則進行處理,也就是分別放入IP 輸入隊列或者協議控制任務的輸入隊列。
5 總結
我們采用ARM 和DSP 芯片的雙核結構組建了一種網絡視頻服務器。以DM642 和S3C2510 分別作為視頻板和主機板的核心芯片,H.264 作為視頻壓縮方案,操作系統選用了uclinux.本系統充分利用了ARM 和DSP 的各自特點,充分發(fā)揮ARM 的事件處理控制能力和DSP 對數字視頻大吞吐量要求,同時通過優(yōu)選主要芯片,努力提高整機性價比。本系統可同時輸入16 路視頻信號,在保障視頻質量的前提下,適于當前不同帶寬的網絡要求。
評論