最近在移植代码,将C6455的代码转化成多线程的,目前代码都放在L2段,尝试将TASK,MBX放在DDR2中,都是会导致程序跑飞?
手册中有Program.sectMap[".foo"]="IRAM"的例子,可是我在JAVAscrip中设置了,还是会跑飞,
DDR2在进入BIOS前初始化的,先初始化,再动态创建TASK
Nancy Wang:
在JAVAscrip中设置?有没有在.cfg文件中配置。
user5317112:
回复 Nancy Wang:
就是CFG文件中加入Program.sectMap[".foo"]="IRAM";
在platfrom中设置好了,DDR2地址空间
在CFG中创建了一个heapmem
user5317112:
回复 Nancy Wang:
创建的heapmem句柄为Heapmem0
Mailbox_Params mboxParams;Mailbox_Params_init(&mboxParams);
mboxParams.heap=Heapmem0;
mbox = Mailbox_create(8,2,&mboxParams,&eb);
user5317112:
回复 Nancy Wang:
你好,能推荐一个SYSBIOS的教材吗?之前我用过CCS3.3的DSPBIOS,当时是用的28335,也是无法在外扩的SDRAM上创建TASK,但是MBX是运行成功过的,现在用6455,在测试MBX时就会跑飞
Nancy Wang:
回复 user5317112:
Program.sectMap[".foo"]="IRAM"这个要按照实际需求修改,希望将哪些段放到DDR2上,你有做修改吗?
这个示范链接也看一下。
rtsc.eclipse.org/…/Demo_of_Customizing_Memory_Sections
user5317112:
回复 Nancy Wang:
Program.sectMap[".foo"]="DDR2"这个修改过了,实例链接中的platform也修改过,编译没有问题
user5317112:
回复 Nancy Wang:
我感觉是把MBX设置到外部memory这一过程出的问题
user5317112:
回复 Nancy Wang:
map文件中包含DDR2的地址空间
Nancy Wang:
回复 user5317112:
sys/bios user guide:
www.ti.com/…/spruex3u.pdf
加大堆栈看看。
用ROV分析一下程序运行情况。
processors.wiki.ti.com/…/Runtime_Object_View_(ROV)
user5317112:
回复 Nancy Wang:
我在函数中bootloader.asm中设置函数段为.boot;
在CFG中设置Program.sectMap[".boot"]=new program.section;
Program.sectMap[".boot"]="BOOT";
BOOT也是platform中的memory
这样可以工作,我想问如果我设置一个函数的段为“.taskdata”,把“.taskdata”放到DDR2中,TASK3调用相关函数,TASK3空间中需要函数的空间吗?
如果TASK2,TASK3都调用这个功能函数,TASK2和TASK3的空间都是L2,是不是说不会调用DDR2中的函数,只是将函数复制到TASK2和TASK3空间中运行。