F28377D双核DSP DELAY_US()进入非法中断

          DELAY_US()函数宏定义在F2837xD_Example.h中,实际调用的是F28x_usDelay()函数,这个函数是TI提供的库函数,若工程中使用了基于FLASH的cmd文件,这个函数将被加载到FLASH中,但需要复制到RAM中运行。

        复制相关函数到RAM区的函数memcpy(&RamfuncsRunStart, &RamfuncsLoadStart, (size_t)&RamfuncsLoadSize)在F2837xD_SysCtrl.c中,由函数InitSysCtrl()调用,且这部分语句依赖宏定义条件语句#ifdef _FLASH.  故DELAY_US()正常运行,需在工程中增加预定义_FLASH,且程序中调用函数InitSysCtrl()。

        在F28377D单核CPU1程序中,按上述设置,可正常使用DELAY_US()函数。在开发双核程序时,CPU2使用DELAY_US()函数又开始进入非法中断。经查,CPU2程序中没有进行系统初始化,即未调用函数InitSysCtrl(),导致DELAY_US()未能成功复制到RAM中。在CPU2程序中增加代码:

#ifdef _FLASH
    //
    // Copy time critical code and Flash setup code to RAM. This includes the
    // following functions: InitFlash()
    //
    memcpy(&RamfuncsRunStart, &RamfuncsLoadStart, (size_t)&RamfuncsLoadSize);
    InitFlash();
#endif

问题解决。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值