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.

DSPLINK双核通信,DSP端执行行完DSPLINK_init()后,DSP处于reset状态。

TI专家、各位朋友:

        我通过CCS5.1调试DPSLINK双核通信,DSP端代码,我在main函数中进行DPSLINK的初始化(DSPLINK_init()),我发现DSPLINK_init()后的代码都没有执行到,不知道是执行DSPLINK_init()中还是执行完DSPLINK_init()后,DSP就处于了复位状态。如下图:

DSP端部分代码如下:


/*****OMAPL138 BSL HEADERS*****/
#include "include/types.h"
#include "include/evmomapl138.h"
#include "include/evmomapl138_gpio.h"
#include "include/evmomapl138_led.h"
#include "include/evmomapl138_pinmux.h"
#include "include/evmomapl138_switch_gpio.h"

/* ----------------------------------- DSP/BIOS Headers */
#include "std.h"
#include <sem.h>
#include <msgq.h>
#include <pool.h>
#include "log.h"
#include "sys.h"
#include "tsk.h"
#include "hwi.h"
#include "c64.h"

/* ----------------------------------- DSP/BIOS LINK Headers */
#include <dsplink.h>
#include <failure.h>

extern LOG_Obj trace ;
extern void GPIO_B0INT(void);
POOL_Obj Dummy_Pool[1] = {POOL_NOENTRY} ;
POOL_Config POOL_config = {Dummy_Pool, 1};
void Task0_Switch_Interrupt_Init();

void main (Int argc, Char * argv [])
{



Led_Init();

SWITCH_GPIO_INIT();

Led_D6_OFF();

/* Initialize DSP/BIOS LINK. */
DSPLINK_init () ;

Led_D6_ON();
}
void Task0_Switch_Interrupt_Init()
{

HWI_Attrs hwiAttrs_c6748_gpio ;

Uns hold ;
hold = HWI_disable () ;
HWI_eventMap (8,0x41);

hwiAttrs_c6748_gpio.intrMask = (1 << 8) ;
hwiAttrs_c6748_gpio.ccMask = 1 ;
hwiAttrs_c6748_gpio.arg = 0;
HWI_dispatchPlug (8,(Fxn)GPIO_B0INT,-1,&hwiAttrs_c6748_gpio) ;

C64_enableIER(C64_EINT8);
HWI_restore (hold);
}


 

  • 原码在目录dsplink\dsp\src\base\drv\dsplink.c,你也可以把这个文件加到你的工程里编译,可以单步调试。

    我怀疑是不是内存上两边有重叠的地方?因为这个函数里没有特殊的操作,主要是Cache的清理和一些初始化。