当前位置:网站首页>1319_STM32F103串口BootLoader移植
1319_STM32F103串口BootLoader移植
2022-08-04 21:22:00 【grey_csdn】
全部学习汇总: GreyZhang/g_stm32f103: some hack for stm32f103 (github.com)
最近用了一段时间的串口,感觉在调试方面非常有帮助。我也反复对比Arduino,其实Arduino的流行我觉得开发以及调试环境简单是其中一个很重要的原因。Arduino本身有一个还比较好用的BootLoader,不管怎么说,至少我在使用的时候没有发现过它的问题。我觉得,加强版的STM32F103其实也可以加一个BootLoader,从此逐渐扔掉调试器。
我在网络上找到了STM32Duino,这个后面我也会尝试用一下。同时也找到了一个串口BootLoader,我觉得串口BootLoader应该是一个比较干脆的方案。
我找到的开源项目链接: ferenc-nemeth/stm32-bootloader: UART bootloader for STM32 microcontroller. (github.com)
这个项目的功能开发直接基于STM32的SDK,因此如果使用ST的开发工具做一个迁移的话非常简单。我使用了STM32 CubeIDE来做了这个迁移。整个移植几乎全都是复制替换,再加上几个管脚信息的修改等。
首先,这里的修改是把最初的时钟源切换成晶振。其实,针对BootLoader来说,这个修改改不改都行,尤其是自己hack的情况下。
这里的修改,主要是为了能够支持调试功能。
这里开启了一个串口的功能,这个也是接下来进行BootLoader传输的通信方式。
其他的暂且不看了,只是几个LED灯或者管脚配置,都比较简单。
我使用了一个STM32F103的板子,直接使用这个板子进行调试还是很简单的。几个文件拷贝,拿来主义即可。
上面的6个文件是来自于前面的链接的。
这个是主函数中的初始化以及循环的一部分,我这里暂时没有全抄,目的是想默认进BootLoader,方便我调试。
这里增加的逻辑是为了能够有几秒钟的时间,选择是否进入BootLoader的刷写模式。
这几个配置是我编译成功后又改的,我发现目前的BootLoader的Flash占用还是很大的,后面可能有一个优化项。
编译成功后的提示信息,可以看出来资源占用不少。保险起见,我先给BootLoader分配了12KB的Flash。
这个是连接上串口调试工具的效果。这里需要说明一下,我试了很多个串口工具,花了大量的时间去调试代码。最后发现不同的串口工具行为不同,从链接中找到的这个是符合设计协议的要求的。
这个是烧写的时候的交互界面。
我用调试器查看了存储信息,现在确认BootLoader已经工作了。但是现在遇到了跳转之后APP进入了Hard Fault的问题。接下来还得去做一个进一步的排查,但是这个基础的传输以及烧写流程算是调试过了。
边栏推荐
猜你喜欢
Chapter7 : Network-Driven Drug Discovery
如何一键重装Win11系统 一键重装系统方法
[Teach you to use the serial port idle interrupt of the STM32HAL library]
【一起学Rust | 进阶篇 | Service Manager库】Rust专用跨平台服务管理库
Yolov7:Trainable bag-of-freebies sets new state-of-the-art for real-time objectdetectors
27. Dimensionality reduction
Win11如何设置软件快捷方式?
Android 面试——如何写一个又好又快的日志库?
88. (the home of cesium) cesium polymerization figure
宝塔实测-搭建中小型民宿酒店管理源码
随机推荐
宝塔实测-搭建中小型民宿酒店管理源码
2022年江苏省大学生电子设计竞赛(TI杯)B题 飞机 省级一等奖记录 “一个摆烂人的独白”
【uiautomation】微信好友列表获取(存储到txt中)
STM32MP157A驱动开发 | 01- 板载LED作为系统心跳指示灯
Pinduoduo open platform order information query interface [pdd.order.basic.list.get order basic information list query interface (according to transaction time)] code docking tutorial
PRIMAL: Pathfinding via Reinforcement and Imitation Multi-Agent Learning 代码解析
如何根据“前序遍历,中序遍历”,“中序遍历,后序遍历”构建按二叉树
for 循环中的 ++i 与 i++
Data warehouse (1) What is data warehouse and what are the characteristics of data warehouse
88.(cesium之家)cesium聚合图
[2022 Nioke Duo School 5 A Question Don't Starve] DP
知识分享|如何设计有效的帮助中心,不妨来看看以下几点
PCBA方案设计——厨房语音秤芯片方案
【SQL之降龙十八掌】01——亢龙有悔:入门10题
【手把手教你使用STM32HAL库的串口空闲中断】
Red team kill-free development practice of simulated confrontation
开发deepstram的自定义插件,使用gst-dseaxmple插件进行扩充,实现deepstream图像输出前的预处理,实现图像自定义绘制图(精四)
dotnet delete read-only files
Android 面试——如何写一个又好又快的日志库?
8 年产品经验,我总结了这些持续高效研发实践经验 · 协同篇