TI论坛
直播中

王玉珍

8年用户 168经验值
私信 关注
[问答]

请问如何实现多个核映射不同DDR3物理地址为相同的逻辑地址

目的是为了便于CCS工程的管理,想让一个CCS工程,相同的cfg配置和cmd(map)文件编译出的一个image能运行在多个DSP核,且数据、堆栈每个核私有。不想使用MAD工具,感觉满足不了一个CCS工程的条件。场景如下:
1. 4个核,运行4组不同的task,运行时用DNUM区分启动不同的task组
2. 想使用相同的配置,将私有数据映射到相同的一段ram,例如(0xa0000000 开始的64M),但实际4个核使用4段不同的物理地址。
3 代码段和共享数据直接使用实际的DDR3内存。
大概的方法是不是应该使用MPAX在程序加载到每个核之前将DDR3的一段物理地址映射为0xa0000000开始的虚拟地址,关键是数据加载前,load view变execute view之前完成映射。看了文档Multicore Shared Memory Controller,TMS320C66x DSP CorePac,还是不知道具体怎么操作,或者哪里有sample code,多谢!!

回帖(7)

宋艳艳

2019-1-4 11:53:07
MAD 工具 支持prelink,就可以重映射物理地址,使得每个核访问的逻辑地址相同,实际对应不同的物理地址,不知道你为什么非要自己弄,
 
在部署文件里面添加
  [    "name"   : "ddr-data",  
  "vaddr"   : "0xD0000000",    
"paddr"   : [ "0x801000000", "0x802000000", "0x803000000", "0x804000000", "0x805000000", "0x806000000", "0x807000000", "0x808000000" ],   
 "size"   : "0x1000000",   
 "secNamePat"   : ["systemHeap" ],   
 "cores"   : [0,1,2,3,4,5,6,7],   
 "permissions" : ["UR", "UW", "SR", "SW"],   
 "cacheEnable" : true,    "prefetch"      : true,  
  "priority"  : 0,   
 "shared"  : false   ],
就可以了,
 
 
我们项目就是这么弄的,我建议你研究下MAD工具的使用,会用了,多核程序部署很简单,因为MAD都帮你做了。就算你自己解决了映射问题,还涉及到数据搬移到每个核,程序下载怎么弄等等。
 
举报

王玉珍

2019-1-4 12:00:33
引用: juujwfdf 发表于 2019-1-4 12:14
MAD 工具 支持prelink,就可以重映射物理地址,使得每个核访问的逻辑地址相同,实际对应不同的物理地址,不知道你为什么非要自己弄,
 
在部署文件里面添加

han yang1, 非常感谢你的建议。因为我们使用的6614有一个ARM运行linux,数据搬移到每个核,程序下载的这些问题,可以由linux完成。我主要是想一个CCS工程编译出来的.out文件可以直接运行于4个核,因为刚接触CCS/DSP开发,对很多工具比较陌生。
按照你上面的配置
"vaddr"   : "0xD0000000",    
"paddr"   : [ "0x801000000", "0x802000000", "0x803000000", "0x804000000", "0x805000000", "0x806000000", "0x807000000", "0x808000000" ],   
 "size"   : "0x1000000",   
是不是在CCS link的时候map的段为0xD0000000开始的16M 地址空间(利用cmd 文件)。运行时发生地址重映射,每个核映射到不同的物理地址?
举报

宋艳艳

2019-1-4 12:11:15
引用: sdgsgsgs 发表于 2019-1-4 12:21
han yang1, 非常感谢你的建议。因为我们使用的6614有一个ARM运行linux,数据搬移到每个核,程序下载的这些问题,可以由linux完成。我主要是想一个CCS工程编译出来的.out文件可以直接运行于4个核,因为刚接触CCS/DSP开发,对很多工具比较陌生。
按照你上面的配置
"vaddr"   : "0xD0000000",    

不是在link.cmd里面修改,是改MAD工具里面的配置文件deployment_template_C6678_windows.json
 在mcsdk_2_01_02_05toolsboot_loadermad-utilsmap-toolconfig-files 目录里面
如何使用MAD工具给你一个连接,有详细说明,
http://processors.wiki.ti.com/index.php/MAD_Utils_User_Guide
 
另外一个链接是开发包里面的一个多核例子
http://processors.wiki.ti.com/index.php/MCSDK_Image_Processing_Demonstration_Guide
我把我的这个配置文件给你参考
我的是6678,可能有些不一样。
举报

杨娟

2019-1-4 12:27:11
如果每个core的全局私有变量都是未初始化,则可以在应用使用之前对其进行MPAX配置即可,如果这些变量是需要初始化值的话,则需要在数据加载之前配置好MPAX,此时可以在boot.c中的c_int00函数的开始完成MPAX的配置。boot.c在相应的编译器目录下可以找到,如C:ticcsv5toolscompilerc6000_7.4.2librtssrc.zip。
参考附件在boot.c c_int00中增加相应的MPAX配置,将boot.c加入工程中编译即可。
                                                                          

举报

更多回帖

发帖
×
20
完善资料,
赚取积分