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

F28377D的CPU2无法启动

现象如下: 参考例程,我将cpu1和cpu2的代码烧写入flash,断电重启后,发现CPU1运行正常,但是cpu2却无法运行,在cpu2的main中设置断点,发现没有进入到main函数中,请问我还有哪里没做对吗?cpu1使用2837xD_FLASH_lnk_cpu1.cmd,cpu2使用2837xD_FLASH_lnk_cpu2.cmd 附上代码

CPU1

int main(void)

{

InitSysCtrl(); //关WD,片外晶振,系统时钟设置为200MHz,外设时钟全开,SYSCLK=200MHz LSPCLK=50MHz

IPCBootCPU2(C1C2_BROM_BOOTMODE_BOOT_FROM_FLASH);

InitGpio(); //打开GPIO的LOCK开关,并将所有控制和数据寄存器清零,不包括上拉

DINT; //set INTM

InitPieCtrl(); //屏蔽PIE所有中断,ENPIE=0

IER = 0x0000;

IFR = 0x0000;

InitPieVectTable();//初始化PIE中断向量表,ENPIE=1

EINT;//clr INTM

ERTM;

while(1)

{

DELAY_US(20000); //20ms delay

}

}

CPU2

int main(void)

{

memcpy(&RamfuncsRunStart, &RamfuncsLoadStart, (size_t)&RamfuncsLoadSize);

InitSysCtrl(); //关WD,片外晶振,系统时钟设置为200MHz,外设时钟全开

// InitFlash();

DINT; //set INTM

InitPieCtrl(); //屏蔽PIE所有中断,ENPIE=0

IER = 0x0000;

IFR = 0x0000;

InitPieVectTable();//初始化PIE中断向量表,ENPIE=1

EINT; //clr INTM

ERTM;

while(1)

{

DELAY_US(20000); //20ms delay

}

}

HeiHei:

cpu2 不用再配时钟了吧

现象如下: 参考例程,我将cpu1和cpu2的代码烧写入flash,断电重启后,发现CPU1运行正常,但是cpu2却无法运行,在cpu2的main中设置断点,发现没有进入到main函数中,请问我还有哪里没做对吗?cpu1使用2837xD_FLASH_lnk_cpu1.cmd,cpu2使用2837xD_FLASH_lnk_cpu2.cmd 附上代码

CPU1

int main(void)

{

InitSysCtrl(); //关WD,片外晶振,系统时钟设置为200MHz,外设时钟全开,SYSCLK=200MHz LSPCLK=50MHz

IPCBootCPU2(C1C2_BROM_BOOTMODE_BOOT_FROM_FLASH);

InitGpio(); //打开GPIO的LOCK开关,并将所有控制和数据寄存器清零,不包括上拉

DINT; //set INTM

InitPieCtrl(); //屏蔽PIE所有中断,ENPIE=0

IER = 0x0000;

IFR = 0x0000;

InitPieVectTable();//初始化PIE中断向量表,ENPIE=1

EINT;//clr INTM

ERTM;

while(1)

{

DELAY_US(20000); //20ms delay

}

}

CPU2

int main(void)

{

memcpy(&RamfuncsRunStart, &RamfuncsLoadStart, (size_t)&RamfuncsLoadSize);

InitSysCtrl(); //关WD,片外晶振,系统时钟设置为200MHz,外设时钟全开

// InitFlash();

DINT; //set INTM

InitPieCtrl(); //屏蔽PIE所有中断,ENPIE=0

IER = 0x0000;

IFR = 0x0000;

InitPieVectTable();//初始化PIE中断向量表,ENPIE=1

EINT; //clr INTM

ERTM;

while(1)

{

DELAY_US(20000); //20ms delay

}

}

FENG SHE:

回复 HeiHei:

是的,里面有宏开关,CPU2里不做任何处理的。我不知道为什么烧下去,cpu2就是不运行,进不了main,我用ccs烧写的

现象如下: 参考例程,我将cpu1和cpu2的代码烧写入flash,断电重启后,发现CPU1运行正常,但是cpu2却无法运行,在cpu2的main中设置断点,发现没有进入到main函数中,请问我还有哪里没做对吗?cpu1使用2837xD_FLASH_lnk_cpu1.cmd,cpu2使用2837xD_FLASH_lnk_cpu2.cmd 附上代码

CPU1

int main(void)

{

InitSysCtrl(); //关WD,片外晶振,系统时钟设置为200MHz,外设时钟全开,SYSCLK=200MHz LSPCLK=50MHz

IPCBootCPU2(C1C2_BROM_BOOTMODE_BOOT_FROM_FLASH);

InitGpio(); //打开GPIO的LOCK开关,并将所有控制和数据寄存器清零,不包括上拉

DINT; //set INTM

InitPieCtrl(); //屏蔽PIE所有中断,ENPIE=0

IER = 0x0000;

IFR = 0x0000;

InitPieVectTable();//初始化PIE中断向量表,ENPIE=1

EINT;//clr INTM

ERTM;

while(1)

{

DELAY_US(20000); //20ms delay

}

}

CPU2

int main(void)

{

memcpy(&RamfuncsRunStart, &RamfuncsLoadStart, (size_t)&RamfuncsLoadSize);

InitSysCtrl(); //关WD,片外晶振,系统时钟设置为200MHz,外设时钟全开

// InitFlash();

DINT; //set INTM

InitPieCtrl(); //屏蔽PIE所有中断,ENPIE=0

IER = 0x0000;

IFR = 0x0000;

InitPieVectTable();//初始化PIE中断向量表,ENPIE=1

EINT; //clr INTM

ERTM;

while(1)

{

DELAY_US(20000); //20ms delay

}

}

Seven Han:

你好,你看下这个帖子:

http://www.deyisupport.com/question_answer/microcontrollers/c2000/f/56/t/119287.aspx

里面还有其他的帖子,希望能帮助到你。

赞(0)
未经允许不得转载:TI中文支持网 » F28377D的CPU2无法启动
分享到: 更多 (0)