OpenEdv-开源电子网

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

IAP升级程序,applenth问题

[复制链接]

2

主题

11

帖子

0

精华

初级会员

Rank: 2

积分
112
金钱
112
注册时间
2017-7-13
在线时间
36 小时
发表于 2018-9-17 16:14:05 | 显示全部楼层 |阅读模式
1金钱
在IAP程序中,运行到1时,oldcount是0,USART_RX_CNT是1,当运行到2时,oldcount还是0,但USART_RX_CNT变成2,oldcount就被赋值成了2,但下一次运行到1时,USART_RX_CNT还是2,它就进去了,理论上USART_RX_CNT要加到不再变化时才能进,但第2次就进去了,结果applenth得到了错误的代码长度,我用的和原子哥一样的代码(去掉了printf),没有正确的applenth,害得我只能手动添加代码长度,笑哭了 笑哭,求大神指点
QQ截图20180917161244.png


另外分享一个写IAP程序时发现的问题(已解决),我的BOOT程序中有Delay_Init();,这个延时用的是滴答定时器
void Delay_Init(void)
{
        SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8);
        fac_us = SystemCoreClock/8000000;
        fac_ms = (u16)fac_us*1000;
}
在BOOT程序的main函数中加了Delay_Init,跳转程序后程序直接跑飞,掉电后能跳转,但还是直接跑飞,结果我把Delay_Init注释掉,再跳转后就能正常执行了,APP里的中断也没有问题


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

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

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

使用道具 举报

2

主题

11

帖子

0

精华

初级会员

Rank: 2

积分
112
金钱
112
注册时间
2017-7-13
在线时间
36 小时
 楼主| 发表于 2018-9-18 09:02:56 | 显示全部楼层

在线仿真时发现的这个现象,因为用的例程里的,以为没问题,结果一直得不到正确的applenth,单步发现USART_RX_CNT值2次都是2
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2018-9-19 02:26:11 | 显示全部楼层
杀手锏 发表于 2018-9-18 09:02
在线仿真时发现的这个现象,因为用的例程里的,以为没问题,结果一直得不到正确的applenth,单步发现USAR ...

那为什么是2,你看过么
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

2

主题

11

帖子

0

精华

初级会员

Rank: 2

积分
112
金钱
112
注册时间
2017-7-13
在线时间
36 小时
 楼主| 发表于 2018-9-19 09:01:44 | 显示全部楼层
正点原子 发表于 2018-9-19 02:26
那为什么是2,你看过么

对哦,我应该去找这个值变化的原因,我一直纠结它在这里不对
回复

使用道具 举报

0

主题

26

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2115
金钱
2115
注册时间
2013-12-5
在线时间
166 小时
发表于 2018-10-8 17:21:19 | 显示全部楼层
我也碰到类似的问题了,楼主找到原因了么
回复

使用道具 举报

2

主题

11

帖子

0

精华

初级会员

Rank: 2

积分
112
金钱
112
注册时间
2017-7-13
在线时间
36 小时
 楼主| 发表于 2018-10-9 11:28:46 | 显示全部楼层
zjk103 发表于 2018-10-8 17:21
我也碰到类似的问题了,楼主找到原因了么

很可惜,没有,但我借鉴了别人的串口通讯,使用了空闲总中断来处理接收完成,使用传输完成中断来处理发送完成,这样实际效果非常好,中断的处理速度也块。考虑到实际情况,确实bin文件如果太大,一次性直接传输容易出错,我采用了YModem协议来进行分包传输,一包128字节,每包都处理好了再接收下一包,这样文件准确性得到的保证。希望对你有帮助
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-20 18:14

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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