主题:C2000WARE 中讨论的其他器件
工具/软件:
我使用 CPU1和 CM 上的自定义引导加载程序将应用程序下载到 CPU1和 CM 中。
根据 GUI 命令分支到应用程序时存在问题。
1、CPU1分支的应用正常运行、并执行 main 语句。(检查 Status ="init"的输出;)
2.停止在以 cm 为单位的 IPC_SYNC 处。
a. CPU1引导加载程序的应用程序分支代码
作废 JumpToApplication (作废)
{
sendDebugMessage ("jump command received\r\n");
IPC_SendCommand (IPC_CPU1_L_CM_R、IPC_FLAG0、IPC_ADDR_CORRECTION_ENABLE、
CM_SECTOR_JUMP、0、0);
IPC_waitForAck (IPC_CPU1_L_CM_R、IPC_FLAG0);sendDebugMessage ("跳转到应用程序");
FLASH_disableECC (FlashECC_Base);
_asm (" lb #0x090000");
}
b. CM 引导加载程序的应用程序分支代码
作废 JumpToApplication (作废)
{
FLASH_disableECC (FlashECC_Base);
void (* app_entry)(void)=(void (*)(void)) 0x00210001;
app_entry();
}
c. CPU1的应用程序主函数
void main (void)
{
interrupt_initModule();
Interrupt_initVectorTable();
SysCtl_setAUXClock (SysCtl_AUXPLL_ENABLE | SysCtl_AUXPLL_OSCSRC_XTAL |
SysCtl_AUXPLL_IMULT (20)| SysCtl_AUXPLL_FMULT_0 |
SysCtl_AUXPLL_DIV_1);
setupDnetGPIOs();
BOARD_INIT ();
configureAndReleaseCMToWait();
DEVICE_DELAY_US (5000);
releaseCMToApplication();
IPC_clearFlagLtoR (IPC_CPU1_L_CM_R、IPC_FLAG_ALL);
IPC_SYNC (IPC_CPU1_L_CM_R、IPC_FLAG31);
合成
状态="init";
}
d. CM 的应用程序主功能
内部 main (void)
{
cm_init();
IPC_registerInterrupt (IPC_CM_CPU1_R、IPC_INT0、IPC_ISR0);
INTERRUPT_REGISTERHandler (INT_TIMER0、&cpuTimer0ISR);
IPC_clearFlagLtoR (IPC_CM_CPU1_R、IPC_FLAG_ALL);
IPC_SYNC (IPC_CM_L_CPU1_R、IPC_FLAG31);
GPIO_writePin (DEVICE_GPIO_PIN_94、1);
}
=>要在 CM 的应用程序主函数中进行调试、请使用
GPIO_writePin (DEVICE_GPIO_PIN_94、1);
IPC_SYNC (IPC_CM_L_CPU1_R、IPC_FLAG31);
如果我这样放置、GPIO 94引脚将被输出、但是
IPC_SYNC (IPC_CM_L_CPU1_R、IPC_FLAG31);
GPIO_writePin (DEVICE_GPIO_PIN_94、1);
如果我这样放置、GPIO 94引脚将不会被输出。
查看这种情况、似乎在 IPC_SYNC (IPC_CM_CPU1_R、IPC_FLAG31)处停止;我的 IPC 设置是否出错???