OpenEdv-开源电子网

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

iap在flash写入时卡死的问题

[复制链接]

1

主题

10

帖子

0

精华

新手上路

积分
39
金钱
39
注册时间
2019-8-20
在线时间
14 小时
发表于 2019-8-20 15:05:53 | 显示全部楼层 |阅读模式
1金钱
iap在flash写入时卡死的问题:
     iap_write_appbin(FLASH_APP1_ADDR,USB_USART_RX_BUF,applenth);//更新FLASH代码   
执行只一句是将进入void HardFault_Handler(void)硬件错误请问原子哥这可能是什么原因造成的,我是用的是stm32f1c8t6,64kb ROM,地址设置为0x08008000,bootloader大小为23kb左右


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

使用道具 举报

1

主题

10

帖子

0

精华

新手上路

积分
39
金钱
39
注册时间
2019-8-20
在线时间
14 小时
 楼主| 发表于 2019-8-20 15:26:40 | 显示全部楼层
网上有人提到可能是保存数据哪个数组太大,栈溢出,但是我定义的数组只有5k并且不在函数中,是全局的,应该没影响啊
回复

使用道具 举报

1

主题

10

帖子

0

精华

新手上路

积分
39
金钱
39
注册时间
2019-8-20
在线时间
14 小时
 楼主| 发表于 2019-8-20 16:37:05 | 显示全部楼层
STMFLASH_Write(fwaddr,iapbuf,i);查了下,就是在这个函数错误
回复

使用道具 举报

3

主题

51

帖子

0

精华

高级会员

Rank: 4

积分
530
金钱
530
注册时间
2017-7-25
在线时间
188 小时
发表于 2019-8-20 16:46:50 | 显示全部楼层
检查下字节对齐, buf地址是否4字节对齐
回复

使用道具 举报

1

主题

10

帖子

0

精华

新手上路

积分
39
金钱
39
注册时间
2019-8-20
在线时间
14 小时
 楼主| 发表于 2019-8-20 16:58:33 | 显示全部楼层
Ezel 发表于 2019-8-20 16:46
检查下字节对齐, buf地址是否4字节对齐

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;//偏移2个字节
                iapbuf[i++]=temp;       
                if(i==1024)
                {
                        i=0;
                        STMFLASH_Write(fwaddr,iapbuf,1024);       
                        fwaddr+=2048;//偏移2048  16=2*8.所以要乘以2.
                }
        }
        if(i)STMFLASH_Write(fwaddr,iapbuf,i);//将最后的一些内容字节写进去.  
}
用的原子程序,没有改过
回复

使用道具 举报

1

主题

10

帖子

0

精华

新手上路

积分
39
金钱
39
注册时间
2019-8-20
在线时间
14 小时
 楼主| 发表于 2019-8-21 11:25:09 | 显示全部楼层
更新,昨天因为是flash读写问题,c8t6每页只有1k,最后搞定了,但是又卡在了jump2app();                                                                        //跳转到APP.这个跳转函数,打断点调试发现一到这就HardFault_Handler错误循环,我把flash的app程序读出来也没有错误,中断向量也在app里边设置了,但还是进不去,能不能请大哥指点一番,谢谢啦
回复

使用道具 举报

1

主题

10

帖子

0

精华

新手上路

积分
39
金钱
39
注册时间
2019-8-20
在线时间
14 小时
 楼主| 发表于 2019-8-21 11:34:56 | 显示全部楼层
现在我发现一个问题
jump2app=(iapfun)*(vu32*)(appxaddr+4);                //用户代码区第二个字为程序开始地址(复位地址)       
usb_printf("jump:%x",jump2app);       
程序地址设置的0x08009500        ,但是这个语句后边出来就是0x080001cd这是不是就是出错的地方呢,函数指针指错了,这才导致硬件错误循环
回复

使用道具 举报

1

主题

10

帖子

0

精华

新手上路

积分
39
金钱
39
注册时间
2019-8-20
在线时间
14 小时
 楼主| 发表于 2019-8-21 20:29:30 | 显示全部楼层
zhuoolin 发表于 2019-8-21 11:34
现在我发现一个问题
jump2app=(iapfun)*(vu32*)(appxaddr+4);                //用户代码区第二个字为程序开始地址(复位 ...

谁帮我顶一顶啊,太难了我
回复

使用道具 举报

5

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
86
金钱
86
注册时间
2019-8-1
在线时间
25 小时
发表于 2019-9-16 23:11:27 来自手机 | 显示全部楼层
我也卡在iap了  例程好像有个错在sram运行 不用加4  结果改了卡死 但是他的例程正常了
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-9 05:40

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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