This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TMS320F28384D: 使用MSGRAM_CPU_TO_CM發現被內建變數佔住空間

Part Number: TMS320F28384D
Other Parts Discussed in Thread: C2000WARE

環境:C2000Ware_5_04_00_00,IC:F28384D
再使用CPUtoCM記憶體位置,使用自定義變數,發現被變數 IPC_CPU_To_CM_PutBuffer 占住空間
請問除了修改ipc.h外有無方案可以砍掉IPC_CPU_To_CM_PutBuffer,不要讓它占住我的空間?

  • 已经收到了您的案例,调查需要些时间,感谢您的耐心等待。

  • 构建项目后,通过观察CCS中的内存分配视图并检查它是否存在于内存中的该部分,您将知道这些数据部分是否存在于您的应用程序中。
    您还可以查看构建配置文件夹中的.map文件,查看符号是否显示在数据符号表下。
    您可以修改链接器命令文件,将数据段“MSGRAM_CPU_to_CM”的分配映射到不同的内存范围。

  • 您好,首先
    1.通过观察CCS中的内存分配视图并检查它是否存在于内存中的该部分,確定是存在的,即使我在主程式沒有宣告

    2.您可以修改链接器命令文件,将数据段“MSGRAM_CPU_to_CM”的分配映射到不同的内存范围。
    我的問題是,此變數佔用了我的空間,想要移除,但卻是Lib裡面掛載的部分。

    除非我修改 C2000Ware_5_04_00_00\driverlib\f2838x\driverlib\ipc.h 跟 ipc.c,不然每次版編譯都會存在。

  • 我理解该变量将存在于应用程序中。如果您关心的是释放该内存部分中占用的空间,最好的办法是更改内存分配或创建此文件IPC.c的修改版本,其中不包括此变量。

    看看是否可以将数据部分映射到其他内存位置。

  • 你能确认一下你的.map文件中是否引用了它吗?您之前的图像很难查看。
    下面是地图文件,显示了它与CPUTOCMRAM部分的映射。更改链接器文件会将其映射到不同的内存位置。

  • 如果要改IPC.c的文件,是否等於自己建一個Ware的資料價,重新定義lib指到新資料夾?
    還是說未來版本這個問題會修改?

  • .map確實有這個變數,移到別的位置也是個方法,但變成需要在定義一個CPUTOCMRAM新名稱
    如果不想占用RAM,可以移到Flash的位置嗎?

  • 不应该。这是一个在项目中保留更改的本地副本的问题。项目中的文件将覆盖driverlib中的文件。

  • 为此,您需要在链接器命令文件中创建一个新节,并将其映射到该新节。如果你不打算使用这些数据部分,你应该能够将其移动到Flash。但请注意,它不会为两个核心提供数据。
    这应该会释放消息RAM。
    你能解释一下你喜欢从MSG RAM中删除这些部分吗?我相信这个请求是针对你的用例的。

  • 了解!

    需要移除是因為,記憶體對齊問題。
    我使用同一個struct的變數,直接對應不同CPU的共用區塊,發現被內部占用導致記憶體位置偏移。
    因此需要手動修改 砍掉多餘變數的問題。

    建議IPC.C裡面的IPC_CPU buffer改為指標變數,不然就是不要宣告讓使用者選擇。

    謝謝