IPC多核入門程式設計C6657雙核啟動問題小結

2021-10-05 23:16:49 字數 1656 閱讀 3748

首次測試和運用ipc可能會由於不熟悉ipc而出現各種問題,採用ipc進行多核程式設計,建工程時把ipc模組加入,如下圖:

或者直接使用ccs5.5提供的ipc例子來新建工程,如下圖利用messageq的例子:

第一次採用雙核的ipc通訊時,連單核都啟動不起來,問題是dsp啟動時阻塞在了startup.firstfxns和startup.lastfxns之間的內部初始化函式的呼叫(初始化順序參見sys/bios user guide),這也是在加了ipc模組時才出現的問題。

通過demo板的除錯發現阻塞是發生在乙個memory_alloc()函式裡面,所以斷定應該是堆的問題,結果在.cfg檔案裡將堆的大小0改為0x4000後就不會出現阻塞現象了。

單核能啟動後,接下來是同時啟動雙核(c6657),雙核同時啟動時也會有乙個核會出現上述的阻塞狀況。但如果先啟動乙個核,再啟動另乙個核就可以排除阻塞現象。原因可能是兩個核同時啟動時(同時reset)在初始化階段會爭用堆疊,導致乙個核阻塞掉了,所以改為先啟動乙個核,再啟動另乙個核的形式雙核就可以順利啟動起來了。

雙核啟動後在ipc_start()函式裡面又出現了問題,乙個核能過,乙個核過不了,通過深入檢視ipcipc_start()源**,發現裡面的模組全域性變數應該是私有的,所以應該把ipc全域性的資料變數放在ll2裡面,這樣訪問才不會互相干涉,這可以通過修改.cmd檔案解決,更快捷的方法是在ccsxdc tool裡面修改,步驟如下:

1、切換到ccsdebug環境

2、在選單欄裡tools > rtsc tools> platform > edit/view 出現edit platform視窗,在ipc_xx安裝路徑裡面找到c6657的ipc配置檔案,如下,

將data memory 設定為l2sram,stack memory 設定為l2sram。finish之後在再rebuild一下工程,注意是rebuild或先clean再build。這時ipc的全域性資料變數和棧都是私有的(可以檢視工程目錄下debug的linker.cmd檔案,看是不是都放在l2sram了),這樣ipc模組的使用就沒有問題了。

多核程式設計

一 實驗目的 1 掌握microsoft visual studio 2012配置openmp的方法 2 掌握microsoft visual studio 編寫編譯簡單openmp程式的方法。二 實驗內容 1 配置visual studio 2012使支援openmp 配置環境變數,確定執行緒的數...

c Task多核程式設計

之所以寫這篇文章是受到這篇文章的啟發,一老外寫的,很無私,以前也老聽到過多核程式設計,有幸看了上面的這篇文章,想把自己的一些理解寫下來 1 為什麼要有多核程式設計的技術那,無非兩點,多核cpu的出現和經常出現乙個cpu告訴執行,另乙個cpu閒著,cpu不應該是這種使用情況 應該是這種 2 c net...

Visual C 本地多核程式設計

visual c 從2005版開始支援openmp 2.0的多核程式設計 2008和2010版也只支援2.0版 visual c 2010 beta 1版支援本地c 的ppl parallel pattern library,並行模式庫 程式設計。本小節介紹openmp多核程式設計,主要內容包括 o...