背景描述:
在DSP中,尤其是裸机的情况,经常需要自行分配规划使用内存,不仅可以避免内存混乱、内存覆盖等问题。
实现形式有如下两种
方法一:
编写CMD文件或者直接使用系统生成的CMD文件
CMD文件分为两个部分,MEMORY和SECTIONS,MEMORY主要是内存段描述,某块内存的名字,起始地址,和长度;SECTIONS主要是存储的数据与内存的映射。
出现过的问题
- 分配一个4字节的空间会报错
Description Resource Path Location Type <a href="file:/G:/ti5.5/ccsv5/tools/compiler/dmed/HTML/10099.html">#10099-D</a> program will not fit into available memory. run placement with alignment fails for section ".cachedata16" size 0x4 . Available memory ranges: C6678.cmd
改成8字节的就可以了,不知道跟DSP底层是否有关,有待考证
2. 因为地址是用16进制表示的,用程序员计算器比较方便计算
方法二:
使用CCS里的内存分配平台
这里的Platform Package Repository选到对应的核,Package Name项点下拉框会自动有匹配的选项。
可以在表格中添加自定义字段,但是添加多了,表格会划不动,需要换个大点的显示器或者竖屏操作,哈哈。
分配好之后,系统会在MKSC6678APP文件夹里的platform里生成一个Platform.xdc文件,里面记录了各个字段的相关内容。最后还需要在app.cfg文件里,把相关自定义字段映射到划分的相应的内存里。
配置好后,如果需要移植到其他电脑上,只需要把文件夹MKSC6678APP和app.cfg文件拷贝过去,然后再ReBuild一下项目,最后再编译就可以了。
参考博客
C6678 新建的platform 再想edit/view了,为什么呢
SYS/BIOS内存分配相关问题
【TIC6657 DSP学习笔记】02 RTSC平台配置组件创建