IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> IAR环境下对STM32F429芯片进行IAP升级 -> 正文阅读

[嵌入式]IAR环境下对STM32F429芯片进行IAP升级


前言

记录一下自己(刚入行嵌入式软件的小白)刚刚接触IAP升级的学习过程。

一、IAP是什么?

网上已经有很多大牛大神对IAP升级解释的非常详细,这里不过多赘述,直接上在使用过程中的一些心得,如有错误,欢迎指出。创作不易,转载请标记出处

二、工程信息

软件环境:IAR 8.2.22
两个工程:Bootloader(IAP) + APP
芯片型号:STM32F429IG(1M flash空间)

工作背景:项目需要升级,BootLoader的bin文件链接在APP工程的bin文件指定位置,工程指定0X08000000——0x0801FFFF给BootLoader预留空间。

三、配置细节

A. IAR工程配置如下:

1、在Config界面中将icf文件添加到工程里;
在这里插入图片描述
2、在Input界面中加入三点:
①symbols名对应icf文件中的,如工程中为BOOT;
②raw binary image为bootloader的bin文件镜像地址;
③symbol名和①保持一致,注意section的BOOT前有一个点,8字节对齐;
在这里插入图片描述

2.STM32F429IG.ICF配置文件如下:

代码如下:

/*###ICF### Section handled by ICF editor, don't touch! ****/
/*-Editor annotation file-*/
/* IcfEditorFile="$TOOLKIT_DIR$\config\linker\ST\IcfEditor\stm32f42x.xml" */
/*-Specials-*/
define symbol __ICFEDIT_intvec_start__ = 0x08020000;
/*-Memory Regions-*/
define symbol __ICFEDIT_region_BOOT_start		= 0x08000000;
define symbol __ICFEDIT_region_BOOT_end__    	= 0x0801FFFF;
define symbol __ICFEDIT_region_FLASH_start__   	= 0x08020000;
define symbol __ICFEDIT_region_FLASH_end__    	= 0x080FFFFF;
define symbol __ICFEDIT_region_FMC11_start__  	= 0x0;
		………………………………………………………………
					中间部分不变
………………………………………………………………
define symbol __ICFEDIT_region_SRAM1_start__ = 0x20000000;
define symbol __ICFEDIT_region_SRAM1_end__   = 0x2001BFFF;
define symbol __ICFEDIT_region_SRAM2_start__ = 0x2001C000;
………………………………………………………………
					中间部分不变
………………………………………………………………
define symbol __ICFEDIT_region_SDR2_start__  = 0x0;
define symbol __ICFEDIT_region_SDR2_end__    = 0x0;
/*-Sizes-*/
define symbol __ICFEDIT_size_cstack__ = 0x2000;
define symbol __ICFEDIT_size_heap__   = 0x2000;
/**** End of ICF editor section. ###ICF###*/

define memory mem with size = 4G;
define region BOOT_region = mem:[from __ICFEDIT_region_BOOT_start__ to __ICFEDIT_region_BOOT_end__ ];
define region FLASH_region = mem:[from __ICFEDIT_region_FLASH_start__ to __ICFEDIT_region_FLASH_end__];
………………………………………………………………
					中间部分不变
………………………………………………………………
place at address mem:__ICFEDIT_intvec_start__ { readonly section .intvec };
place in BOOT_region { readonly section .BOOT };
place in FLASH_region  { readonly };
place in PCARD_region  { readonly section application_specific_ro };
place in CCRAM_region  { block CSTACK, section .ccram };
place in SRAM_region   { readwrite, block HEAP };
place in BKPR_region   { section .backup_sram };
place in SDR_region    { readwrite section application_specific_rw };

1、define symbol __ICFEDIT_region_BOOT_start			= 0x08000000;
2、define symbol __ICFEDIT_region_BOOT_end__    	= 0x0801FFFF;
3、define symbol __ICFEDIT_region_FLASH_start__   	= 0x08020000;
4、define symbol __ICFEDIT_region_FLASH_end__    	= 0x080FFFFF;1和第2行为添加的规定好BootLoader文件的起始地址;第3和第4行的flash的地址对应的向后修改;
5、define region BOOT_region = mem:[from __ICFEDIT_region_BOOT_start__ to __ICFEDIT_region_BOOT_end__ ];5行为新加的BootLoader在内存中的位置;
6、place in BOOT_region { readonly section .BOOT };6行作用是将BootLoader的bin文件放入内存中;定义为只读,对应的块为125所声明的空间位置。

所有配置正确的情况下,在重新编译工程得到的文件,如下图第一部分:全是00,是因为BootLoader的bin文件小于预留的空间,其余部分以00填充;工程文件从00020000h处开始,如图的第二部分。
在这里插入图片描述

调试错误总结

1、内部flash以整页方式擦除空间,需要开辟单独的空间保存升级包的信息与启动标志信息;
2、与上位机发送升级数据包所计算的校验方式要一致;
3、IAR软件所指的的默认中断向量表位置存放CCRAM(0x10002000)中,与网上资料有所差别,注意修改;
4、bootloader程序无需修改启动位置,因为已经在APP程序的空间预留出位置(0x08000000—0x080000400),且0x08000000起始位置只能放IAP或者APP程序,不可以存放别的信息;
5、bootloader程序跳转之前要把所用的外设关闭。

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-08-20 15:17:19  更:2021-08-20 15:17:45 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/29 8:16:26-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计