STM32存储器 — <3> STM32实现IAP(上位机和IAP程序设计)

来源:互联网 发布:百度seo站外优化 编辑:程序博客网 时间:2024/06/08 05:50

Notes Introduction

本连载笔记,记录了在STM32学习中对存储器的理解;描述了STM32存储器的结构划分,以及STM32存储器相关知识,能够获得对存储器的整体性认识;并能够顺利的付诸实践,达到真正的对存储器的认识+应用。

 

本连载共有三篇笔记,分别是:

《关于STM32的存储器》

能够了解STM32的存储器结构,及其结构设计由来;

能够明确自己所写的程序是放在什么地方,并且可以合法的随意放置;

能够知道STM32系统的启动相关;

STM32存储器知识的相关应用(IAPBit Banding)》

能够理解Bit-banding

一个简单IAP功能的整体设计;

能够IAPIn Application Programmable);

STM32实现IAP(上位机和IAP程序设计)》

上位机和IAP程序的通讯协议;

能够通过自制上位机(C#)进行IAP

 

 

< STM32实现IAP(上位机和IAP程序设计)>

If an error, please contact author, to be corrected.

For other uses, indicate the source, to express my recognition of the results.

Thank you.

 

 

在对STM32存储器结构及相关知识了解后,我们就可以进行IAP的设计了。

在上一篇笔记中,进行了一个简单的IAP程序结构,以及和User App程序的相互联系的系统设计。

本篇对IAP实现的细节进行了较为详细的论述,包括源码结构的设计;我们从上位机(PCC#)和下位机(MCUC)共同描述IAP功能的实现过程。

 

1 STM32IAP实现平台

IAP功能的实现需要两个方面(上位机和STM32上的IAP程序)的密切合作。因此,我们除了需要知道STM32芯片上的IAP程序结构,我们还需要了解上位机的程序结构,这样才能使上位机和STM32很好的相互工作。

下位机(指的是STM32构成的单片机系统):

本下位机系统使用C语言进行编程,项目功能是实现IAPIn 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功能,如图所示:

STM32存储器 <wbr>鈥 <wbr><3> <wbr>STM32实现IAP(上位机和IAP程序设计)

2 STM32和上位机的通讯协议

如何将更新程序的bin文件数据传输到STM32系统内部?

如何将串口接收到的一连串数据给解析出来,进行有效数据的写Flash

如何得知数据传输的开始?

又如何得知数据传输的结束?

……

以上的种种疑惑,都是我们必须要关心的问题;而这些问题都隐藏着一样的本质——如何获取PC端有用的信息?

对于如何获取有用信息,有几个问题需要考虑:

通过何种方式获取?——我们采用USART

何种数据才是有用的?——我们指定一个简单的协议;

又是如何实现IAP程序和APP程序的切换的;

在硬件上,USART的实现较为简单;我们重点在于协议的设计和理解;

3 STM32IAP程序的实现

1IAP通过USART和上位机通讯,实现数据的下发和在应用编程;如图:

STM32存储器 <wbr>鈥 <wbr><3> <wbr>STM32实现IAP(上位机和IAP程序设计)

 

2、上位机和STM32系统USART之间通过一个简单的协议进行连接;

当连续收到40xBB后,表示开始接收用户代码;

当连续收到40xEE后,表示结束接收用户代码;如图:

STM32存储器 <wbr>鈥 <wbr><3> <wbr>STM32实现IAP(上位机和IAP程序设计)

 

3IAP程序位于Flash启动的起始地点,判断相应标志,是更新程序,或是运行用户程序;IAP程序更新之后,设定标志,跳转到用户程序区去,完成IAP,实现新的用户功能;如图:

STM32存储器 <wbr>鈥 <wbr><3> <wbr>STM32实现IAP(上位机和IAP程序设计)

 

4 STM32—上位机程序的实现

如图,为一个简单的上位机界面:

STM32存储器 <wbr>鈥 <wbr><3> <wbr>STM32实现IAP(上位机和IAP程序设计)

 

上位机主要分为两个部分:

1、串口配置部分:

选择端口、波特率,和数据类型,点击USART Open按钮;

2、串口通讯部分:

通讯部分,可以通过三步进行一次IAP功能的实现;

A、发送起始字节——0xBBBBBBBB

B、发送用户代码——通过转换Hex文件获取

C、发送结束字节——0xEEEEEEEE

 

5 上位机和STM32实现IAP功能的注意

1、上位机和STM32系统需要有相对应符合的通讯协议;

2、上位机和STM32系统的设计,要考虑到程序处理时间;防止时间的因素而无法响应;

3、为提高可靠性和安全性,需要设计更为友好的通讯协议;

 

 

 

 

 

 

 

 

 

 

 

至此,关于《STM32实现IAP(上位机和IAP程序设计)》知识已经结束;

至此,关于STM32存储器知识等三篇笔记都已经结束。

完成STM32存储器知识过程中,一共参考了以下官方文档:

RM0008 Reference manual

Cortex-M3技术参考手册》

PM0042 Programming manualSTM32F10xxx Flash programming

AN2557 Application noteSTM32F10x in-application programming using the USART

等等;

另外也参考了很多无私网友的奉献,在此感谢。

 

关于我的STM32存储器知识共有三篇文章,分别是:

stm32的存储器》

STM32存储器知识的相关应用(IAPBit Banding)》

STM32实现IAP(上位机和IAP程序设计)》

 

如果有需要另外两篇篇笔记,可以联系我:kongst@163.com

 

如果有不足、需要改进的地方,请联系我:kongst@163.com

      

谢谢!

 

If an error, please contact author, to be corrected.

For other uses, indicate the source, to express my recognition of the results.

Thank you.

kongst@163.com

原创粉丝点击