天天看點

ti ccs #pragma CODE_SECTION

由于在基于DSP的嵌入式系統開發中,存儲資源特别是片内高速存儲資源有限,在算法系統內建時Memory的管理對于提高整個系統的優化是非常重要的,這一方面影響資料的讀取、搬移速度;另一方面還影響Cache的命中率,下面分程式和資料兩方面分析。程式區:最大原則是将經常排程使用的算法子產品放片内。為做到這點,TI的CCS中提供了#pragma CODE_SECTION,可以把需要單獨控制存放的函數段從.text段中獨立出來,進而在.cmd檔案中對這些函數段進行單獨實體位址映射。還可以使用程式動态的方式,将需要運作的代碼段先排程進片内memory,如H.264/AVC中CAVLC和CABAC兩個算法子產品具有互斥性,是以可以将這兩個算法子產品放在片外而且對應于片内同一塊運作區,在運作其中某一個算法子產品之前,先将其調入片内,進而充分利用片内有限的高速存儲區。程式區的管理考慮到一級程式Cache(L1 P)的命中率,最好将具有先後執行順序的函數按位址先後順序配置在程式空間中,同時對代碼比較大的處理函數将其拆分成小函數。資料區:在視訊标準編解碼中,由于資料塊都很大,如一幀D1 4:2:0的圖像有622k大小,而且在編解碼中都需要開3~5幀甚至更多的緩沖幀,是以資料基本上無法在片記憶體放。為此在系統的Memory優化管理中,需要開C64系列DSP的二級Cache(對于TMS320DM642用于視訊編解碼中二級Cache開64k的情況比較多)。同時最好将放片外的被Cache所映射的視訊緩沖區的資料以128 byte對齊,這是因為C64系列的DSP的二級Cache的每行大小為128 byte,以128 byte對齊有利于Cache的重新整理和一緻性維護。

繼續閱讀