OpenEdv-开源电子网

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

STM32F103C6T6 IAP程序flash按照1K写出错

[复制链接]

6

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
62
金钱
62
注册时间
2018-3-21
在线时间
16 小时
发表于 2018-11-6 16:45:34 | 显示全部楼层 |阅读模式
4金钱
IAP程序地址0x08000000——0x08003000,APP程序地址0x08003000——0x08007000,IAP和APP分别用SWD烧写进去后IAP能够正常运行跳转,APP正常工作。但是在IAP模式下,通过IAP升级就出错了。分析问题出在IAP的FLASH烧写部分。因为APP程序14K左右,C6T6的SRAM只有10K。所以写了上位机每次1K1K的发送数据,对应的写flash程序修改如下:
u32 FlashAdd=0x08003000;
u8 count=0;
if((((*(vu32*)(0X20001000+4))&0xFF000000)==0x08000000)||(count!=0))
{iap_write_appbin(FlashAdd+count*1024,USART_RX_BUF,applenth);  
count++;

}

iap部分如下:
u16 iapbuf[512];  
void iap_write_appbin(u32 appxaddr,u8 *appbuf,u32 appsize)
{
        u16 t;
        u16 i=0;
        u16 temp;
        u32 fwaddr=appxaddr;
        u8 *dfu=appbuf;
        for(t=0;t<appsize;t+=2)
        {                                                    
                temp=(u16)dfu[1]<<8;
                temp+=(u16)dfu[0];          
                dfu+=2;//&#198;&#171;ò&#198;2&#184;&#246;×&#214;&#189;ú
                iapbuf[i++]=temp;            
                if(i==512)
                {
                        i=0;
                        STMFLASH_Write(fwaddr,iapbuf,512);       
                }
        }
        if(i)STMFLASH_Write(fwaddr,iapbuf,i);
}


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

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2018-11-7 02:02:46 | 显示全部楼层
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-21 13:11

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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