《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > AET原創 > TMS320C6678開發十大關鍵技巧問答

TMS320C6678開發十大關鍵技巧問答

2016-12-10
作者:朱長江
來源:電子技術應用
關鍵詞: TMS320C6678 DSP

TMS320C6678 是基于TI最新 DSP 系列器件 TMS320C66x 之上,采用 8 個 1.25GHz DSP 內核構建而成,并在單個器件上完美集成了 320 GMAC 與 160 GFLOP 定點及浮點性能,從而使用戶不僅能整合多個 DSP 以縮小板級空間并降低成本,同時還能減少整體的功耗要求,充分滿足移動網絡領域對通道密度及高質量媒體服務日益增長的需求。自2011年德州儀器推出多核DSP TMS320C6678后,以該芯片為核心的DSP開放板層出不窮,學習這款芯片的人日益增多。下面小編把工程師朋友在開發這款芯片的過程中遇到的問題和解決方法以問答的形式進行了整理,希望對初學者能有所幫助!

圖片1.png

一.TMS320C6678 網絡問題

1問:用自己開發的板子,采用的雙網口設計,網口0和網口1。用TI官方給的例子只能網口1通信,在例子上修改了sgmii初始化了sgmii0和sgmii1但是還是只能網口1通信。

答:要修改網絡接口管理單元的庫,nimu。在EMACInit_Core函數中有設置發送接口配置的信息。這個函數是隱形的被NDK調用。所以剛開始比較難找到相應的位置。

2問:c6678的兩個網口是如何同時使用的, 能不能多個cpu core 同時使用同一個網口, 請賜教。

答:C6678的EMAC是cppi器件,即通過Navigator進行包的管理,所以收發的數據包都是Queue來管理,可以同時使用;需要注意的是可以配置每個發送的包由指定的port發出,或者向兩個port廣播。

二.TMS320C6678 關于多核編程問題

1問:目前的C++程序的段,都放到了DDR3里,這樣的話,我要是三個核同時運行,豈不是對其中相同的堆棧進行訪問嗎?嗯,對于所有段都放到DDR3的情況,怎樣進行多核編程呢?

答:在6678里面有MPAX MMU的,可以在DDR3上給每個核都開辟一個私有的空間,在物理地址上是連續的,但對每個核讀/寫來說地址都是相同的。不同core的system stack及task stack必須不一樣。

三.TMS320C6678主頻設置問題

1問:datasheet里面講TMS320C6678的主頻為1G,1.25G,1.4G可選,請問,如何設置TMS320C6678的主頻參數呢?是在boot的時候作設置嗎?與cmd文件有沒有關系呢?

答:首先要確定你的芯片是不是支持1.2G和1.4G,不是所有的C6678都支持。其次,主頻你是在MAINPLL里面配置的,根據你的輸入時鐘頻率,配置MAINPLL得到一個主頻。你可以通過boot做配置,也可以通過boot后軟件配置。與cmd文件沒有關聯。

四.tms320c6678 的中斷響應

1問:在中斷響應的過程中,1024個系統事件先是通過ch_map映射到channel ,channel再映射到主機中斷輸出,host interrupt output 是需要映射到INTC的system events然后才能掛接到dsp可以識別的12中斷上,這里host interrupt output是256個,INTC的system events是128個,這里host interrupt output 和system events是有什么映射關系嗎?有的話是如何映射的?

答:chip interrupt controller的輸入稱作host interrupt event,這些事件經過映射可以與任意的chip INTC channel進行映射輸出;chip INTC channel的某些輸出事件是直接與corepac INTC的對應輸入事件一一連接,具體的對應關系參考6678 data manual interrupt表格。chip intc只有特定的輸出才會core intc與的某些輸入一一對應,所以只有將Chip INTC的輸入256個事件與這些特定的輸出映射起來,才可以最終路由到core內部12個中斷矢量表。

參考中斷分享:http://www.deyisupport.com/question_answer/dsp_arm/c6000_multicore/f/53/t/25518.aspx

五.TMS320C6678多核程序的運行

1問:最近剛剛接觸多核DSP,我想問下,在準備運行多核程序時,是需要將程序在每個核里面進行load吧?TI提供的多核運行例程有哪些,具體在MSDK下的哪個位置?另外對于API函數,在對其進行直接調用時,能否在不用SYS/BIOS的情況下,使用中斷實現調用,例如uart通信,直接調用API函數實現查詢式通信,能否添加中斷函數,調用uart的API函數實現中斷式通信?

答:程序用到哪個核就需要load到哪個核里邊,在MCSDK的以下位置有多核運行的例程:demos\image_processing\ipc,不使用SYS/BIOS也可以使用API函數。

六.TMS320C6678系統設計中PCIECLK問題

1問:請問在設計基于TMS320C6678系統板時,如果不用PCIE模塊,是不是可以懸空PCIECLKP和PCIECLKN引腳,還是是分別接高電平和低電平。

答:請參考Keystone硬件設計手冊,PCIE不用時,PCIECLKP端接CVDD,N端接地,不可懸空。

七.TMS320C6678的定點運算與浮點運算

1問:看介紹,TMS320C6678是定點與浮點運算都支持的DSP芯片。現在自己編寫的程序中,所使用的數據除了整型之外都是浮點數。想問一下,在運算浮點數的時候,DSP是否會將浮點數轉為定點數,再進行運算,然后再轉為浮點數?

答:1. 編譯器會根據客戶定義的數據類型來調用相關的匯編指令來進行運算,如果直接定義的是浮點數,那么編譯器就調用浮點數進行運算。

2. 對于浮點和定點的選擇,如果算法是從matlab或vc繼承過來的,那么前期直接用浮點數進行運算可以很容易的將算法在DSP上實現,如果后期算法成熟了,可以進行定點化,提高運行效率。

2問:c6678的兩個網口是如何同時使用的, 能不能多個cpu core 同時使用同一個網口, 請賜教。

答:C6678的EMAC是cppi器件,即通過Navigator進行包的管理,所以收發的數據包都是Queue來管理,可以同時使用;需要注意的是可以配置每個發送的包由指定的port發出,或者向兩個port廣播。

八.TMS320C6678 系統如何獲得CPU

1問:我們目前在使用DSP做一個算法處理服務器,客戶端通過TCP網絡,按照網絡協議將需要處理的數據發送給DSP服務器,DSP接到數據后進行運算,運算結束后將運算結果,再發送給客戶端。

現在的現象是,當客戶端連續發送多個數據請求時,發送到中間某一個時網絡會中斷,當前算法特點是,由于運算最較大,運算時間比較長,暫未進行優化,比如30s,50s,我們現在就是希望能讓程序正常運行,完成我們的算法要求,下一步工作再進行優化,但是現在這個中斷的問題讓我們比較頭疼,請專家指教。

經過多次試驗,最后我將我們的算法注掉,換成了下面代碼,網絡是正常的,不會中斷。

void Test(指定時間間隔)

{

    獲取系統當前時間1

    while(1)

    {

         獲取系統當前時間2

         if(時間2-時間1 >= 指定時間間隔)

             return;

    }

}

我又將我們的算法換成了下面代碼,網絡很快就會中斷。

void Test()

{

     while(...)

    {

         for(...)

        {

             純算法,加減剩除,專門用來耗時。

         }

    }

}

從上面的現象看,我們猜測,是由于算法占用CPU時間過長,系統無法獲得CPU,沒有時間處理網絡相關信息,造成的,各位大俠有什么好辦法,請多多回復。

答:因為你在DSP上沒有跑RTOS操作系統,而你的代碼是一段無限的死循環,因此CPU的Cycle都消耗在你的算法代碼里了(即PC指針一直在里面,沒有出來)。

在跑RTOS操作系統的情況下,任務按照優先級來進行運行,如果網絡屬于更高優先級任務,那么即使算法在持續運行,調度器也會切換到網絡任務,并優先運行,網絡也就不會斷了。

我們Enea是TI的白金合作伙伴,在6678上提供整套的商用平臺軟件解決方案,可以解決您的問題,有后續問題歡迎聯系我 [email protected]

我們可以在C6678上提供全套的平臺軟件,包括操作系統、BSP驅動、中間件和開發工具。

OSEck RTOS 軟件平臺包括:
       OSEck RTOS內核:
       1 穩定可靠,支持所有DSP,有20+年歷史。
       2 專門針對C66x優化。沒有內存碎片的內存管理。
       3 內存自動裁剪,統一的出錯處理機制。
       4 BSP(驅動)源代碼:優化高效的驅動,如RapidIO,Ethernet等。
       5LINX IPC: 支持分布式系統的IPC.
       6使多核、多DSP、多板卡的編程好像單核編程一樣。
       7支持任何物理介質,如C66x多核之間(EDMA),多DSP之間(RapidIO),多板卡之間(RapidIO, Ethernet)。
       8TCP/IP協議
       9Package Flow 軟件加速包
       10Optima開發優化工具:CPU,內存等性能優化工具。

Enea在DSP RTOS領域有近20年的開發、現場使用經驗,針對復雜的C6678,從2010年起專門投入30多人的專家團隊來支持優化6678軟件平臺,包括:
 內核、重寫高性能驅動、分布式支持、網絡加速、優化工具等,現在以及有30多個客戶使用Enea針對6678的軟件平臺:
1. 成熟、穩定、可靠、現場驗證的,專門針對6678 DSP特別優化的OSEck RTOS。
2. 成熟穩定的針對C6678的驅動程序,支持包括SRIO、以太網、PA、Multicore Navigator、MPAX、中斷管理等。
3. 跨核、跨DSP、跨板卡系統的透明傳輸模塊LINX。

Best Regards

William

[email protected]

九.tms320c6678電源問題

1問:在評估板上,固定1V的電流值是5A,c6678_power_consumption_summary_rev3-2表格中固定1V所需電流值僅需1A左右,修改后也達不到2A,這是為什么?

答:修改表格使能所有模塊后,在1GHz, 85度下,CVDD對應的電流大概在6A,CVDD1的電流在2A左右。你的5A可能測的是CVDD對應的值。

十.TMS320C6678降低功耗

1問:在C6678中有PDCCMD寄存器可以選擇是否關閉C66x CorePac來降低功耗,寄存器的地址是0x18000000,但是怎么選擇具體關閉哪個CorePac呢?難道在PDCCMD寄存器中設置關閉內核就都關閉了嗎?可是在提供的功耗估計表里,8個內核可以選擇具體使能哪個呀。那其他核的PDCCMD寄存器是什么地址呢?

答:PDCCMD是每個core獨立的寄存器,每個core的寄存器的地址是一樣的,只能由本核訪問。具體的corepac power down flow在corepac user guide有說明。在power spreadsheet中可以分corepac設置其enable/diable status,設置為disable status即將該core power down。


如需購買,請直接點擊,官方大促75折


此內容為AET網站原創,未經授權禁止轉載。
主站蜘蛛池模板: 亚洲在线免费视频 | 亚洲精品网址 | 国产精品久久久久久久 | 国产网址在线 | 国产一区二区三区久久小说 | 欧美在线不卡 | 欧美区一区 | 久久亚洲国产欧洲精品一 | 国产成人a一在线观看 | 精品一区二区久久久久久久网站 | 国产深夜福利视频网站在线观看 | 99视频99| 9久re在线观看视频精品 | 亚洲国产成人久久午夜 | 亚洲国产最新在线一区二区 | 亚洲欧美日韩一区 | 国产三香港三韩国三级不卡 | 欧美xxxx成人免费网站 | 成人在线免费网站 | 欧美极度极度另类 | 欧洲国产伦久久久久久久 | 日本精品一区二区三区在线 | 国产成人在线小视频 | 国产乱码精品一区二区三区中 | 夜夜爱夜夜爽夜夜做夜夜欢 | 国产一区二区三区视频 | 一色屋精品亚洲香蕉网站 | 亚洲日本一区二区三区 | 国产成人精品综合久久久 | 999久久久精品视频在线观看 | 国产亚洲三级 | 亚洲午夜久久久久国产 | 男女午夜性爽快免费视频不卡 | 洋老外米糕国产一区二区 | 成人精品一区二区久久 | 一本大道香蕉大vr在线吗视频 | 成免费网站 | 国产永久在线视频 | 久久精品视频一区 | 成人性欧美丨区二区三区 | 国产午夜爽爽窝窝在线观看 |