HI,
原先在调试SYSBIOS IPC多核触发中,需要将codemem和datamem放置在DDR做共享,MSMC只有4M太小,无法放下所有文件,所以移植
到DDR3上,刚开始一直无法成功,在e2e和多方高手的帮助下,终于成功了。也在此分享下自己的经验。希望对大家有用。
1.直接修改CCS下的platform,起码CCS下的platform是标准的,这样不会有错误。
修改位置,在platform里面添加DDR3部分,然后将codemem和datamem存放位置写在DDR3上,
2.修改工程文件下的cfg文件,直接添加如下配置:
Program.sectMap[".text"] = new Program.SectionSpec();
//Program.sectMap[".text"] = "MSMCSRAM";
Program.sectMap[".text"] = "DDR3";
Program.sectMap[".ti.decompress"] = new Program.SectionSpec();
//Program.sectMap[".ti.decompress"] = "MSMCSRAM";
Program.sectMap[".ti.decompress"] = "DDR3";
Program.sectMap[".bss"] = new Program.SectionSpec();
Program.sectMap[".bss"] = "L2SRAM";
Program.sectMap[".neardata"] = new Program.SectionSpec();
Program.sectMap[".neardata"] = "L2SRAM";
Program.sectMap[".rodata"] = new Program.SectionSpec();
Program.sectMap[".rodata"] = "L2SRAM";
Program.sectMap[".cinit"] = new Program.SectionSpec();
//Program.sectMap[".cinit"] = "MSMCSRAM";
Program.sectMap[".cinit"] = "DDR3";
Program.sectMap[".pinit"] = new Program.SectionSpec();
//Program.sectMap[".pinit"] = "MSMCSRAM";
Program.sectMap[".pinit"] = "DDR3";
Program.sectMap[".init_array"] = new Program.SectionSpec();
//Program.sectMap[".init_array"] = "MSMCSRAM";
Program.sectMap[".init_array"] = "DDR3";
Program.sectMap[".const"] = new Program.SectionSpec();
//Program.sectMap[".const"] = "MSMCSRAM";
Program.sectMap[".const"] = "DDR3";
Program.sectMap[".data"] = new Program.SectionSpec();
Program.sectMap[".data"] = "L2SRAM";
Program.sectMap[".fardata"] = new Program.SectionSpec();
Program.sectMap[".fardata"] = "L2SRAM";
Program.sectMap[".switch"] = new Program.SectionSpec();
//Program.sectMap[".switch"] = "MSMCSRAM";
Program.sectMap[".switch"] = "DDR3";
Program.sectMap[".sysmem"] = new Program.SectionSpec();
//Program.sectMap[".sysmem"] = "MSMCSRAM";
Program.sectMap[".sysmem"] = "DDR3";
Program.sectMap[".far"] = new Program.SectionSpec();
Program.sectMap[".far"] = "L2SRAM";
Program.sectMap[".args"] = new Program.SectionSpec();
//Program.sectMap[".args"] = "MSMCSRAM";
Program.sectMap[".args"] = "DDR3";
Program.sectMap[".cio"] = new Program.SectionSpec();
Program.sectMap[".cio"] = "L2SRAM";
Program.sectMap[".ti.handler_table"] = new Program.SectionSpec();
//Program.sectMap[".ti.handler_table"] = "MSMCSRAM";
Program.sectMap[".ti.handler_table"] = "DDR3";
Program.sectMap[".vecs"] = new Program.SectionSpec();
//Program.sectMap[".vecs"] = "MSMCSRAM";
Program.sectMap[".vecs"] = "DDR3";
Program.sectMap[".xdc.meta"] = new Program.SectionSpec();
//Program.sectMap[".xdc.meta"] = "MSMCSRAM";
Program.sectMap[".xdc.meta"] = "DDR3";
注释掉的是放置于MSMC上的。
修改结束,这样就可以在原先IPC在DDR3下做触发。起码DDR3的空间大,以后添加功能都方便
——————————————————-
不过在IPC触发成功后,本人在移植QMSS八核,将demo代码的core0和core1之间的QMSS移植为八核QMSS还存在一些问题,
八核一直无法跑起来,https://www.deyisupport.com/question_answer/f/53/t/7506.aspx
这个是问题链接,如果有哪位高手对QMSS熟的话,能帮我看下这个问题所在,万分感谢
谢谢
Andy Yin1:
您好,
感谢分享!QMSS需要先了解一下其通信的流程。
Richard Wu:
您好,
我最近也遇到了这个问题,想请问一下。
您说的“直接修改CCS下的platform”具体是在哪里?工程文件还是ccs的安装文件呢?
谢谢!
user2000895:
多谢分享了啊
Ping Li3:
回复 Richard Wu:
在菜单tools下的RTSC下面
chen xie:
回复 Andy Yin1:
能麻烦问问您负责BCP方面的同事咨询一下如下两个问题么,谢谢您!
http://www.deyisupport.com/question_answer/dsp_arm/c6000_multicore/f/53/t/45206.aspx
http://www.deyisupport.com/question_answer/dsp_arm/c6000_multicore/f/53/t/45234.aspx
谢谢您!
Richard Wu:
回复 Ping Li3:
十分感谢!
stern:
我也是这样修改的,结果出错了,请问能发一个平台的文件吗?