C6000多核常見問題匯總
2014-11-21
ARM Part
1. TI Keystone系列產品包含哪幾類ARM的處理器?
A: TI Keystone系列產品按照其產品定位以及應用領域主要采用ARMv7 Cortex-A架構的處理器,目前主要有包含單核Cortex-A8的產品以及包含多核(1, 2, 4核)Cortex-A15的產品。
2. TI產品集成的ARM處理器是否有功能上的裁剪?
A: TI產品內集成的ARM處理器基本保留Cortex-A架構內的所有特性,最新的集成Cortex-A15的KeystoneII產品繼承了Cortex-A架構的所有屬性,包括安全擴展的TrustZone以及硬件虛擬化功能的支持。
3. TI是否提供其產品中ARM上的編譯器或是推薦用哪種編譯器?
A: 目前TI沒有相關ARM編譯器的開發(fā)及支持計劃,TI推薦使用開源交叉編譯鏈Launchpad(Linaro組織下的編譯非Linux ABI的編譯器),由于ARM是這個組織的主要貢獻者和開發(fā)者,所以該編譯器對于ARM部分能夠有很好的版本演進以及優(yōu)化支持。
4. TI的CCS是否可以像編譯DSP那樣通過圖形界面編譯ARM的工程?
A: TI的CCS自v5.4.0開始集成基于了GCCv4.7.3的Luanchpad開源交叉編譯鏈(CCS后續(xù)版本會隨GCC版本演進而集成更新版本), 用戶可以不需要手工編寫Makefile而通過CCS的圖形界面來進行代碼修改及編譯。
5. TI的CCS是否可以運行及調試其相應產品中的ARM工程?
A: TI提供其集成ARM的產品的軟件仿真器(Simulator),可以通過CCS進行加載及運行以進行代碼仿真;并且支持在安裝相應版本的Emulation packet及驅動后連接TI相應產品的EVM板以在硬件上運行和調試代碼。在使用相應仿真器之后可以實現(xiàn)軟件、硬件斷點,全局、局部變量查看,核內寄存器及反匯編代碼查看等類似于DSP下使用的調試手段。
Linux Part
1. TI是否有相應產品中的ARM使用的Linux及U-boot版本及源碼?
A: TI提供其相應產品中ARM所使用的Linux Kernel及U-boot,由于新特性支持需要以及日后功能擴展考慮,目前提供的Linux Kernel及U-boot都是基于3.X版本的LinuxKernel且支持DTS,相關源碼發(fā)布在arago的開源平臺上。
相關Git目錄都包含多個版本,這些版本對應著(Keystone I)SC-MCSDK v2.X或是(Keystone II)MCSDK v3.X的相應發(fā)布版本號,這些SDK安裝之后會包含相應版本Linux Kernel預編譯好的uImage,root file system,Image,zImage和U-Boot預編譯好的bin文件以及帶SPL的bin文件,如果用戶不需要修改的話可以直接將這些編譯好的成品文件進行啟動和運行。
2. 如何使用Git下載TI的ARM相關產品的Linux及U-boot源碼并切換到相應版本?
A: Git是常用的代碼開發(fā)時使用的版本維護工具
3. 如何編譯,燒寫及運行TI的ARM相關產品的Linux及U-boot代碼?
A: 這部分操作與不同硬件平臺以及不同Linux及U-boot版本而有所不同,如果用戶使用的是TI的TCI6638K2K及66AK2H12的EVM的話,
另外,TI推薦使用Linaro組織的Linaro開源交叉編譯鏈來編譯相應產品上ARM部分Linux ABI的編譯,目前發(fā)布的版本是基于GCC4.7.3的,下載鏈接請見上述鏈接內文檔。
4. TI是否提供其集成ARM相關產品的用于Linux及U-boot的驅動?
A: 這部分TI只能提供基于TI相關產品EVM板上的配置及驅動,在U-boot(主要在 /arch/arm/cpu/armv7/相應EVM或是架構,/board/ti/相應EVM或是架構)和Linux Kernel(主要在/arch/arm/mach-相應架構)中都包含相應源碼,用戶可以根據(jù)自己硬件板配置進行修改及裁剪。
PCIe Part
1. TI Keystone PCIE 有幾條Lane, 最大帶寬是多少? 最多有幾個port?
答:有2條Lane,每個Lane的最大帶寬是5Gbps,所以在2個Lane都使用的情況下,最大帶寬是10Gbps。PCIE只有1個port,即無論使用1條Lane或者2條Lane,都只能外掛一個PCIE設備。
2. TI Keystone PCIE 支持和PCI設備相連嗎?
答:支持,但由于電氣特性的差別,與PCI設備相連時,需要通過橋片或者Switch進行轉換
3. TI Keystone PCIE 支持熱插拔嗎?
答:暫時還不能支持 Hot Plug功能
4. 對于Inbound操作, 如果 TLP的 PCIE address滿足多個BAR的匹配要求, 那么inbound 規(guī)則應該選取哪個BAR對應的IB_BAR配置呢?
答:對于有TLP address落在多個BAR空間內的場景,TI PCIE IP所選取的Inbound 翻譯的機制是選擇和TLP PCIE address 最接近的BAR地址所映射的IB Region寄存器組。這里最接近可以理解為比TLP PCIE address 小的BAR地址中的最大值。
5. 對于RC作為64bit空間配置時, 是否BAR0和BAR1全作為Address space0空間?
答:是的,在這種模式下BAR0和BAR1會映射local application registers, local configuration accesses, remote configuration accesses and remote IO accesses 。因此RC不能通過BAR的映射規(guī)則來訪問data 空間,一個變通的辦法是可以通過設置Base/limit 寄存器來訪問data空間
6. 通過Keystone PCIE做數(shù)據(jù)訪問時需要做Cache一致性維護嗎?
答:PCIE 協(xié)議有 Cache Snoop這一特性,但目前就Keystone PCIE 而言,如果設置PCIE data空間為可cache空間,則需要軟件來完成Cache一致性維護
7. 我測試的Keystone PCIE速度怎么達不到手冊宣稱的帶寬? TI實測的帶寬是多少?
答:請確保測試outbound側是通過EDMA進行,并且選用EDMA的DBS為128bytes的通道,以滿足outbound的最大payload size為128bytes的要求。就Keystone 器件而言,采用CC0通道進行傳輸。TI 實測的帶寬為 PCIe Read Throughput Performance 為6.45Gbps/Lane(DBS=128bytes)PCIe Write Throughput Performance 為5.91Gbps(DBS=128bytes)
8. 如果采用TI的 PCIE EVM板連接到PC的主板上, 應該做些什么修改和操作?
答:a. 將IBL升級為MCSDK2.0GA及以上版本。可以參照MCSDK目錄下tools\boot_loader\ibl\doc\evmc66xx-instructions.txt中的步驟,需要特別注意的是在執(zhí)行第一步“Programming IBL on the EEPROM at bus address 0x51”時,應確保tools\writer\eeprom\evmc66xxl\bin\eepromwriter_input.txt 中的“swap_data = 0”
b. 參考 tools\boot_loader\examples\pcie\docs\readme.pdf 將EVM板設置為PCIE BOOT模式
c. 將電腦主板電源關閉
d. 通過TMDXEVMPCI轉接卡將6678EVM插入到主板的PCIE插槽中,注意:此時不需要有任何外接電源供給EVM板
e. 將主板電源打開
f. 在WINDOWS操作系統(tǒng)中,在Device manager中,您將會看到如下畫面
Misc Part
1. 將MCSDK相關例程導入后編譯不通過,可能都有哪些原因導致?
答:工程編譯出錯的原因很多,下面列出兩點通用的原因,具體問題還得具體分析:
a)由于工程中可能使用絕對路徑,所以工程更換路徑后需要作出相應修改,可以通過project->properties->CCS Build->C6000 Compiler->include options下面的include search path確認是否符合當前工程的頭文件所在路徑;如果在工程中包含lib,則需要同時確認修改C6000 linker->file search path中的library search path;
b) 工程中可能使用link的方式加入源文件,所以在工程路徑變更后,源文件路徑可能變化,此時需要將link的源文件從工程中刪除,然后將文件拖到工程中選擇link即可。
2. 在進行程序性能測試時, 發(fā)現(xiàn)運行cycle很長,可能的原因有哪些?
答:a) 在工程中加入正確的PLL及DDR初始化配置,可以加入gel文件,也可在源文件中加入相應初始化代碼;
b) 使能cache配置,包括配置L1/L2 cache,數(shù)據(jù)存放的memory通過配置MAR寄存器使能cache;
c) 盡可能將常用的大塊數(shù)據(jù)放在LL2,降低數(shù)據(jù)讀寫時延;
d) 修改optimization level為-o3。
關于各函數(shù)的性能分析可以使用如下鏈接的工具,對于關鍵的算法代碼可以參考C6000優(yōu)化手冊。
3. 使用MCSDK中的IPC進行核間通信測試時, 發(fā)現(xiàn)核間通信時間很長,該如何解決, TI推薦的核間通信方式有哪些?
答:a) 首先確認時延測試方法的正確性,需要確認記錄時間點基準一致,如在保證發(fā)送和接收core同步的基礎上,記錄發(fā)送和接收時間點;
b) 核間通信的方法有很多,如shared memory、semaphore、IPC register、QMSS等,前三種方法相對簡單,但是各有限制,相對來說QMSS靈活性更高,容錯性更高,所以QMSS是Keystone中推薦的一種常用核間通信的方式。
4. TI EVM都有IBL,這個IBL的作用是什么, 是否所有的Keystone板子設計都需要EEPROM,并且在上面燒寫IBL呢?
答:EVM上存在IBL主要有兩個作用:a)解決C667x PG1.0芯片中PLL unlock的問題,具體可參考Errata Advisory8,即首先進入IBL對PLL進行重配并lock,之后再跳轉到二級boot;b)支持Norflash、Nandflash及Ethernet二級boot。在設計板子時,如果不需要二級boot,則EEPROM及IBL不是必須的;考慮到C667x PG1.0 PLL Unlock的問題,建議在設計時帶上EEPROM。
5. Keystone 對CVDD的參考電壓設計都要求smartreflex,如果對功耗要求沒有那么嚴格,是否可以使用固定電壓供電呢?
答:從芯片的功耗、壽命及穩(wěn)定性考慮,推薦使用smartreflex。如果使用固定電壓供電,當電壓低于smart reflex 要求的電壓,芯片不一定能正常工作。 當電壓高于CVDD額定電壓,不僅芯片的功耗可能會急劇上升,也不排除芯片可能出現(xiàn)不可預知的問題。
6. 對于多核編程,每個核可以運行不同的程序,如果多核運行同一個程序,對于不同的核該如何區(qū)分代碼和私有變量呢?
答:多核編程時,對于代碼段可以將共享代碼放在共享memory,代碼中通過DNUM區(qū)分核;對于數(shù)據(jù)段,堆棧必須每個核私有,全局私有變量,可以通過MPAX單元配置達到各核看到相同的邏輯地址但是對應不同的私有物理地址。
7. JTAG連接不上目標板怎么辦?
A: JTAG連接不上目標板,有可能是硬件信號有問題,也有可能是軟件配置不對。
8. DSP死機了,有哪些手段去查找原因?
A:DSP死機主要分以下幾種場景:
1) 出現(xiàn)死機時,仿真器不能連接上DSP,也不能通過外設對DSP進行訪問。
2) 出現(xiàn)死機時,仿真器不能連接上DSP,但還可以通過外設(PCIe,SRIO等)對DSP進行內存訪問
3) 出現(xiàn)死機時,仿真器能連接上DSP進行調試。這種情況下,通常是代碼跑飛了,DSP core并沒有跑死。
對于場景1, 最有效的方法還是檢查代碼,比較出錯版本和正常版本之間的差異,找出可疑點進行分析。
另外,可以并將DDR設置成self-refresh模式, 把一些調試信息記錄到DDR。 死機后,復位 DSP, 但不要重新初始化DDR,這時候通??梢詮?span lang="EN-US">DDR中讀到上一次死機記錄的信息進行分析。
對于場景2和場景3,可以分別用外設和仿真器進行調試信息的分析。
另外,TI的多核DSP支持trace功能,可以記錄DSP的運行軌跡進行錯誤分析。