馬云 游夏


摘要 以IMS32UC6678為代表的鬲性能DSP芯片,不僅具有快速的數據處理能力,而且提供了豐富的片上接口資源。DSP應用的開發也從單跑應用程序過渡到操作系統時代,多核操作系統的引導過程要比單個應用的引導更加復雜、更具有挑戰性,是DSP的關鍵技術之一。本文針對國產DSP操作系統提出了一種引導方法,并在星載、車載和艦載等DSP設備中得到了成功的驗證。
【關鍵詞】TMS320C6678 引導程序 DSP 操作系統
1 引言
TMS320C6678是德州儀器(TI)公司全新架構的TMS320C66x數字信號處理器。該芯片基于KeyStone多內核sOc架構實現,內部集成了最多8個C66x核,單核的最高工作頻率1.25 GHz,單核即可實現40 GMAC的定點處理或20 GFLOP的浮點處理能力。在雷達信號處理、水聲設備、電子對抗、圖形圖像處理、無線和移動通信等領域取得了廣泛的應用。
在DSP的實際應用中,系統的啟動過程要脫離仿真器件,實現自動加載。特別是對DSP操作系統來說,引導過程不僅要完成對鏡像文件的讀取、解析、復制到內存,還要考慮到操作系統的內存劃分和映射機制、芯片內不同核之間的同步等因素,因此非常有必要研究DSP操作系統的引導方法。
2 DSP啟動方式
通常TMS320C6678是通過RBL (ROMBoot Loader)啟動的,RBL是固化在DSP芯片內一段程序,永久地存儲在DSP的ROM中,起始地址是Ox02BOOOOO,大小共計128Kbytes,用戶不能對其修改。在芯片上電復位后,RBL負責將操作系統鏡像或用戶應用程序鏡像從外部主機或內部的非易失性存儲器( EEPROM、FLASH)傳送到內部的高速內存(Cache、MSM或DDR)中,并跳轉到入口地址運行程序。
為了適應不同應用的需要,TMS320C6678提供了多種啟動方式,可以通過網卡、PCIe、SRIO、HyperLink接口從主機下載鏡像,也可以通過EMIF、SPI、120接口從外部存儲器下載鏡像,完成啟動過程。這里的主機可以是通用的PC機,也可以是具有上述接口(網卡、PCIe、SRIO等)的嵌入式系統,特別是多節點DSP應用中,使用一個DSP節點作為主機啟動其它DSP節點是一種非常高效的引導方式。
TMS320C6678芯片有13個外部引腳BOOTMODE[12:0]用于引導方式的設置。上電后,內核O執行RBL代碼,并采樣這13個引腳的狀態,決定采用哪種引導方式。管腳配置共分三類,分別是BOOTMODE[2:0]用于選擇引導外設接口,BOOTMODE[9:3]用于設置外設接口的初始化參數。BOOTMODE[12:10]用于PLL的初始化配置。
3 傳統啟動方式的缺陷
雖然可以通過RBL直接加載應用,但是在實際應用過程中存在眾多的限制性因素使其無法滿足要求,主要體現在:
3.1 文件格式的限制
RBL是固化在DSP內部的一段程序,非常精簡,但是無法直接對ELF格式的文件進行解析。為了實現鏡像的加載,必須通過TI提供的一系列的工具將ELF文件轉換成特定的格式,而且不同接口轉換后的格式也不盡相同,例如通過網絡、SPI、I2C、EMIF等加載必須通過不同的方法完成轉換,通用性極差。
在啟動過程中還需配置引導表( BootTable)、啟動參數表(Boot Parameter Table)和啟動配置表(Boot Config Table)等眾多參數,對不熟悉硬件的DSP開發人員來說難以使用。
3.2 硬件配置的限制
對于實際應用中的DSP板卡來說,外設接口(如SRIO、網卡、PCIe等)通常是通過交換芯片與外部連接,交換芯片在使用前是需要配置的。在RBL中不提供對交換芯片的配置功能,也就意味著帶有交換芯片的板卡根本無法通過這些外設接口加載。
帶有操作系統的鏡像,特別支持網絡、動態加卸載、符號表和文件系統等功能的鏡像文件通常較大,鏡像代碼段和操作系統的運行空間需要使用DDR存儲器,特別是當啟動多核時,Cache和共享內存不具備加載和運行功能復雜的操作系統的條件。而DSP芯片啟動過程中不會初始化DDR,也就意味著無法完成鏡像的加載。
3.3 操作系統的限制
操作系統不同于簡單的應用,操作系統中存在虛擬地址和多核間的同步問題,傳統的加載方式無法識別操作系統內部的虛擬地址和物理地址,在解析和鏡像搬移的過程中會將數據搬移到虛擬地址,這樣操作系統根本無法運行,RBL啟動僅限于單核,也不考慮多核間的同步問題。
4 國產DSP操作系統
本文的引導是針對于帶有操作系統的鏡像,操作系統選用國產的銳華DSP實時操作系統,該操作系統提供了面向主流DSP芯片的高性能國產基礎軟件解決方案,其內核完全自主設計,并針對TI公司TMS320C6678芯片進行了系統優化。
銳華DSP實時操作系統使用AMP多核并行處理架構,操作系統部署在每個DSP核上,每個核都有自己的存儲空間和任務隊列、上下文操作空間、堆棧等,核間提供了多核屏障、自旋鎖等多核同步和資源保護機制。銳華DSP實時操作系統具有強實時、高可靠特征,基于微內核及組件技術,能根據實際應用需要對操作系統內核進行配置、裁剪、擴展與定制。同時支持模塊的動態加卸載,易于系統重構及應用升級,解決了多核DSP難于使用的問題,改變了原有的DSP處理器編程模式,提高了用戶的軟件開發效率。
銳華DSP實時操作系統的所有核使用同一份映像代碼,每個核根據核號執行不同的代碼分支。操作系統將DDR內存分為2塊大的區域,高端為多核共享區,低端為每個核的私有區。其中,引導、系統代碼、共享數據以及用戶自定義內存均位于共享區,每個核的堆和棧位于私有區。
在私有區中,每個核使用虛擬地址,也就是說每個核的物理地址不同,但邏輯地址是相同的,因此在操作系統引導方案設計過程中必須考慮這一因素。
多核加載功能是在操作系統中實現的,引導程序首先加載核O,對于另外7個核來說,主要是掛載IPC中斷,然后進入等待狀態。當核0啟動后,通過系統參數讀取哪些核需要被引導,然后向需要被引導的核發送IPC中斷,其它核收到中斷后,即跳到入口地址,并完成多核的加載過程。
5 引導流程
針對傳統啟動方式的缺陷和實時操作系統的特點,本文設計了一種新的二次引導的加載程序(RBOOT)。與其它的二次引導不同,RBOOT重點考慮了操作系統參數、內存構架、板卡外設配置等。RBOOT可以作為通用的DSP芯片引導程序,無需為專門的DSP板卡或特殊的硬件設備定制,具有非常好的通用性。
RBOOT可以固化在外部存儲器(EEPROM. NOR Flash. NAND Flash),通過RBL引導。RBOOT支持主機啟動和存儲器啟動,包括但不限于RBL的全部啟動方式。如果有必要RBOOT甚至可以通過串口、GPIO等非常規啟動接口引導操作系統。
在RBOOT加載后進入讀秒過程,并待串口的輸入。如果串口上有輸入,則進入SHELL界面等待用戶的命令,如果無輸入,則使用默認的引導方式加載。DSP操作系統鏡像加載流程如圖1所示。
在SHELL界面用戶可以完成以下功能:
(1)配置操作系統,包括操作系統的物理地址空間、虛擬地址空間,需要引導的核的個數等,引導程序可根據這些參數正確的加載操作系統;
(2)配置硬件,可配置的硬件包括網卡、SRIO、PCIe的參考頻率、發送和傳輸通道的參數、工作模式、波特率、板卡上的交換芯片、PHY芯片、DDR等。在加載過程中,根據這些參數啟動外設,從而將鏡像文件讀入到芯片內部;
(3)配置環境參數,包括主機和目標機的IP地址、子網掩碼、網關信息、SRIO端口號、PCIe端口號、鏡像文件名稱等,如果從存儲器啟動,還可設置操作系統鏡像文件在存儲器上的偏移等;
(4)配置加載方式,目前可支持的加載方式有網卡、SRIO、PCIe、SPI、EMIF等,用戶可根據當前的硬件特點選擇任何一種方式加載;
(5)加載操作系統,讀取用戶配置的信息,根據當前的啟動方式加載操作系統,如果用戶未設置,會使用默認的方式(EMIF接口)加載,因為在系統正式運行后,以EMIF方式加載為主。
在板卡外設啟動后,RBOOT首先會讀取ELF文件的文件頭,從文件頭中解析出程序頭( Program Header)、段頭(Section Header)和操作系統入口地址( Entry point address)的信息。根據這些信息將ELF文件中的數據復制到內存地址并進行校驗。
在復制數據段到內存的過程中,需考慮操作系統的物理地址和虛擬地址的轉換,如果讀到的是虛擬地址空間,需要計算出物理地址,并將數據復制到真實的物理地址中,這是和無操作系統鏡像加載最顯著的區別。
當所有的數據復制完成并成功通過校驗后,跳入到操作系統鏡像的入口地址,并運行操作系統。
6 實驗結果
RBOOT實現了自動加載操作系統鏡像程序,支持多種加載方式。實驗結果表明該引導程序能夠滿足加載方式多樣化的需求,可以從網絡( TFTP)、SRIO、PCIe、SPI、EMIF等加載操作系統鏡像,且加載過程中用戶無需更改鏡像文件的格式。
除了多種功能外,還對加載時間進行了測試,測試使用相同的鏡像文件,大小為1.2Mbytes,程序的代碼段放在DDR上,8核同時加載。實驗結果表明,加載時間優于傳統的JTAG加載以及RBL的網絡等加載方式,具體的實驗數據參見表1。
某些特定領域對多節點DSP的加載時間有特殊要求,如多個節點(64或128個)同時加載,必須在很短的時間內通過網絡將操作系統完全加載成功,并且達到可用狀態。實驗結果表明,RBOOT可以用并行化的方式從TFTP服務器加載程序,完全滿足多節點同時加載的性能指標。
7 結束語
RBOOT作為一款可配置硬件參數和操作系統參數DSP的引導程序,非常適合于國產DSP操作系統的引導。和傳統的引導方式相比,不僅性能上有了顯著提高,而且提供了靈活的啟動方式,對于提高開發效率,縮短產品的研制周期有非常重要的意義。
參考文獻
[1] TMS320C6678 Multicore Fixed andFloating-Point Digital SignalProcessor
(SPRS691E). TI
Inc. http://www.ti.com.2 014.
[2]Key Stone Architecture DSP BootloaderUser Guide (SPRUGY5C). TI Inc.http://www. ti. com. 2013.
[3]牛金海.TMS320C66x KeyStone架構多核DSP入門與實例精解[M],上海交通大學出版社,2014.