c6455dsp的cmd文件中內存分配問題


  自己在測試c6455dsp的一個fft庫函數的例程中,發現了一些dsp內存分配的問題,現歸納總結如下:

1. DSP中cmd文件的段數據類型

  .cinit :用來存放程序中的變量初值和常量值。

  .const :存放程序中的字符常量、浮點常量和用const聲明的常量。

  .text :用來存放程序代碼。

  .bss :為程序中的全局和靜態變量保留空間。

  .far :為程序中用far聲明的全局和靜態變量保留空間。

  .stack :為程序系統堆棧保留空間,用於保存返回地址、函數間的參數傳遞、存儲局部變量和保存中間結果。

  .sysmem用於程序中的malloc、calloc和realoc函數動態分配內存空間。

2. cmd文件中的內存分配問題

  如下圖是截取c6455dsp的內存分配地址空間映射圖。

 

圖1  內部RAM地址映射

 

圖2  外部DDR2內存(512M)地址映射

  對照上圖,在cmd文件中,我共開辟了四塊內存,L2為2M(字節),CACHE_L1P為32k, CACHE_L1D為32k, DDR2為512M,如下圖所示。

  注意:cmd中內存的分配一定要是按照dsp內部的實際物理地址來寫的。

圖3  cmd文件內存分配圖

  我剛剛開始遇到的問題是,我嘗試把所有的dsp系統運行所需內存段放在DDR2(因為DDR2足夠大,哈哈)中,結果在編譯的時候,遇到了問題,說是內存驗證不通過,后來我自己經過反復嘗試,發現.cinit、.text、.stack和.const這些內存區域是不能分配在DDR2外部的,目前還不知道具體原因。其它的內存區域可以分配在DDR2中,程序能正常運行。另外注意:將上述關鍵數據盡量放在內部IRAM中,否則容易出錯。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM