专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
STM32
(添加了CRC和重发)分享一个自己写的IAP程序,基于mini,欢迎拍砖
2019-07-21 01:42
发布
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
站内问答
/
STM32/STM8
14075
49
1618
添加了CRC 和重复功能,帖子太长了,传到楼下出啦
注意使用的是keil5.11a
自己根据开发指南写的一个IAP程序。在mini板上成功跑一个app。因为RB是128K的flash,所以将rom分割为 27K 1K 100K。其中27K 用来存储IAP。1K 用来存储一些信息,目前暂未使用到。100K就是app用的啦。
IAP程序的大致流程是这样的,上电后,在5s内(实际测试发现大于5s,暂时不管这个误差
),轮询串口是否发送:updata;(update这个可以随意,保证:;中间有6个字母就好)。如果超时没有收到:update;那么程序跳转到app,如果没有app,或者app出错,红灯常亮。如果收到:update
;那么进入烧写程序。这时候,串口转为中断方式接收数据。
烧录形式是这样的。按照1K,1K大小烧录,需要对bin文件进行分割。开辟了一个串口缓存,大小为1K+8。发送格式是这样子的,
data_len_L data_len_H data(no more than 1K) index_L index_H CRC
index_L index_H CRC(4B)这六位暂时没用到,填充00,data_len为要写入数据长度,最大不会超过1K。
目前IAP编译后才7K,还可以加入更多功能,预计加入STM32的CRC。app的bin文件需要自己分割,可以使用winHex,然后使用
XCOM V2.0来发送,
,我准备写个上位机用来传输bin,这样就不用自己分割bin了。
欢迎各位,给建议,好丰富这个IAP。
另外,app的做法,请参考开发指南。
——————————————————————————————————————————————————————————————————————————————
刚刚画好的上位机UI,样子很挫,始终想不出好的界面样子
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
弄了几天,终于把上位机弄好了。qt写的。测试可以用。
写完最大的感受就是,让C++单身了。完全还是安装面向过程的方法写的。不多说,附图,附源码。
伪扁平化设计
。
另外,使用新版本的keil编译老版本出现一个报错,双击跳转到stm32F1xx.h,可能是重复定义
友情提示:
此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
49条回答
lijunlinv
1楼-- · 2019-07-24 09:22
精彩回答 2 元偷偷看……
加载中...
寒寒
2楼-- · 2019-07-24 13:46
回复【25楼】lijunlinv:
---------------------------------
感觉不用区分备份区和运行区。设运行区A和运行区B。假设本次使用运行区A,则升级时覆盖B区。升级完成后,重启使用B区,两个区切换使用。如果重启后不能正常运行则切换回A区。然后告诉服务器更新失败。另外,GPRS不用在bootload区吧,感觉这样有点冗余。当然容量足够就无所谓了。如果使用bootload模式下升级的话,设备就得有一段时间不能工作。不如在运行情况下更新。也许还可以保持部分外设正常工作。
加载中...
lijunlinv
3楼-- · 2019-07-24 17:32
嗯,A/B区的建议非常好,可以防止因为升级失败而无法工作。
不知道大侠是否有STM32 IAP工程共享一下,让我们这帮菜鸟学习一下?万分感谢!
加载中...
寒寒
4楼-- · 2019-07-24 18:58
回复【28楼】lijunlinv:
---------------------------------
没有,我就这个工程而已。最近实习没时间玩这些东西啊
加载中...
lijunlinv
5楼-- · 2019-07-24 21:05
好的,谢谢解答。我做好了放这里共享!
加载中...
lijunlinv
6楼-- · 2019-07-25 01:42
精彩回答 2 元偷偷看……
加载中...
首页
上一页
2
3
4
5
6
7
8
9
下一页
一周热门
更多
>
相关问题
STM32F4上I2C(在PROTEUS中模拟)调试不通的问题
6 个回答
芯片供应紧张,准备换个MCU,MM32L系列替换STM32L系列的怎么样?
7 个回答
STM32同时使用两个串口进行数据收发时数据丢包的问题
5 个回答
STM32F103串口通信死机问题
4 个回答
STM32WLE5CC连接SX1268在LoRa模式下能与 SX1278互通吗?
2 个回答
STM32开发板免费用活动
7 个回答
stm32 处理 DHT11占用太多时间,大家程序是怎么设计的
8 个回答
分享一个STM32单片机做的离线编程器代码
9 个回答
相关文章
ST公司第一款无线低功耗单片机模块有效提高物联网设计生产效率
0个评论
如何实现对单片机寄存器的访问
0个评论
通过USB用STM32片内自带Bootloader下载程序及注意事项
0个评论
欲练此功必先自宫之STM32汇编启动,放慢是为了更好的前行
0个评论
×
关闭
采纳回答
向帮助了您的网友说句感谢的话吧!
非常感谢!
确 认
×
关闭
编辑标签
最多设置5个标签!
STM32
保存
关闭
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
关闭
您已邀请
15
人回答
查看邀请
擅长该话题的人
回答过该话题的人
我关注的人
---------------------------------
感觉不用区分备份区和运行区。设运行区A和运行区B。假设本次使用运行区A,则升级时覆盖B区。升级完成后,重启使用B区,两个区切换使用。如果重启后不能正常运行则切换回A区。然后告诉服务器更新失败。另外,GPRS不用在bootload区吧,感觉这样有点冗余。当然容量足够就无所谓了。如果使用bootload模式下升级的话,设备就得有一段时间不能工作。不如在运行情况下更新。也许还可以保持部分外设正常工作。
不知道大侠是否有STM32 IAP工程共享一下,让我们这帮菜鸟学习一下?万分感谢!
---------------------------------
没有,我就这个工程而已。最近实习没时间玩这些东西啊
一周热门 更多>