殷耀文
[摘? ? ? ? ? ?要]? 論述了基于TMS320C6678 DSP通用嵌入式軟件開(kāi)發(fā)平臺(tái)構(gòu)建過(guò)程,從時(shí)鐘、外設(shè)、資源分配三個(gè)維度的構(gòu)建進(jìn)行論述。通用嵌入式軟件平臺(tái)具有高度集成性、通用性、可擴(kuò)展性。平臺(tái)的構(gòu)建成功為使用此款DSP開(kāi)發(fā)的人員提供了極大的便利性。
[關(guān)? ? 鍵? ?詞]? TMS320C6678;通用嵌入式軟件開(kāi)發(fā)平臺(tái);外設(shè);時(shí)鐘;資源
[中圖分類號(hào)]? TP319? ? ? ?? ? ? ?[文獻(xiàn)標(biāo)志碼]? A? ? ? ? ? ? ?[文章編號(hào)]? 2096-0603(2019)12-0158-02
TMS320C6678是德州儀器公司研發(fā)的一款高性能定點(diǎn)計(jì)算和浮點(diǎn)計(jì)算數(shù)字信號(hào)處理器(DSP),基于TI的KeyStone多核體系結(jié)構(gòu),集成了八個(gè)C66X CORIPAC DSP,每個(gè)DSP的主頻為1~1.25 GHz,最高能達(dá)到10 GHz主頻。該DSP功耗低,支持高性能信號(hào)處理應(yīng)用,廣泛應(yīng)用于機(jī)器視覺(jué)領(lǐng)域、通信、雷達(dá)領(lǐng)域、嵌入式分析領(lǐng)域、高端機(jī)床領(lǐng)域、多媒體領(lǐng)域、成像領(lǐng)域和計(jì)算機(jī)處理等領(lǐng)域。
一、概述
由于該DSP高速外設(shè)較多,主要有SRIO、PCIe、HyperLink、Gigabit Ethernet、64-Bit DDR3、EMIF、UART。如此多的外設(shè)加上時(shí)鐘、電源、存儲(chǔ)資源劃分的配置,通常情況下,都是按需選取一兩種外設(shè)進(jìn)行開(kāi)發(fā)使用。筆者結(jié)合多年的嵌入式軟件開(kāi)發(fā)工作經(jīng)驗(yàn),借鑒軟件無(wú)線電的思想,將眾多的外設(shè)、時(shí)鐘配置、RAM存儲(chǔ)資源整合在一個(gè)通用的軟件開(kāi)發(fā)平臺(tái)上。本文將重點(diǎn)論述構(gòu)建此平臺(tái)的過(guò)程。
構(gòu)建此平臺(tái)的核心思想是追求通用性與易用性,能確保使用此款DSP芯片的開(kāi)發(fā)者不用關(guān)心芯片的各種外設(shè)和使用細(xì)節(jié),開(kāi)發(fā)者所要做的只是在這個(gè)平臺(tái)上部署自己的編程邏輯,通過(guò)與各種封裝好的函數(shù)來(lái)操控DSP,平臺(tái)達(dá)到了封裝DSP硬件細(xì)節(jié)的作用,通過(guò)在實(shí)際項(xiàng)目過(guò)程中的實(shí)際應(yīng)用,極大地簡(jiǎn)化了發(fā)者的開(kāi)發(fā)過(guò)程。構(gòu)建平臺(tái)的主要過(guò)程為:①選擇CCS V5開(kāi)發(fā)環(huán)境配置DSP時(shí)鐘->②配置DSP的DDR存儲(chǔ)器->③配置UART->④配置配置SPI->⑤配置SRIO->⑥配置EDMA->⑦配置GPIO->⑧配置NDK(千兆網(wǎng))->⑨配置CFG->配置L1P、L1D、L2->⑩平臺(tái)構(gòu)建完成。通用開(kāi)發(fā)平臺(tái)為CCS V5.3,開(kāi)發(fā)語(yǔ)言為C語(yǔ)言,庫(kù)文件為TI公司的bios_mcsdk_02_00_09_21_setupwin32,下文將按類型分步論述平臺(tái)構(gòu)建的具體過(guò)程。
二、時(shí)鐘
TMS320C6678 DSP常用的時(shí)鐘為1GHz,此外還有1.25GHz和800MHz,本文以配置主頻是1GHz的過(guò)程來(lái)進(jìn)行論述,具體配置過(guò)程如下:①通過(guò)配置pllc_hwSetup存器結(jié)構(gòu)體來(lái)設(shè)置PLLC硬件參數(shù)->②通過(guò)調(diào)用CorePllGetHwSetup()函數(shù)來(lái)配置pll ->③通過(guò)調(diào)用SetPaPllConfig()函數(shù)配置PA_SS PLL->④配置完成,封裝成Config_pll()函數(shù)。
上述過(guò)程描述了時(shí)鐘的配置過(guò)程,主要是通過(guò)一系列配置寄存器和調(diào)用系統(tǒng)函數(shù)完成,最終封裝成配置時(shí)鐘的函數(shù)ConfigPll()函數(shù)供開(kāi)發(fā)者調(diào)用。
三、外設(shè)
TMS320C6678 DSP集成了豐富的外設(shè),該通用軟件開(kāi)發(fā)平臺(tái)將眾多的外設(shè)集成在一起,以供用戶的不同實(shí)際調(diào)用需求,開(kāi)發(fā)過(guò)程中的難點(diǎn),一是各個(gè)軟件外設(shè)驅(qū)動(dòng)的開(kāi)發(fā),二是各外設(shè)在軟件平臺(tái)集成過(guò)程中資源沖突的問(wèn)題,下文將以幾個(gè)代表性的外設(shè)論述具體的外設(shè)集成過(guò)程。
(一)UART
TMS320C6678 DSP擁有一個(gè)UART串口,波特率可設(shè)置為1115200bps、9600bps、4800 bps等多種速率,主要用途為在數(shù)據(jù)量和速率要求較低時(shí)的數(shù)據(jù)通信和控制外圍設(shè)備作用,UART的具體配置過(guò)程如下:①通過(guò)調(diào)用UartInit()函數(shù)初始化UART外設(shè)->②通過(guò)調(diào)用UartSetBaudRate()函數(shù)設(shè)置UART外設(shè)波特率->③通過(guò)封UartReadData()函數(shù)和UartReadData()函數(shù)設(shè)置UART讀寫(xiě)函數(shù)->④配置完成,封裝成Config_Uart()函數(shù)。
上述過(guò)程表述了外設(shè)UART的配置過(guò)程,完成對(duì)應(yīng)的配置后,用戶可根據(jù)實(shí)求通過(guò)集成通用平臺(tái)調(diào)用讀寫(xiě)函數(shù)(UartReadData()和UartWriteData()函數(shù))完成通信和外圍設(shè)備通信和控制功能。
(二)SRIO
SRIO是TMS320C6678 DSP的一個(gè)主要外設(shè),具有高速率通信速度,如果配置成4*5GGbps模式,則最高速率可達(dá)20Gbps通信速率,同時(shí)支持讀寫(xiě)兩種數(shù)據(jù)傳輸模式,是本芯片的主要通信方式,承擔(dān)骨干通信的任務(wù),具體配置過(guò)程如下所示:①配置CPPI和QMSS設(shè)備->②配置SRIO寄存器(通信模式、大小端、速率)->③建立SRIO通信鏈路鏈接->④注冊(cè)SRIO中斷函數(shù)->⑤設(shè)置SRIO讀寫(xiě)函數(shù)->⑥配置完成,最終封裝成Config_srio()初始化函數(shù)、Srio_Send()數(shù)據(jù)發(fā)送函數(shù)、Srio_Read()數(shù)據(jù)接收函數(shù)、Srio_Doorbell()門鈴發(fā)送函數(shù)、SrioDioIsr()中斷響應(yīng)函數(shù)。
通過(guò)上述的配置過(guò)程,開(kāi)發(fā)者根據(jù)實(shí)際需要,調(diào)用集成平臺(tái)的Config_srio()初始化函數(shù)、Srio_Send()數(shù)據(jù)發(fā)送函數(shù)、Srio_Read()數(shù)據(jù)接收函數(shù)、Srio_Doorbell()門鈴發(fā)送函數(shù)、SrioDioIsr()中斷響應(yīng)函數(shù)實(shí)現(xiàn)TMS320C6678外設(shè)SRIO的使用。
四、資源
TMS320C6678 DSP有內(nèi)部存儲(chǔ)空間(L2SRAM),每個(gè)核的地址范圍為(0x00800000-0x00078000),每個(gè)核的容量為512K,八個(gè)核共計(jì)4MB,屬于高速讀寫(xiě)存儲(chǔ)介質(zhì)。
外部存儲(chǔ)空間(DDR3),最大容量支持2G,起始地址為(0x80000000),屬于低速大容量讀寫(xiě)存儲(chǔ)介質(zhì)。共享存儲(chǔ)空間(MSMCSRAM),地址范圍為(0x0c000000-0x00400000),容量共計(jì)4MB,屬于較高速讀寫(xiě)存儲(chǔ)介質(zhì)。
根據(jù)每種存儲(chǔ)資源的屬性和特性,存儲(chǔ)資源的配置規(guī)則如下:
1.將用戶要求實(shí)時(shí)性處理最高的數(shù)據(jù)、程序段、系統(tǒng)開(kāi)銷,高速外設(shè)配置應(yīng)該配置內(nèi)部存儲(chǔ)空間(L2SRAM);
2.將用戶要求實(shí)時(shí)性處理較高的數(shù)據(jù)、程序段應(yīng)該配置在共享存儲(chǔ)空間(MSMCSRAM);
3.將用戶要求實(shí)時(shí)性處理較低的數(shù)據(jù)、代碼段、大容量數(shù)據(jù)、低速外設(shè)配置在片外空間(DDR3);
4.L1P和L1D由系統(tǒng)自動(dòng)分配,按不同存儲(chǔ)區(qū)域?qū)SP各存儲(chǔ)元素進(jìn)行了歸類配置,經(jīng)過(guò)實(shí)際驗(yàn)證,DSP在此配置模式下,通用軟件集成平臺(tái)能較穩(wěn)定快速的運(yùn)行。
五、結(jié)束語(yǔ)
TMS320C6678是當(dāng)下一款非常主流多核DSP,此軟件集成開(kāi)發(fā)平臺(tái)將開(kāi)發(fā)者從繁重的底層設(shè)計(jì)中“解脫”出來(lái),可以專注于自己算法功能的具體實(shí)現(xiàn)。該通用軟件開(kāi)發(fā)平臺(tái)集通用性、便利性、集成性于一體,在實(shí)際的科研開(kāi)發(fā)實(shí)踐中,已應(yīng)用于多個(gè)科研開(kāi)發(fā)機(jī)構(gòu),并形成一定的標(biāo)準(zhǔn)化思想,下一步準(zhǔn)備從優(yōu)化平臺(tái)框架入手,開(kāi)發(fā)出更具輕便性的通用嵌入式軟件開(kāi)發(fā)平臺(tái)。
參考文獻(xiàn):
[1]牛金海.TMS320C66x KeyStone 架構(gòu)多核 DSP 入門與實(shí)例精解[M].上海:上海交通大學(xué)出版社,2014.
[2]鄧豹.TMS320C6678多核DSP的加載配置和實(shí)現(xiàn)方法[J].航空計(jì)算技術(shù),2017(1).
[3]董淵文,張永軍,高曉亮,等.基于TMS320C6678多核DSP的分布式通信系統(tǒng)[J].微機(jī)與應(yīng)用,2014.
[4]陳令剛,彭惠,孫謙,等.基于TMS320C6678 的雙以太網(wǎng)UDP通訊系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].工業(yè)控制計(jì)算機(jī),2018(5).
編輯 李 靜