关于DSP cmd文件更改的方法和若干注意

本文介绍了如何在C6678DSP项目中优化cmd文件,以合理分配内存资源,如L2缓存和MSMC,以及如何根据程序需求动态调整空间分配,确保程序的正确编译和运行,同时提到了map文件在内存规划中的辅助作用。
摘要由CSDN通过智能技术生成

上段时间帮客户把C6678的cmd文件修改了一下,主要是把MSMC空间全部腾出来,本身是个很小的事情,但是里面也有一些技巧和方法,简单说一下~

cmd文件又叫做连接命令文件(linker command files),以.cmd后缀结尾。该文件是一个声明文件,主要是对DSP内部的存储器资源进行分配,包括内部的L2,MSMC以及外扩的DDR,NOR FLASH等,基本上用到的空间都得声明。大致分两个部分,一个是MEMORY列出所有的存储器资源,什么名称,地址多少,长度多少;另一个是SECTIONS,主要是对程序中的各个段位于哪个存储器中做个分配和声明。

因为L2缓存以及MSMC是DSP内部的资源,所以开始的时候,如无特殊需求,就把所有的程序段都分配到这两个区域内,L2有512KB,MSMC有4MB,一般都是够的。而且对于使用SYS/BIOS的工程来说,在cfg文件内是可以指定各个程序段的空间分配。

从而编译的时候会自动生成linker.cmd文件。

cmd文件是根据cfg文件自动生成的,所以单独修改cmd文件后重新编译后会还原的。

而这种方式过于死板,所以可以自己定义一个cmd文件,例如c6678_my.cmd。

此时需要做两个操作:

    1. 包含生成的linker.cmd,并将linker.cmd中的空间分配部分屏蔽掉;
    2. 添加自己的空间分配机制;

此时需要注意,程序不能再做重新编译操作(rebuild),只能做编译操作(build),防止linker.cmd更改。

在做空间分配的更改时最好的办法是从原来的L2+MSMC程序中一步一步地修改,修改一步就编译运行一下,看程序是否能够加载,是否能够运行。在某些场景,有些段是必须要放在DSP内部存储器中的,例如程序中用到了DDR3,那么DDR3初始化的程序就必须要运行在DSP内部存储器中。同时在调整各个段分配的时候可以参照.map文件进行,.map文件是编译后各个段的实际大小以及在各个存储器中的占用情况。

各个段的作用就不再赘余了,有兴趣的可以自行百度。根据各个段的大小来看内部空间是否能装的下~以此来保证程序正确。

  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值