【MPC5744P】S32DS烧录到98%无法继续下载程序

mpc5744p烧录到98%无法继续下载程序

ref :MPC5744 烧录一直停留在 98% 的解决方法

突然debug无法下载程序, 表现为右下角进度卡在98%, Console窗口信息如下

...
Loading programming algorithm ...
 
WARNING - Selected .PCP file has been modified. CRC16 = $5A63
Done.
CMD>VC
Verifying object file CRC-16 to device ranges ...
   block 00FA0000-00FA0007 ...
Ok.
   block 00FA0010-00FA0017 ...
Ok.
   block 01000000-0100026D ...

但这时烧录到RAM是没有问题的, 应该是flash有点问题

解决步骤

  • 从历程新建一个工程hello_world_mpc5744p, 编译测试烧录到ram没有问题
  • components添加flash_c55, 生成代码
  • 参考MPC5744 烧录一直停留在 98% 的解决方法
  • 添加代码到led初始化前面, 这样擦除完了led就会闪烁, 我们就知道擦除完成了
    status_t ret = STATUS_SUCCESS;    // 操作状态变量
    uint32_t buffer[1024];             // 缓存数组
    flash_block_select_t blockSelect; // 块选择
    flash_state_t opResult;
    // 禁用缓存 
    //DisableFlashControllerCache(FLASH_PFCR1, FLASH_FMC_BFEN_MASK, &pflash_pfcr1);
    //DisableFlashControllerCache(FLASH_PFCR2, FLASH_FMC_BFEN_MASK, &pflash_pfcr2);
    // 初始化 Flash
    ret = FLASH_DRV_Init();
    DEV_ASSERT(ret == STATUS_SUCCESS);
    // 不对 UTEST 块进行操作 ,直接上锁
    ret = FLASH_DRV_SetLock(C55_BLOCK_UTEST, 0x1U);
    if (STATUS_SUCCESS != ret)
    {
            return ret;
    }
    // 对要擦除的块解锁
    ret = FLASH_DRV_SetLock(C55_BLOCK_LOW, 0x00);
    if (STATUS_SUCCESS != ret)
    {
        return ret;
    }
    ret = FLASH_DRV_SetLock(C55_BLOCK_MID, 0x00);
    if (STATUS_SUCCESS != ret)
    {
        return ret;
    }
    ret = FLASH_DRV_SetLock(C55_BLOCK_HIGH, 0x00);
    if (STATUS_SUCCESS != ret)
    {
        return ret;
    }
    ret = FLASH_DRV_SetLock(C55_BLOCK_256K_FIRST, 0x00);
    if (STATUS_SUCCESS != ret)
    {
        return ret;
    }
    ret = FLASH_DRV_SetLock(C55_BLOCK_256K_SECOND, 0x00);
    if (STATUS_SUCCESS != ret)
    {
        return ret;
    }
    // 选择要擦除的块 
    // Low address space 是分区 0 和 1 ,共 4 块
    blockSelect.lowBlockSelect = 0xFU; 
    // Mid address space 是分区 2 和 3 ,共 2 块
    blockSelect.midBlockSelect = 0x2U; 
    // High address space 是分区 4 和 5 ,共 6 块
    blockSelect.highBlockSelect = 0x3FU;
    // 256KB address space 是分区 6 和 7 ,共 8 块
    blockSelect.first256KBlockSelect = 0xFFU;
    blockSelect.second256KBlockSelect = 0x0U;
    //g_usrCnt = 0U;
    // 进行擦除操作 
    ret = FLASH_DRV_Erase(ERS_OPT_MAIN_SPACE, &blockSelect);
    // 擦除指令操作成功 ,等待擦除完成
    if (STATUS_SUCCESS == ret)
    {
        // 直到退出擦除正在进行才可以退出此循环
        do
        {
            // 检查此时 falsh 的擦除状态
            ret = FLASH_DRV_CheckEraseStatus(&opResult);
        }while(ret == STATUS_FLASH_INPROGRESS);
    }
    if (STATUS_SUCCESS != ret)
    {
        return ret;
    }
    
    上面有三行注释代码, 从MPC5744 烧录一直停留在 98% 的解决方法拷贝出来是报错的, 直接注释掉发现也能用
  • led闪烁说明完成了, 这时下别的工程到flash就没问题了
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
MPC5744P是一种64位电子控制器单元(ECU)微处理器,由NXP半导体公司生产。这种微处理器主要用于车辆电子控制单元(ECU)和电动机控制器等嵌入式系统的开发。如果您需要进行MPC5744P相关软件的开发与调试,您可以通过以下几种方式进行下载: 1. 官方NXP软件下载:您可以访问NXP官网,从官方软件下载中心下载相关软件,包括S32 Design Studio IDE、CodeWarrior开发工具、LIN Stack和CAN Driver等。这些软件都可以支持MPC5744P开发和调试。 2. 第三方软件下载:除了官方软件之外,还有一些第三方软件可以支持MPC5744P开发和调试。常用的软件包括Wind River、Green Hills等。但是请注意,使用第三方软件进行MPC5744P开发时需要认真选择并验证合适的版本,以避免兼容性和稳定性问题。 3. 开源软件下载:MPC5744P还可以使用一些开源软件进行开发和调试,例如开放式自动化工具链GNU工具链和Eclipse集成开发环境等。这些开源软件提供了自由和灵活的开发环境以及较好的可重用性,同时还便于社区支持和持续更新。 总之,MPC5744P开发和调试需要使用特定的软件和工具,您可以通过官方软件下载、第三方软件下载和开源软件下载等方式选择合适的软件进行下载和使用。同时,您还需要根据具体的项目需求和开发环境进行相应的配置和优化,以实现高效和稳定的系统开发和调试。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值