Sanjay Bhal 戰(zhàn)略市場(chǎng)營(yíng)銷經(jīng)理,,多核與媒體基礎(chǔ)架構(gòu)業(yè)務(wù)部
Raj Sivarajan 軟件工程設(shè)計(jì)經(jīng)理,多核與媒體基礎(chǔ)架構(gòu)業(yè)務(wù)部
Raghu Nambiath 軟件設(shè)計(jì)工程師,,多核與媒體基礎(chǔ)架構(gòu)業(yè)務(wù)部
介紹
多核數(shù)字信號(hào)處理器(DSP) 現(xiàn)已開始在不同的細(xì)分市場(chǎng)逐漸推廣,,包括測(cè)量測(cè)試,、關(guān)鍵任務(wù),、工業(yè)自動(dòng)化,、醫(yī)療與高端影像設(shè)備,,以及高性能計(jì)算等,。隨著這些應(yīng)用的處理需求不斷增長(zhǎng),,德州儀器(TI) 通過了新一代可擴(kuò)展高性能TMS320C66x 多核DSP。C66x 器件建立在TI KeyStone 架構(gòu)基礎(chǔ)之上,,可為多核器件中的每個(gè)內(nèi)核提供全面的處理功能,,是實(shí)現(xiàn)真正多核創(chuàng)新的平臺(tái)。TI C66x 高性能DSP 包括采用單,、雙,、四以及八內(nèi)核配置提供的引腳兼容及可擴(kuò)展器件。
德州儀器(TI) 對(duì)多核DSP 編程模型思路非常全面,,已經(jīng)開發(fā)出一系列能夠在TI 多核DSP 平臺(tái)上實(shí)現(xiàn)快速開發(fā)的可擴(kuò)展工具與軟件,。本文主要介紹TI 多核軟件開發(fā)套件(MCSDK),具體內(nèi)容涵蓋對(duì)各種可用軟件套件以及實(shí)用程序及工具鏈的概述,,可為編程人員開發(fā)Linux 等高級(jí)操作系統(tǒng)以及實(shí)時(shí)操作系統(tǒng)SYS/BIOS 助一臂之力,。
MCSDK 的優(yōu)勢(shì)
TI MCSDK 旨在提供一個(gè)軟件開發(fā)環(huán)境,通過TI 高性能多核DSP 平臺(tái)實(shí)現(xiàn)快速開發(fā),,加速產(chǎn)品上市進(jìn)程,。MCSDK 實(shí)現(xiàn)這一目標(biāo)的方法包括:
·為客戶提供經(jīng)測(cè)試的良好集成型通用軟件層,客戶無(wú)須從頭開發(fā)通用層。例如,,TI MCSDK 為配置和控制各種片上外設(shè)及加速器集成并測(cè)試了各種驅(qū)動(dòng)器,。客戶可使用驅(qū)動(dòng)器接口加強(qiáng)片上輸入輸出(I/O) 機(jī)制以及加速功能,。由于該軟件是專為器件優(yōu)化的,,因此使用MCSDK 的客戶可從理想的性能優(yōu)勢(shì)中獲益;
·集成SYS/BIOS 實(shí)時(shí)操作系統(tǒng)及Linux 高級(jí)操作系統(tǒng)支持,;
·為簡(jiǎn)化編程以及在TI 可擴(kuò)展多核DSP 平臺(tái)上實(shí)現(xiàn)未來(lái)可移植性提供定義完善的應(yīng)用編程接口,。例如,用于內(nèi)部核心通信的API 可在不進(jìn)行任何代碼修改的情況下,,擴(kuò)展支持TI 多核DSP 的雙、四或八內(nèi)核版本,。此外,,相同API 還可用于使用Serial RapidIO® 等行業(yè)標(biāo)準(zhǔn)IO 實(shí)現(xiàn)器件間的通信;
·建立示例文檔,,可幫助編程人員開發(fā)其應(yīng)用,。這些示例將為在多核上運(yùn)行RTOS 和在多核上同時(shí)運(yùn)行RTOS 與HLOS 提供有力幫助。此外,,這些示例還將展示各種應(yīng)用情況,,不但可幫助客戶開發(fā)新應(yīng)用,而且還可提供一個(gè)從單內(nèi)核系統(tǒng)到多核系統(tǒng)或從多核系統(tǒng)到單內(nèi)核系統(tǒng)移植的路徑,;
·與Code Composer StudioTM 等TI 工具以及TI 第三方工具生態(tài)系統(tǒng)集成,。
下圖(圖1)是上述MCSDK 及各種組件的概覽圖。
圖1. TI MCSDK 組件
TI MCSDK 實(shí)際上由兩個(gè)軟件生態(tài)系統(tǒng)構(gòu)成,。第一個(gè)生態(tài)系統(tǒng)基于Linux,,第二個(gè)基于SYS/BIOS。兩個(gè)都包含可幫助客戶便捷啟動(dòng)開發(fā)的所有功能性軟件,。每個(gè)生態(tài)系統(tǒng)都包含用于多核器件編程的各種機(jī)制(比如處理器間通信),,在相同器件的不同內(nèi)核上既可獨(dú)立使用,也可組合使用,。以下章節(jié)將總體介紹每個(gè)MCSDK 組件,。
Linux MCSDK
Linux 多核軟件開發(fā)套件(MCSDK) 為支持運(yùn)行在TI C66x 系列高性能多核DSP 上的Linux 生態(tài)系統(tǒng)奠定了堅(jiān)實(shí)基礎(chǔ)。該套件包含可隨時(shí)投入使用的Linux 內(nèi)核,、驅(qū)動(dòng)器,、樣片應(yīng)用以及經(jīng)驗(yàn)證的工具,可充分滿足客戶的產(chǎn)品開發(fā)需求,。Linux MCSDK 以開源發(fā)行版形式在www.linux-c6x.org上提供,,包含預(yù)構(gòu)建二進(jìn)制程序,可隨時(shí)通過在參考平臺(tái)上運(yùn)行來(lái)演示TI 高性能多核DSP 的功能。
總體而言,,支持C66x 多核DSP 的Linux 是C66x 多核客戶,、獨(dú)立開發(fā)者以及廠商協(xié)作社區(qū)推動(dòng)的結(jié)果,可幫助參與和強(qiáng)化總體開發(fā)生態(tài)系統(tǒng),。目前已有多個(gè)參與方參與內(nèi)核與工具鏈的開發(fā)和上游對(duì)接,。具體包括GCC 工具鏈的CodeSourcery(現(xiàn)在是Mentor EmbeddedTM 的一部分)以及內(nèi)核社區(qū)知名的Linux 開發(fā)商等。
生態(tài)系統(tǒng)組件
對(duì)Linux 生態(tài)系統(tǒng)的支持預(yù)計(jì)將是各種更豐富高性能應(yīng)用的關(guān)鍵使能技術(shù),,可幫助客戶輕松推出基于TI C66x 多核DSP 的平臺(tái),。總的來(lái)說(shuō),,該基礎(chǔ)架構(gòu)可通過增添市場(chǎng)導(dǎo)向型應(yīng)用來(lái)幫助客戶降低開發(fā)成本,,集中精力提升價(jià)值定位。
Linux MCSDK 采用uClinux 類內(nèi)核,,因其較小的占位面積非常適合多核DSP 的開發(fā),。另外,Linux MCSDK 還包含支持訪問DSP 內(nèi)部所有外設(shè)的器件驅(qū)動(dòng)器,,這些外設(shè)將隨實(shí)際DSP 的不同而不同,。圖2 是支持KeyStone 器件的外設(shè)與驅(qū)動(dòng)器。
圖2. Linux MCSDK 的軟件生態(tài)系統(tǒng)組件
進(jìn)程間通信
多核架構(gòu)的主要編程要求之一就是能夠在各種內(nèi)核之間進(jìn)行高效通信,。TI Linux MCSDK 支持在運(yùn)行SYS/BIOS 的核心之間,,以及其它Linux 內(nèi)核之間的通信,從而可為滿足各種潛在產(chǎn)品需求提供高度的靈活性,。
內(nèi)核間的IPC
TI Linux MCSDK 通過SYS/Link 模塊提供進(jìn)程間通信(IPC) 驅(qū)動(dòng)器,,以在運(yùn)行Linux 高級(jí)操作系統(tǒng)(HLOS) 的兩個(gè)內(nèi)核以及運(yùn)行SYS/BIOS 實(shí)時(shí)操作系統(tǒng)(RTOS) 的多個(gè)內(nèi)核之間實(shí)現(xiàn)通信。在預(yù)期的使用情況下,,應(yīng)在信號(hào)處理應(yīng)用在BIOS 內(nèi)核上執(zhí)行的同時(shí)控制運(yùn)行在Linux 內(nèi)核上的代碼,。該軟件架構(gòu)將幫助運(yùn)行Linux 的主機(jī)內(nèi)核把信號(hào)處理分配給多個(gè)內(nèi)核的同時(shí),順暢地繼續(xù)執(zhí)行其它任務(wù),。SYS/Link IPC 模塊可為在多個(gè)內(nèi)核中發(fā)送和接收不同字長(zhǎng)消息提供MessageQ 支持,。
如圖3 所示,Linux MCSDK 還能使用一種支持IO 虛擬的標(biāo)準(zhǔn)化Linux 框架virtIO 在單一DSP 內(nèi)實(shí)現(xiàn)在多個(gè)內(nèi)核中運(yùn)行的多個(gè)Linux 實(shí)例,。
圖3. 多個(gè)Linux 實(shí)例情況下的IPC 使用
軟件開發(fā)工具
Linux MCSDK 可為用戶提供各種編譯器工具及調(diào)試選項(xiàng),。在編譯器方面,開源社區(qū)普遍使用的GCC 與二進(jìn)制工具可通過Mentor Embedded 提供給C66x 多核DSP,。在信號(hào)處理代碼等應(yīng)用實(shí)例中,,開發(fā)人員能夠使用TI 提供的編譯器獲得更高性能。另外,,GCC 和TI 編譯器還具有互操作性,,因此開發(fā)人員可選擇使用TI 編譯器或GCC 滿足不同部分的應(yīng)用代碼需求,,而系統(tǒng)的其余部分則仍然使用GCC 構(gòu)建。這樣用戶就可高度靈活地進(jìn)行與代碼性能有關(guān)的利弊權(quán)衡,。
在調(diào)試方面,,用戶模式下的應(yīng)用可使用Mentor Embedded 提供的GDB。對(duì)內(nèi)核調(diào)試或者無(wú)操作系統(tǒng)的程序運(yùn)行,,使用Mentor Embedded 提供的Debug Sprite 和TI 基于CCS 的調(diào)試器,,就可實(shí)現(xiàn)基于JTAG 的調(diào)試。
TI C66x EVM 上的創(chuàng)造性演示體驗(yàn)
Linux MCSDK 的最后一個(gè)組件是創(chuàng)造性(OOB) 演示軟件與示例應(yīng)用,。OOB 演示應(yīng)用包含Web 界面,,可為用戶提供通過以太網(wǎng)連接PC 訪問EVM 的控制面板,以便在啟動(dòng)后提供各種功能,。在初期版本中,,控制面板可提供一種簡(jiǎn)便的方法為用戶更新引導(dǎo)加載程序及內(nèi)核。后續(xù)版本將支持可展示和演示多核相關(guān)功能的其它基本功能,,比如運(yùn)行BIOS 和/或Linux 的內(nèi)核間IPC 通信以及下載和引導(dǎo)多核應(yīng)用等,。
BIOS MCSDK
BIOS 多核軟件開發(fā)套件(MCSDK) 以集成方式提供內(nèi)核基本構(gòu)建塊,可為在TI 高性能多核DSP 上使用SYS/BIOS 實(shí)時(shí)操作系統(tǒng)進(jìn)行應(yīng)用軟件開發(fā)提供便利,。BIOS MCSDK 在統(tǒng)一可下載套件中綁定全部主要嵌入式軟件,并在TI 網(wǎng)站上免費(fèi)提供,。BIOS MCSDK 配套提供的軟件均為預(yù)構(gòu)建庫(kù)源代碼,,并按BSD 許可證進(jìn)行分銷。除了基礎(chǔ)軟件元素外,,BIOS MCSDK 還提供使用這些組件的演示應(yīng)用,,可展示客戶使用BIOS MCSDK 創(chuàng)建應(yīng)用的方法。
BIOS MCSDK 采用這種結(jié)構(gòu)進(jìn)行設(shè)計(jì)的驅(qū)動(dòng)因素之一,,是為了簡(jiǎn)化各平臺(tái)間的設(shè)計(jì)流程以及對(duì)客戶在各個(gè)TI 器件之間進(jìn)行移植的考慮,。TI 了解客戶可能有采用通用軟件支持不同器件的多種產(chǎn)品,因此移植策略應(yīng)重點(diǎn)考慮利用客戶在現(xiàn)有以及未來(lái)TI 器件上的軟件投資,。例如,,該流程可從在TI 評(píng)估平臺(tái)上運(yùn)行內(nèi)含TI 演示軟件開始,然后將該演示移植至客戶平臺(tái),,最后在客戶平臺(tái)上導(dǎo)出客戶應(yīng)用,。另外一個(gè)步驟就是將該應(yīng)用移植到新一代TI 架構(gòu)上(圖4)。
圖4. 將應(yīng)用移植到TI 新一代應(yīng)用SoC 平臺(tái)上
BIOS MCSDK 使用TI Code Composer StudioTM(CCS) 作為集成開發(fā)環(huán)境(IDE),。在軟件更新方面,,BIOS MCSDK 使用Eclipse 的更新特性通過CCS 自動(dòng)發(fā)現(xiàn)并安裝新軟件。
軟件概覽
BIOS MCSDK 中的軟件組件(圖5)可分為下列類型:
.器件專用軟件驅(qū)動(dòng)器
.內(nèi)核目標(biāo)軟件
.平臺(tái)專用軟件
.演示與工具
圖5. BIOS MCSDK 的軟件組件
器件專用軟件驅(qū)動(dòng)器:該軟件套件包含芯片支持庫(kù),、低級(jí)驅(qū)動(dòng)器,、平臺(tái)庫(kù)以及傳輸協(xié)議,。該套件中的軟件重在簡(jiǎn)化對(duì)諸如加速器等器件硬件的訪問,并可作為應(yīng)用開發(fā)的最低層API,。
平臺(tái)專用軟件:本軟件提供與TI 參考平臺(tái)配套使用的平臺(tái)專用功能的實(shí)施示例,,其目的是用作客戶平臺(tái)開發(fā)活動(dòng)示例。
平臺(tái)庫(kù)可使用通用API 對(duì)平臺(tái)進(jìn)行抽象,,簡(jiǎn)化各器件間的移植,。它提供軟件實(shí)用程序來(lái)控制硬件部件(比如EEPROM、FLASH,、UART)并完成平臺(tái)/器件初始化,。
平臺(tái)庫(kù)API 由跨不同平臺(tái)的通用工具使用。這些工具包括EEPROM 寫入器,、NAND/NOR 寫入器以及上電自檢等,。因此,要為新器件或新平臺(tái)添加這些工具,,應(yīng)隔離工作,,以便添加專門用于該硬件的平臺(tái)庫(kù)。與其它組件一樣,,該平臺(tái)庫(kù)具有單元測(cè)試應(yīng)用,,可在將模塊移植到新平臺(tái)時(shí)使用。
內(nèi)核目標(biāo)內(nèi)容:該軟件集提供更高級(jí)功能,,包括實(shí)時(shí)嵌入式操作系統(tǒng),、跨內(nèi)核以及跨器件通信的處理器間通信、基本網(wǎng)絡(luò)協(xié)議棧及協(xié)議,、經(jīng)優(yōu)化的專用算法庫(kù)以及儀表工具等,。
一項(xiàng)重要多核使能技術(shù)包含處理器間的通信,其不但可跨越使用共享存儲(chǔ)器的內(nèi)核及器件實(shí)現(xiàn)高效通信(內(nèi)核間通信),,而且還可跨越SRIO 與PCIe 等外設(shè)實(shí)現(xiàn)器件間的通信,。處理器間的通信機(jī)制和API 支持精細(xì)線程多核編程模型。此外,,通用IPC 接口還可簡(jiǎn)化跨內(nèi)核和/或器件的應(yīng)用處理節(jié)點(diǎn)工作,,滿足多核應(yīng)用設(shè)計(jì)與優(yōu)化的需求。
第二項(xiàng)重要使能技術(shù)是儀表工具,,其對(duì)用戶掌控應(yīng)用執(zhí)行狀況具有至關(guān)重要的意義,,可分析并優(yōu)化性能。BIOS MCSDK 包含系統(tǒng)分析器工具,,其可定義一系列API,,而API 則能夠以可移植方法將儀器代碼插入軟件,以便在各種TI 平臺(tái)中重復(fù)使用,。某項(xiàng)應(yīng)用的圖形化輸出示例如下(圖6)
圖6. BIOS MCSDK 的系統(tǒng)分析器工具
演示與工具:該軟件集覆蓋多種器件,,提供構(gòu)建于上述軟件的示例,、演示以及工具。BIOS MCSDK 包含演示應(yīng)用,,旨在作為示例展示如何使用基礎(chǔ)軟件構(gòu)建多核應(yīng)用,。當(dāng)前版本中可供下載的演示包括用于展示BIOS MCSDK 部分重要組件的創(chuàng)造性應(yīng)用,以及用于顯示多核信號(hào)處理的影像處理應(yīng)用,。
各種工具包括通用引導(dǎo)加載程序,、FLASH 及EEPROM 寫入器、評(píng)估板上電自檢,、多核/多影像引導(dǎo)工具,,以及從不同模式(比如NAND/NOR、EMAC,、SRIO)引導(dǎo)的簡(jiǎn)明示例等,。
演示
創(chuàng)造性演示
BIOS MCSDK 的創(chuàng)造性演示是一種以CCS 項(xiàng)目方式提供的高性能DSP 實(shí)用程序應(yīng)用(HUA)。該演示可通過演示代碼及Web 頁(yè)面向用戶演示如何將自己的DSP 應(yīng)用連接至各種不同的BIOS MCSDK 軟件元素,,其中包括SYS/BIOS,、網(wǎng)絡(luò)開發(fā)套件(NDK)、芯片支持庫(kù)(CSL) 以及平臺(tái)庫(kù),。
在執(zhí)行時(shí),,HUA 可使用Web 服務(wù)器讓用戶使用PC 通過以太網(wǎng)連接至平臺(tái)。用戶使用HUA 可執(zhí)行各種功能,,比如讀/寫閃存,、診斷或者提供統(tǒng)計(jì)及信息。該演示可通過演示代碼及Web 頁(yè)面向用戶演示如何將自己的DSP 應(yīng)用連接至各種不同的BIOS MCSDK 軟件元素,,其中包括SYS/BIOS、網(wǎng)絡(luò)開發(fā)套件(NDK),、芯片支持庫(kù)(CSL) 以及平臺(tái)庫(kù)(圖7),。
圖7. 高性能DSP 實(shí)用程序應(yīng)用(HUA)
影像處理演示(圖8)則展示了如何在BIOS MCSDK 多核信號(hào)處理過程中集成主要組件。其采用了處理器間通信功能,、經(jīng)優(yōu)化的影像庫(kù),、網(wǎng)絡(luò)開發(fā)套件以及系統(tǒng)分析器。后者用于采集和分析基準(zhǔn)信息,。
圖8. BIOS MCSDK 的影像處理應(yīng)用軟件框架
本演示經(jīng)配置可運(yùn)行于器件所支持的任意數(shù)量的內(nèi)核上,。可將本演示劃分為第一個(gè)內(nèi)核上的單個(gè)主系統(tǒng)任務(wù)和分配給所有內(nèi)核的多個(gè)從系統(tǒng)任務(wù),。主系統(tǒng)任務(wù)負(fù)責(zé)對(duì)輸入數(shù)據(jù)進(jìn)行分組,,并將工作分配給從系統(tǒng)任務(wù),然后自從系統(tǒng)任務(wù)采集結(jié)果,,并發(fā)送輸出數(shù)據(jù),。當(dāng)前支持的算法有邊緣檢測(cè),,但經(jīng)擴(kuò)展后可支持更多種算法。
總結(jié)
TI MCSDK 可為客戶提供一種適用于Linux 和SYS/BIOS 的高穩(wěn)健集成型軟件開發(fā)環(huán)境,,其目標(biāo)是使用基于KeyStone 架構(gòu)的高性能DSP 實(shí)現(xiàn)快速開發(fā),,進(jìn)而加速上市進(jìn)程。
如欲了解有關(guān)MCSDK 的更多詳情,,敬請(qǐng)?jiān)L問www.ti.com/mcsdk,;也可訪問www.ti.com/c66multicore,查看有關(guān)KeyStone 架構(gòu)以及C66x 系列高性能多核DSP 的詳細(xì)介紹,。