STM32实现IAP“>STM32存储器 — STM32实现IAP
在上一篇笔记中,进行了一个简单的IAP程序结构,以及和User App程序的相互联系的系统设计。
本文引用地址:https://www.eepw.com.cn/article/201611/322624.htm本篇对IAP实现的细节进行了较为详细的论述,包括源码结构的设计;我们从上位机(PC—C#)和下位机(MCU—C)共同描述IAP功能的实现过程。
1 STM32的IAP实现平台
IAP功能的实现需要两个方面(上位机和STM32上的IAP程序)的密切合作。因此,我们除了需要知道STM32芯片上的IAP程序结构,我们还需要了解上位机的程序结构,这样才能使上位机和STM32很好的相互工作。
下位机(指的是STM32构成的单片机系统):
本下位机系统使用C语言进行编程,项目功能是实现IAP(In Application Programming);
下位机使用IAR Embedded Workbench for ARM 6.10 Kick start开发环境;
使用STM32F103C8-PKT开发板进行调试和验证;
上位机(指的是PC构成的PC系统):
本上位机系统使用C#语言进行编程,项目功能是配合下位机实现IAP;
上位机使用Visual Studio 2008开发环境;
使用一般的PC机进行调试和验证;
上位机和下位机通讯(串口通讯):
上下位机之间通过串口进行通讯;
上位及通讯一定的通讯协议将需要更新的程序通过串口传输给IAP程序,再由IAP程序将数据写到用户的Flash区域;从而达到IAP功能,如图所示:
2 STM32和上位机的通讯协议
如何将更新程序的bin文件数据传输到STM32系统内部?
如何将串口接收到的一连串数据给解析出来,进行有效数据的写Flash?
如何得知数据传输的开始?
又如何得知数据传输的结束?
……
以上的种种疑惑,都是我们必须要关心的问题;而这些问题都隐藏着一样的本质——如何获取PC端有用的信息?
对于如何获取有用信息,有几个问题需要考虑:
通过何种方式获取?——我们采用USART;
何种数据才是有用的?——我们指定一个简单的协议;
又是如何实现IAP程序和APP程序的切换的;
在硬件上,USART的实现较为简单;我们重点在于协议的设计和理解;
3 STM32—IAP程序的实现
1、IAP通过USART和上位机通讯,实现数据的下发和在应用编程;如图:
2、上位机和STM32系统USART之间通过一个简单的协议进行连接;
当连续收到4次0xBB后,表示开始接收用户代码;
当连续收到4次0xEE后,表示结束接收用户代码;如图:
评论