This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

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

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

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

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

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

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

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

  • 你的意思?如果我操作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程序中各自控制点灯什么的。

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

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

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

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

  •  DSP的复位分为两步:

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

  • Tony,您好!

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

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

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

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

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

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

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