STM32L151 IAP过程记录

发布者:科技梦行者最新更新时间:2020-02-19 来源: eefocus关键字:STM32L151  IAP  过程记录 手机看文章 扫描二维码
随时随地手机看文章

研究了2天的STM32系统IAP系统升级,也从网上借鉴了一些资源,这里记录一下也方便大家。


1、IAP说明:IAP,虽然网上有很多解释和介绍,我在这里就简单的理解为在线升级或者在系统编程,意思是不通过JTAG仿真器烧录可以更新系统程序。


2、准备工作:我所使用的是STM32L151C8T6,电路板有一个串口可以和外部连接,系统资源是64K的FLASH,10K的RAM。这里一定要弄清楚,我由于这个FLASH大小弄错了还犯了不小的错误和笑话。


3、IAP方案说明:


IAP系统升级,从字面意思理解你至少要有2个程序,程序1定义成IAP程序,程序2定义成APP程序。IAP程序正常运行,接收串口发来的数据,通过接收的数据判断是否是升级就的APP程序,如果是需要接收的APP升级程序,则接收该APP程序的.bin文件,并写到对应的FLASH地址区域,这里我使用的是FLASH的一半区域,0x08008000,注意64K对应的是0x08010000;


4、先写一个简单的APP程序,烧录在0x08008000区域,并测试运行是否正常,这里使用了一个简单的LED1灯进行指示,LED1指示灯闪烁。


参照例程建立新的工程即可,这里不做新建工程的说明。只说一下对应的在IAR系统中需要配置的几个地方。


A:设置IAR编译输出bin格式的二进制文件

B:设置烧录的FLASH地址和中断起始地址

5、在程序中指定偏移地址

6:通过仿真器验证程序可以正常执行。


7:编写IAP工程


IAP工程相对要麻烦一些,主要包含4个部分内容,串口接收发送程序,FLASH读写程序,IAP跳转程序,状态维护程序,下面一个一个说明。


串口收发程序不做介绍,按照官方例程设置即可,主要是设置接收中断中将上位机发送的升级文件保存到数组中即可。


FLASH读写程序主要涉及FLASH的操作过程,主要是调用库FLASH_WriteData(uint32_t WriteAddress, uint8_t *data, uint32_t num)函数,只要指定好地址和数据以及长度就可以了。注意修改其中的一些和硬件相关的LED状态指示。


还需要做一个标志,通知系统升级程序已经固化到对应的FLASH位置了,接下来就是最重要的IAP跳转程序了。

这里我使用IAP_Flash_UpdateFlag进行判断是否已经固化完升级程序,如果等于0X55就说明固化完成了,接下来就是


跳转到对应的固化地址APPLICATION_ADDRESS  去执行就可以了,注意要关闭中断,并复位系统。其中APPLICATION_ADDRESS  是宏定义的FLASH地址。


#define APPLICATION_ADDRESS   (uint32_t)0x0800F000


在IAP工程中使用了和APP工程不同的LED指示灯指示状态,

至此IAP升级已经测试完成了。


根据自己的需要将对应的地址规划好,控制好升级程序的存储和IAP跳转就行了。

关键字:STM32L151  IAP  过程记录 引用地址:STM32L151 IAP过程记录

上一篇:STM32 TIM触发ADC 定时采样-笔记
下一篇:STM32F0 定时器触发ADC,多通道采样、DMA传输数据的配置

推荐阅读最新更新时间:2024-11-12 11:21

STM32的IAP下载与设置
首先修改IAP程序: 由于官方的例子中是基于官方的开发板的,其中使用的触发条件为上电检测一个按键。所以需要更改启动设置。去官方下载IAP程序 http://www.stmicroelectronics.com.cn/stonline/mcu/STM32_AN.htm 第一步:打开官方的STM32的IAP程序,根据软件选择工程STM3210B-EVAL,我用得是MDK。 第二步:我们需要把这个触发条件修改为自己开发板上的按键 SW3,需要做如下修改。 打开 platform_config.h 文件,做如下修改: //#if !defined (USE_STM3210B_EVAL) && !defin
[单片机]
STM32F0的IAP用户程序中断向量表的设置
//Cortex-M0内核中断向量共有48个。 //由于M0内核不具有M3、M4内核的中断向量表重定位功能,须采用以下方式解决IAP向量问题: // 1:复制用户代码中的中断向量表到SRAM首地址 // 2: 开启SRAM的重映射功能,将SRAM的地址映射到0x00000000 // 3: MDK设置RAM运行地址时,要跳过前48个地址(地址为32位,共192字节),中断向量表 // 不能被操作,否则程序运行将出错。 // 中断向量表起始位置位于编译好的用户代码的首地址,共48个地址。 void NVIC_SetVectorTable(void) { uint8_t i; uint32
[单片机]
怎么使用stm32写IAP的bootloader和APP
Stm32的bootloader和App的编写注意事项 1、 怎么分配bootloader和app的空间 2、 怎么得到数据和写入flash 3、 怎么从bootloader跳转到app 4、 怎么设置App的中断向量 5、 App中怎么生成bin文件 6、程序执行的流程 1、怎么分配bootloader和app的空间 因为我用的是stm32f103c8t6,它的flash的大小是64k,所以把它分成如上所示 0x08000000 ---0x0800 33FF分配给bootloader使用,大小是13k 0x0800 3400----0x080097FF分配给第一个APP的使用,大小是25k 0x08009800---
[单片机]
怎么使用stm32写<font color='red'>IAP</font>的bootloader和APP
SST单片机的IAP与softicE两种模式的区别
单片机在IAP模式下无法进行在线仿真,通过使用IAP软件将softice监控程序下载到单片机后就会将单片机从IAP模式转换为softiCE模式,这样就可以进行在线仿真功能了,也就是可以通过keil进行仿真。 单片机在softiCE模式下使用IAP软件将无法检测到单片机,需要在keil中将BSL监控程序下载到单片机中才能检测到,这样keil就无法再进行在线仿真。
[单片机]
一位初学者对MSP430单片机学习过程记录
拿到这款板子已经好多天了,装上IAR for msp430也有这么久了,首先考了老师的那个安装包之后,有装了个XP虚拟机,装了好久,准确的说分了好几次区,各种分区工具一起上了,还是一次次掉电重启虚拟机,删了重建种种,最后一次感觉要成了,还真的成了。虚拟机1G内存,ghost版,装好里面啥都有QQ,暴风。。可是都是10年的版本,还有一个问题,启动后虚拟机居然奇慢无比,往往都是点击鼠标之后再等两三秒,再出现你期待的那一幕。 虚拟机里面要和主机,也就是实实在在的机子交流那就得有媒介,依稀记得有三种法子,由于用的是甲骨文的VMware 8.6,首先就可以通过安装的vmwaretool将东西直接拖到虚拟机里面,感觉就像是在把一
[单片机]
STM32F103VET6利用片内FLASH虚拟U盘,使用文件复制方式实现IAP
在原子论坛偶尔搜到一篇 利用STM32片内FLASH虚拟U盘,使用文件复制方式实现IAP的帖子http://www.openedv.com/forum.php?mod=viewthread&tid=39012&extra=page%3D1 按照楼主提供的代码修改了一下发现不能用,仔细阅读相关zizi资料(《5 分钟用 STM32的内置 Flash 做一个超小 U 盘》)发现了我用的是STM32F103VET6属于大容量的,片内FLASH是2K一页,所以要修改相关代码,贴出来修改的相关代码 一.修改memory.c 文件 修改Data_Buffer数组为2K,BULK_MAX_PACKET_SIZE宏定义为64,所以BULK
[单片机]
STM32F103VET6利用片内FLASH虚拟U盘,使用文件复制方式实现<font color='red'>IAP</font>
GEC210系统烧写过程记录(tftp方式)
1 配置网络 ‘# pri ’# setenv ipaddr 192.168.1.22 ‘# setenv serverip 192.168.1.11 ’# setenv gatewayip 192.168.1.1 ‘# saveenv 2 烧写u-boot ‘# tftp 0x40000000 u-boot-7-ok.bin ’# nand erase 0x0 0x600000 ‘# nand write 0x40000000 0x0 0x600000 3 烧写kernel ’# tftp 0x40000000 uImage-7-ok ‘# nand erase 0x600000 0x500000 ’# nand write 0
[单片机]
ARM7 LPC2378 远程升级----ISP与IAP
最近本人在学习ARM7的远程升级,在这里将自己的学习过程与大家分享,有错误的地方还请大家指出便于改正! ISP(In-System Programming)即“在系统可编程”,指电路板上的空白器件可以编程写入最终用户代码, 而不需要从电路板上取下器件,已经编程的器件也可以用ISP方式擦除或再编程。 IAP(In-Application Programming) 即MCU可以在系统中获取新代码并对自己重新编程,即可用程序来改变程序。ISP和IAP技术是未来仪器仪表的发展方向。 ISP和IAP的工作原理 ISP的实现相对要简单一些,一般通用做法是内部的存储器可以由上位机的软件通过串口来进行改写。对于单
[单片机]
ARM7 LPC2378 远程升级----ISP与<font color='red'>IAP</font>
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
更多往期活动

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved