TI中文支持网
TI专业的中文技术问题搜集分享网站

OMAPL138 ARM端程序在线仿真可以访问DSP L2 RAM??

发现一个问题啊?为什么我在线仿真ARM的时候,可以修改DSP L2 RAM的内容呢?比如 memset下 DSP L2中的数据,然后再通过Memory查看,可以看到那段空间内容被修改了?

而当下载到板子上,再运行时,DSP L2中的数据不会再改变呢?

这个是CCS5.4的BUG?还是说在线仿真的时候,CCS可以做什么特殊操作?

Tony Tang:

应该是在用CCS仿真时,通过gel文件使能了DSP,你可以查看一下gel文件里的ontargetconnect函数里肯定调用了一个叫wakeup_dsp的函数,所以DSP的L2可以被访问。

而估计你的程序里没有主动使能DSP,所以独立运行时,访问不成功了。

把gel文件里的wakeup_dsp部分功能代码加到你的ARM程序里就可以了。

Mr.a.mike:

回复 Tony Tang:

你的意思?如果我操作DSP L2 RAM的代码只要写在 Wakeup DSP之后就可以访问了吗?不是说DSP L2对于ARM是不可见的吗?

我使用AISgen工具把ARM和DSP程序合并生成同一个AIS.bin,然后只要我的DSP程序是分配到L2 RAM上的,OMAP就无法引导成功。(挂仿真器看的情况,CPU指令在到处乱飞)。

但是当我的DSP程序是分配到Share RAM上时,AIS.bin引导就很成功,比如我在ARM端程序中和DSP程序中各自控制点灯什么的。

Tony Tang:

回复 Mr.a.mike:

#1.确切的说是在先要释放DSP module reset,DSP的L2才可被访问。

#2. 希望不是TI的工程师说的。换个思路,如果DSP的代码在L2上,若ARM不可见DSP RAM,那ARM如何加载DSP的代码呢?

Mr.a.mike:

回复 Tony Tang:

#1。此时唤醒DSP,而未设置(HOST1CFG)寄存器,那么此时唤醒DSP,会出现什么状况?

#2. 是否可以理解成为,要使用DSP L2 RAM,是否意味着,需要在ARM端程序中先唤醒DSP,然后在ARM里加载DSP代码至DSPL2中,再让DSP复位,修改(HOST1CFG)寄存器,再次唤醒DSP?

Tony Tang:

回复 Mr.a.mike:

 DSP的复位分为两步:

module reset控制DSP CPU的时钟,所以要释放才可以访问其片上RAM,这时可以加载DSP的代码了。
Local Reset控制DSP的运行,在这之前将HOST1CFG配置正确的DSP程序的入口地址即可。

tings jun:

回复 Tony Tang:

Tony,您好!

我发现omapl138的DSP L2 RAM 有两个,地址分别为0x0080,0000;0x1180,0000;

当我的程序用仿真器在0x0080,0000和0x1180,0000里仿真跑代码时,可以跑通;

当用串口烧写bin文件时,地址0x0080 0000这个例子就会出错,但是0x1180 0000的地址就没问题

我想知道,这个dsp的 L2 RAM的0x0080 0000是不是需要做一些配置,才能使用

Tony Tang:

回复 tings jun:

0x00800000是DSP的地址空间,0x11800000是系统的地址空间,从DSP外看L2只能从0x11800000访问。

用仿真器时,是在DSP上运行,从两上地址都是可以的。

用serial flash tools时,在L138上是运行在ARM上的,所以不能从0x00800000访问DSP的L2.

赞(0)
未经允许不得转载:TI中文支持网 » OMAPL138 ARM端程序在线仿真可以访问DSP L2 RAM??
分享到: 更多 (0)