STM32F103终端设备远程程序升级程序
- 格式:doc
- 大小:179.50 KB
- 文档页数:17
MINI STM32F103核心板串口下载程序教程
1,先安装usb转串驱动--PL2303_driver_xp_win7_8.zip(久经考验驱动程序强烈建议你安装速度快,稳定;)
2,(1)默认BOOT0(BT0),BOOT1(BT1)设置到0(GND);
(2)将MINI USB口(标注USB-232字样插座)通过USB线连到电脑上,
(3)按下SW按键,电源Pwr灯会亮;
(4)安装USB转串设备;
3,电脑设备管理器,举例是COM4,如果是COM3下面也应选COM3:
4,打开mcuisp.exe下载软件;
选择开发板上USB转串口生成COM4:
5,选择下载波特率可以设置最大460800,
6,打开要编程的软件
软件设置选择下图2—5;
选择要编程调试文件选下图1
7,点击开始编程按钮(如果设置都对,点击开始编程按钮,紧接着按下开发板上的复位按键—偶尔出现的),一切搞定。
stm32f103 bootload原理STM32F103是一款基于Cortex-M3内核的微控制器,具有丰富的外设和高性能的计算能力。
在实际应用中,常常需要对STM32F103进行固件更新或更改,以实现新功能或修复已知问题。
为了实现这一目标,STM32F103具备了bootloader(启动加载器)功能,即可以通过引导加载器进行固件的更新。
本文将以STM32F103的bootloader原理为主题,详细讲解其实现过程。
一、什么是bootloader?在计算机领域,bootloader是一种可以加载操作系统或其他应用程序的程序。
它位于系统内存的固定位置,并在系统启动时执行。
相似地,STM32F103的bootloader也是一种程序,它位于芯片内部的固定位置,并在芯片上电启动时执行。
STM32F103的bootloader专门用于加载和烧录新的固件。
二、bootloader的功能1. 固件更新:STM32F103的bootloader使得可以通过各种方式,如串行端口、USB、以太网等,将新的固件烧录到芯片内部的闪存中,并更新原有的固件。
2. 故障修复:当出现问题导致原有的固件无法正常运行时,通过bootloader 可以重新烧录固件,以修复问题。
3. 调试功能:通过bootloader,可以在运行时上传代码和调试信息,方便开发人员进行调试和验证。
三、bootloader的实现原理1. 前提条件:为了实现bootloader功能,首先需要将bootloader程序烧录到STM32F103芯片内部的闪存中,并保证固件的启动顺序正确。
一般来说,bootloader程序的入口地址为0x08000000,而应用程序的入口地址为0x08002000。
2. 硬件连接:为了与外部设备进行通信,需要将STM32F103的串口、USB或以太网等接口与外部设备相连,以实现数据传输。
3. bootloader程序逻辑:bootloader程序首先进行固件检测,判断当前是否需要更新固件。
STM32IAP固件升级(⼀)章节说明STM32 IAP固件升级实验分为⼀下的章节(加粗的字体是本章节的内容):五、STM32 IAP程序的设计六、上位机的程序的编写⼀、Flash区域的划分1.区域划分实验使⽤的是 STM32F103VET6型号的MCU。
这个单⽚机的型号的内部flash的⼤⼩是512Kb, RAM的⼤⼩是64Kb。
因为⼀般使⽤的都是flash的启动⽅式(即flash 的起始地址0x0800 0000被映射到0x0000 0000。
STM32的启动⽅式可以查看《STM32中⽂参考⼿册》)所以flash的区域划分如下:2. flash 分区说明0x0800 0000到0x0800 b7FF地址的flash块划分给bootloader,⼤⼩是46kb0x0800 B800到0x0800 BFFF的flash块划分为参数表(parameters),⼤⼩是2Kb0x0800 C000到0x0804 3FFF的flash块划分为应⽤程序区 (application),⼤⼩是224Kb0x0804 4000到0x0807 BFFF的flash块划分为程序升级区 (update region),⼤⼩跟应⽤程序区⼀样 224kb0x0807 C000到0x0807 FFFF的flash块划分为固件区(firmware),⼤⼩是16Kb3. 每个分区作⽤bootloader启动加载程序,主要⽤来加载和启动应⽤程序,还有更新应⽤程序parameters主要⽤来记录信息,bootloader 和 application 的信息交互application应⽤程序区,主要⽤来实现所需要的业务的程序update region程序更新区,主要存放更新下载的程序,当然也可以直接下载到application区,但是如果更新失败了,应⽤程序就不能执⾏了。
所以单独划分⼀块区域,存放更新下载的序,更新完后再覆盖到application然后复位运⾏firmware固件区,主要存放⼀些函数接⼝,⽤户可以通过函数指针直接调⽤。
基于STM32F4控制器的程序远程下载的实现
袁三男
【期刊名称】《上海电力学院学报》
【年(卷),期】2013(029)003
【摘要】介绍了STM32F4控制器的特性及启动和程序下载的方式.提出了用软件方式更新下载应用程序的方法,弥补了下载程序需要硬件下载器的缺陷.设计并实现了STM32F4启动程序,以及使用该软件下载器时必须对应用程序进行包括参数配置、中断向量表的重置等的修改,实现了应用程序的远程下载功能.
【总页数】5页(P253-256,270)
【作者】袁三男
【作者单位】上海电力学院电子与信息工程学院,上海200090
【正文语种】中文
【中图分类】TP274
【相关文献】
1.终端设备远程下载程序的实现方法 [J], 郑连清;余红欣;刘和平;周念成
2.MSP430微控制器讲座(三)如何实现程序的远程监控及在线升级 [J], 雷奥
3.单片机程序远程下载的实现 [J], 王善华;徐爱华
4.基于P89C51RD2单片机系统远程程序下载的实现 [J], 马一兵
5.基于TMS320F2812的以太网-CAN网络远程程序下载的实现 [J], 刘憾宇;余岳;胡凯凯
因版权原因,仅展示原文概要,查看原文内容请购买。
STM32 F205 VB在远程系统升级中的应用丁鹏飞;法林【摘要】To against the problems in remote upgrading of the embedded system, e. g. pause operation of the system, the security of upgrade cannot be guaranteed and upgrade failure, etc. , the remote upgrading system based on STM32F205VB processor has been designed. The remote system upgrade codes are received through the GPRS module, and stored in internal Flash memory. Having been received the upgrade codes, the upgrade flag is set, and the system is restarted. When the upgrade flag is detected after system restart, the upgrade code is written into program memory area by the system code upgrade program and the upgraded application is running. This remote upgrade technology satisfies the real time requirement during upgrading process and improves the reliability of remote upgrade.%针对嵌入式系统远程升级过程中暂停运行、升级的安全性无法保障及升级失败等问题,设计了基于STM32F205VB处理器的远程升级系统。
基于STM32的充电桩系统远程升级设计
张思聪;胡社教
【期刊名称】《软件导刊》
【年(卷),期】2017(016)007
【摘 要】随着嵌入式设备的广泛应用,对嵌入式设备程序升级的要求也越来越高.在
探讨应用编程(IAP)原理的基础上,设计一种基于STM32的充电桩系统远程升级方
案.系统阐述了在应用中编程的技术原理以及升级流程,并通过TFTP方案实现了充
电桩固件远程升级.实际应用表明,该方案具有较高的应用价值和推广价值.
【总页数】4页(P77-80)
【作 者】张思聪;胡社教
【作者单位】合肥工业大学 汽车工程技术研究院;合肥工业大学 计算机与信息学院,
安徽 合肥 230009
【正文语种】中 文
【中图分类】TP319
【相关文献】
1.基于STM32的远程升级系统的设计 [J], 温世坚;张伟波
2.基于STM32F103C8T6单片机的电动车智能充电桩计费系统设计 [J], 李丽颖;
张金花;佘勃;彭静;张礼睿
3.基于STM32的三相交流充电桩控制系统设计 [J], 盛杰;郭春林;杨洪旺
4.基于STM32的充电桩系统远程升级设计 [J], 张思聪[1];胡社教[2]
5.基于stm32的智能充电桩嵌入式控制系统设计 [J], 张尧;朱浩楠
因版权原因,仅展示原文概要,查看原文内容请购买
利用WiFi通信方式的车载终端远程软件升级设计详解引言随着对系统功能、性能要求的不断提高,或为了消除缺陷,用户常常需要对嵌入式终端设备软件进行升级。
目前嵌入式终端软件升级方法有专用工具烧写、在系统编程(ISP)和在应用编程(IAP)等。
前两种方式需要专门的人员到达现场、甚至拆卸设备才能进行软件升级。
IAP方式可由开发人员根据实际应用进行灵活设计,例如使用串口升级、USB升级等。
由于车载终端具有移动性、分布广泛、无法集中召回等特点,传统软件升级方案显得束手无策。
远程软件升级方案能够为系统维护提供极大的方便,目前主流使用基于GPRS的IAP 方式,但通常需要支付给运营商一定的费用。
根据某单位车辆管理系统的实际情况,本文设计出一种基于WiFi的远程软件升级方法。
具有简单、便捷、可靠、成本低等优点。
1 系统原理系统结构如图1所示。
该单位有若干分部,每个分部独立管辖所属的车辆,每个车辆装载一套终端,用于记录车辆行驶信息。
当车辆外出执行任务及返回经过车场门口时,与车场门口的数据采集设备通过WiFi进行数据交互。
各分部数据采集设备连接至互联网与总部进行数据交互。
终端设备MCU采用STM32F107芯片,该芯片是意法半导体公司基于ARM CortexM3的32位嵌入式处理器,主频达72 MHz、90DMIPS。
它具有256 KB闪存程序存储器、20KB 的数据存储器及64 KB RAM。
外围接口丰富,价格仅与8位单片机相当,性价比极高。
WiFi模块采用RedPine公司的RS9110-N-11-02模块,该模块通过SPI接口与MCU通信。
RS9110-N11-02模块为IEEE 802.11b/g/n WLAN设备,集成MAC、基带处理器、幅值可调RF收发器、频率参考和天线等。
硬件模块嵌入了网络协议栈、WLAN协议和配置功能,构成一个完整的802.11n WLAN解决方案。
系统软件升级工作过程如下:①通过以太网把编译好的新软件传输到各分部数据采集设备上;。
1.STM32F103终端设备远程程序升级程序 2014-4-17 (1)把STM32F103的FLASH 分成2部分,0x08000000~0x08003fff,是IAP程序; 00x08004000~ ,是APP程序; (2)硬件机构:内有GSM模块(移远M35),作为远程通信用。
(3)更详细,得到IAR 项目文件:stm32f103远程程序升级程序.rar,联系QQ:785313554 王昌世 2.程序结构
3.主程序 /******************** (C) COPYRIGHT 2008 STMicroelectronics ******************** * File Name : main.c * Author : wcs * Version : V2.0.1 * Date : 03/18/2011 * Description : Main program body ******************************************************************************** * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. * AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, * INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE * CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING * INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. *******************************************************************************/
/* Includes ------------------------------------------------------------------*/ #include "stm32f10x.h" #include "STM32_Init.h" #include "GrobalVariable.h" #include "Grobalfunction.h" #include "gsm.h"
#include "Flash.h" #include "IPD_Process.h"
#include "Usart.h" #include "SMS.h" u32 TempCounter;
/////About GSM//WCS//2011-3-22 u16 GSMReceCount;
u16 Timer20msCount; //////u8 AllGSMInitialAT_Flag;//2014-1-22 u8 cmti; u8 CmtiFlag; u8 IpdFlag; u8 ipd; u8 TcpFlag; u8 CIICRFlag;//2011-4-24//wcs char signal[3];//GSM信号状态. char bat[4];//电池电量状态. char DeviceNO[12]; char nowadmin[19],admin[16],admin1[16],admin2[16],admin3[16],admin4[16]; char mima[7]; char DN[28];////"www.iova.in";//HYT char DN2[28];////"www.iova.in";//HYT char ip[16];//220.231.180.37 char port[7]; char apn[26];
char apn_user[26];//最长25位apn用户名. char apn_mima[12];//最长11位apn密码.
///2013-4-12 char DeviceSIM_CardNO[12]; char USER_HandsetNO[12];
s8 zone; u8 ProgramUpdataFlag; u8 GSMBand; u8 GSM_All_AT_Flag;//GSMAllATFlag; //2013-12-20 u8 WarrantFlag; u32 PlatformDataSendWDG;///wcs//2012-4-16 u8 GSM_SignalAbortFlag;///wcs//2011-4-26 u8 CheckGSMSignalTimer;///wcs//2011-4-26 u8 TcpSendAbortCounter; u8 LoginPlatformFlag; char apn[26]; char apn_user[26];//最长25位apn用户名. char apn_mima[12];//最长11位apn密码. u8 CSQ_V;
u8 GSM_SignalLowFlag; //wcs//2011-6-2 u8 QuickFlashTime;//wcs//2011-6-2 u8 CheckGSMSignalTimer;//wcs//2011-4-22 long long xyz; /////<--About GSM//WCS//2011-3-22
/////-->About STM32//WCS//2011-4-24 ///#define USART_CR1_UE ((unsigned long)0x00002000)//OPEN #define USART_CR1_UE ((uint16_t)0x2000) /*!< USART Enable */ ////#define USART_CR1_UD ((unsigned long)0x00000000)//cLOSE
u8 temp_count; u8 MainWhileFlag; u16 MainWhileWatchDog;
u8 ProgramAbortCounter; char GPS_Signal[2]; char T_EnterSend[3]; char T_Send[3];
u8 GPSEffectFlag2;//wcs//2011-8-4 ///u16 AccJudgeTimer;
///For program safe u8 ReadtPass0TimeFlag;
//For GSM WORK SAFE//WCS//2011-8-29 u8 GSM_ReportFlag; u16 GSM_SWDG_Timer;//6 minutes ///About heart jump u8 SendHeartJumpFlag;//wcs//2012-4-17 u16 HeartJumpTimer;
////u8 RepairSendingTimer; u8 CiicrAbortCounter;//wcs//2011-11-17 u8 SecondCount;//50*20=1000(ms)=1s;
//2013-4-22 //About LED u8 BD_LED_FlashStatus; u8 GSM_LED_FlashStatus;
u8 BD_LED_FlashTimer; u8 GSM_LED_FlashTimer;
u8 BD_LedFlashKeepTimer; u8 GSM_LedFlashKeepTimer;
//2014-2-20 ///extern pFunction Jump_To_Application; uint32_t JumpAddress; typedef void (*pFunction)(void); pFunction Jump_To_Application; u8 ProgramUpdateFlag;
u16 IpdCounter; ///u16 Temp300[10];
u8 IpdDataFlag; u8 GPRS_DataFlag; u16 AppFlashTailPageData; u8 AppFlashTailPageNumber;
u16 BlockCounter; u16 FinalBlockFlag;
//For moute update application//2014-3-4 char UPD_ip[16];//220.231.180.37 char UPD_port[7];
u32 TotalFileLength; u8 QIRDI_Flag;//2014-3-24 u16 QIRDI_Counter; u8 QIRDI_DataFlag; u8 FirstQIRDI_Flag;