嵌入式开发|STM32工程中添加Bootloader实现串口程序下载
前言
在产品开发中都会预留各种各样的程序升级的接口,为了防止程序出问题,可以及时的更新程序,如果设备没有在线升级怎么办。当然可以召回,或者给客户提供程序下载器,让用户自己进行程序升级,而且一个STM32的程序下载器最少也需要30块。通过串口下载应该是最好的方式,一个TTL转USB才几块钱。
实现方式
通过外部按键或者串口指令让程序进入bootloader就可以进行程序下载了,bootloader一直存在,即使升级出问题也可以再次升级。目前已经实现STM32F030C8T6的bootloader,使用Ymodem进行bin文件传输,bootloader支持shell命令行输入。flash占用8K以内,ram占用1.5K
效果展示
ls 指令查看支持的指令
sh >lscola shell commands:
help - cola shell help.
reboot - reboot
ls - ls
download - downloadsh >
程序下载
引脚定义: PA0 输入,默认下拉。PA9,PA10 串口 TX,RX
工具:secure CRT
1.将PA0接高电平,按下复位键进入bootloader。
2.终端里输入download回车, 然后将要下载的程序bin文件拖入选择send Ymodem,即可下载。
3.下载完成,PA0接低,reboot重启。
用户程序设置偏移
bootloader下载
烧录文件:程序下载
通过jlink将程序下载到0x8000000位置地址。
如有问题欢迎在评论区留言
嵌入式开发|STM32工程中添加Bootloader实现串口程序下载相关推荐
- rust做嵌入式开发_Rust 嵌入式开发 STM32 amp; RISC-V
Rust 嵌入式开发 STM32 & RISC-V 发布于 2020-04-03 11:07:06 本帖最后由 wuhanstudio 于 2020-4-3 11:58 编辑 更新地址: [m ...
- 嵌入式开发-STM32硬件SPI驱动TFT屏
嵌入式开发-STM32硬件SPI驱动TFT屏 这次用到的TFT屏 CubeMX设置 代码编写 增加的内容 需要注意问题 代码下载 这次用到的TFT屏 现在的TFT屏幕已经很便宜了,65536色屏幕,2 ...
- 【嵌入式开发-STM32】初识STM32
[嵌入式开发-STM32]初识STM32 文章目录 [嵌入式开发-STM32]初识STM32 一.什么是STM32 二.STM32的拓展 三.如何确定STM32选型 3.1.STM32的命名方法 3. ...
- java工程加包_Java工程中添加依赖jar包不起作用问题总结
Java工程中添加依赖jar包不起作用问题总结 此次总结两种方式的依赖问题 1 在Eclipse中添加依赖jar包不起作用问题 这种方式可能是Eclipse缓存,或者Eclipse还没有反应过来.例如 ...
- ios之Xcode工程中添加文件常用快捷键
1.Xcode某个工程中添加文件 有两种方式: 方式一:"command"+"n",弹出添加文件对话框. 方式二:在需要添加文件的工程目录下右键,选择" ...
- Revit开发 - “附加模块”中添加“外部工具”
在revit 2017中,点击"附加模块",发现缺少一个"外部工具"这个按钮.本文演示在"附加模块"中添加"外部工具"按 ...
- [转载]Java嵌入式开发之一-简介使用Java编写Palm OS程序的解决方案
Java嵌入式开发之一-简介使用Java编写Palm OS程序的解决方案 现在,使用Java语言为 Palm OS编写程序的领域还没有完全统一,并且也有许多程度上的差异,目前,市面上有好几种不同的可用 ...
- 学习笔记三(STM32串口程序下载新建工程模板)
STM32串口程序下载 STM32F4 的程序下载有多种方法:USB.串口.JTAG.SWD 等,这几种方式,都可以用来给STM32F4下载代码. 利用串口给STM32下载程序 STM32 的串口下载 ...
- 分享嵌入式开发使用过程中遇到的几个问题(MQX4.2,IAR,Kinetis K66)
一段题外话 这几天一直在忙着公司的任务,趁着有机会总结一下最近工作中遇到的一些问题,一来希望给遇到这类问题的童鞋提供一点思路,同时也作为一种记录,提倡互联网的分享精神. 正篇开始 问题1:IAR 编译 ...
- 嵌入式开发 | 软件项目中 Debug 和 Release 版本的差异
关注+星标公众号,不错过精彩内容 作者 | strongerHuang 微信公众号 | strongerHuang 很多集成开发环境(IDE),比如VS(VC).IAR等,在创建工程时都会自动生成有D ...
最新文章
- SpringMVC 运行过程
- 从eclipse中下载到手机的android程序总是旧的版本
- idea 线程内存_Java线程池系列之-Java线程池底层源码分析系列(一)
- 乘法器之四( 乘加器(Sum of multiplication))
- 扫盲了,RC,RTM,Beta等各个版本的意思
- C++ boost共享锁 unique_lock shared_lock
- 12.10上海交大PMP试题每日一题
- linux hping3命令,Linux中hping3命令起什么作用呢?
- 数据分析案例(6)淘宝电商数据客户价值分析
- 随着稻香河流继续奔跑 ——致2016
- Json.stringify()的用法
- Rsoft光波导软件基于七芯光纤波导耦合器模拟
- Banner是什么意思,网站banner设计与广告怎么做?
- 我也来谈谈《我不是药神》这部电影
- 如何在PC上运行Android系统?
- 电脑调试UC浏览器,或者本机浏览器
- iphone ipad等苹果设备30针数据线接口定义,大家可能有用
- 局域网内建立http server
- 图灵奖得主Bengio:深度学习不会被取代,我想让AI会推理、计划和想象
- 如何修改项目中Git远程仓库地址?