1
完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
由于篇幅和研究进度的限制,本文分为上下两部分:上部分为有线IAP下载的编写,下部分为添加无线模块以后的下载代码编写。
描述:stm32f103f8t6+Ymodem+Bootloader(有线下载)+keil 文中灰色底色的为摘自其他作者的文章,文章下附原文链接 笔者通过参考ST官方Bootloader代码和正点原子APP代码,得到了一份可以在stm32f103f8t6最小系统上运行的代码(Bootloader+APP)stm32f103f8t6最小系统上运行的代码(Bootloader+APP),代码测试成功截图如下: 项目来源 在项目开发过程中,通常会使用大量的杜邦线或类杜邦线导线作为连接线路。下载电路和电脑之间的插拔总是让人十分无奈:一方面插拔过程中时间的增加使得开发周期增长,另一方面,插拔过程中不可避免的会使相邻线路晃动,可能会使得电路中杜邦线松动,造成电路故障。 基于上述理由,是我萌发了使用无线下载的下载方式。 开始前的准备 硬件准备 考虑到单片机引脚、RAM、ROM和外设等资源,本项目中使用stm32f103f8t6单片机最小系统作为开发载体。 在进行单片机的IAP代码编写前,有一点需要尤为注意:电脑的USB端口数目。开发过程中电脑需要连接的USB硬件有鼠标、键盘、STlink(或其他下载器)、CH340串口共计4个USB口,其中由于STlink(或其他下载器)、CH340串口都连接在最小系统上,故两者必须相邻。为满足上述要求,一般需要外接USB扩展坞作为USB口的扩展。 编程前须知 本项目使用IAP方式编程,常用的单片机编程方式为ISP编程,两者区别已有前辈给出,这里直接复制过来给大家看 ISP和IAP的一些基本概念(作者:junlianzi)由于IAP编程程序在实际工作时单片机内有两套代码,故使用IAP编码的单片机内部程序flash存储空间相对来说需要更大。所以STC普通系列单片机(如stc89c5x)无法使用IAP程序。 个人理解:IAP程序中bootloader和APP程序在相互跳转时,两个程序中的主程序可各自视为一个普通之程序,运行完毕即释放所声明变量,但全局变量在跳转完毕后不被释放,因此请注意bootloader和APP程序中全局变量声明是否重复。此外程序中设置的外设(如串口),程序跳转后,跳转前的设置跳转后不被改动。 程序跳转 STM32 IAP 在线升级详解(作者:yx_l128125)项目中的常见问题 为什么要选用Ymodem 正点原子在做IAP教程时使用的传输方式为仅串口,但串口传输只能保证所传输的字节无误,但由于周围的电磁场和其他情况以及后续将要使用无线传输的下载方式,仅使用串口无法保证程序字节和字节之间的正确性。而在串口传输的基础上增加Ymodem传输协议则可以保证程序字节和字节之间的正确性。且Ymodem具有较高的误差兼容以及先发送程序大小,可有效避免APP文件过大带来的程序flash无用性擦除带来的程序flash不必要的寿命衰减。 Ymodem的传输工具 普通串口传输工具不具备Ymodem传输协议,因此应使用特定的软件。 SecureCRT具有Ymodem传输协议,建议使用。 Tera Term虽然也具有Ymodem传输协议,但笔者在测试过程中发现Tera Term在Ymodem时通信失败,疑似该软件本身存在问题。 APP烧录位置确定 对于stm32,可使用STM32 ST-LINKUtility读取芯片数据,比对数据位置,即可确定APP代码烧写位置是否正确。 Ymodem传输过程中传输错误的查找 Ymodem传输协议使得程序调试增加难度,在Ymodem中增加串口输出文字作为调试信息可能会影星Ymodem本身的正常传输;使用LED作为指示信号,又需要大量的LED灯,两者都不合适。 较为合适的方法是使用抓包工具,对电脑传输的信息抓包查看。笔者使用的抓包工具为Bus Hound(可在其官网找到有限制的免费版本)。 程序无法从Bootloader跳转到APP stm32官方为使单片机运行更加稳定,定义了诸多意外中断。如程序无法由Bootloader跳转到APP,可尝试将如下标记代码用与如下相同方式处理,应该就可以解决了。 程序由APP跳转到Bootloader出现问题 STM32F1xx IAP跳转App 后中断异常及解决(作者:苏墨随笔)便捷的Bootloader代码生成方式:(笔者未尝试) 搜寻资料时找到了下面的通用Bootloader代码生成方式,若不需要知道IAP原理的急需者,或许可以一试 使用 STM32 通用 Bootloader ,让 OTA 更加 Easy(作者:我夏了夏天)关于使用NRF24L01转USB模块避坑指南: 笔者原本打算使用NRF24L01作为无线下载的媒介,某宝上刚好有该产品,但由于个人疏忽,进坑了:NRF24L01转USB模块单次传输有效字节数:1-31字节,单次传输内容过小。这使得该模块无法作为IAP程序的无线传输工具!!! 最后 上述为参考网上各方所得,个人能力有限,若有错误,欢迎各位大神指正赐教。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1817 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1631 浏览 1 评论
1103 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
739 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1692 浏览 2 评论
1951浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
756浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
586浏览 3评论
605浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
568浏览 3评论
小黑屋| 手机版| Archiver| 德赢Vwin官网 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-30 20:54 , Processed in 1.191834 second(s), Total 76, Slave 60 queries .
Powered by 德赢Vwin官网 网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
德赢Vwin官网 观察
版权所有 © 湖南华秋数字科技有限公司
德赢Vwin官网 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号