OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2713|回复: 1

[求助]STM32F030C8T6 BootLoader 烧录完APP后校验不对

[复制链接]

1

主题

6

帖子

0

精华

新手上路

积分
31
金钱
31
注册时间
2019-5-29
在线时间
7 小时
发表于 2019-6-29 16:47:29 | 显示全部楼层 |阅读模式
1金钱
我用c,配置如下:

boot配置

boot配置

地址分配

地址分配

**
  * @brief  擦除FLASH对应内容
  * @note   检查包头和校验值
  * @param  startAddr:擦除的起始地址
  * @param  flashSize:要擦除的大小
  * @retval 擦除结果
  *         SUCCEED,FAIL
  */
uint8_t erash_flash(uint32_t startAddr,uint32_t flashSize)
{
    uint8_t page_num,i;
    //如果擦除的地址在APP存储地址前面
    if(startAddr<APP_ADDRESS)
    {
        return FAIL;
    }
    //如果擦除的地址和EEPROM地址冲突
    if(startAddr+flashSize>INFOAREA_START_ADDRESS)
    {
        return FAIL;
    }
    FLASH_Unlock();
    FLASH_ClearFlag(FLASH_FLAG_EOP|FLASH_FLAG_WRPERR|FLASH_FLAG_PGERR);
    page_num=flashSize/FLASH_PAGE_SIZE;
    for(i=0;i<page_num;i++)
    {
        if(FLASH_ErasePage(startAddr+i*FLASH_PAGE_SIZE)!=FLASH_COMPLETE)
        {
            break;
        }
    }
    FLASH_Lock();
    if(i==page_num)
    {
        return SUCCEED;
    }
    else
    {
        return FAIL;
    }
}



/**
  * @brief  在指定地址写书指定长度的数据
  * @param  addr:写入的起始地址
  * @param  buf:写入的数据指针
  * @param  length:写入数据的长度
  * @note   length必须为偶数,否则返回失败
  * @retval 写入结果
  *         SUCCEED,FAIL
  */
uint16_t write_flash(uint32_t addr,uint8_t *buf,uint16_t length)
{
    uint16_t data=0;
    uint16_t i=0;
    if(length%2)
        return FAIL;
    if((addr+length)>(APP_ADDRESS+APP_FLASH_SIZE))
        return FAIL;
    if(addr%2)
        return FAIL;
    FLASH_Unlock();
    __disable_irq();
    for(i=0;i<length/2;i++)
    {
        data=buf[i*2]+(buf[i*2+1]<<8);
        if(FLASH_COMPLETE != FLASH_ProgramHalfWord(addr+i*2,data))
        {
            FLASH_Lock();
            __enable_irq();
            return FAIL;
        }            
    }
    FLASH_Lock();
    __enable_irq();
    return SUCCEED;
}

上面是相关的写,擦除函数,
校验如下:
2.png 3.png
最后程序下载成功,但是校验不通过,请高手帮看看,我哪里弄错了。
5.png

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2019-6-30 00:37:57 | 显示全部楼层
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-12 18:09

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表