bootloader_IAP

2024-05-06 02:04
文章标签 bootloader iap

本文主要是介绍bootloader_IAP,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

什么是MSP

大概意思就是指向运行内存的地址

参考如下

STM32(F407)—— 堆栈_stm32f407堆栈多大-CSDN博客

什么是自举

如果让同一个代码存储到不同介质存储空间里面,自举决定在那个存储空间运行那个程序;

比如自举为FLASH;那么存储在FLASH的程序,在上电复位后,从Flash存储器里面运行;

在自举flash正常的程序执行如下

 重点

栈顶地址就是MSP;MSP就是指向运行内存,而这个内存是堆栈;

运行机制为:上电后先得到运行内存地址,才到PC指针得到复位向量

1号线:上电后PC得到复位中断入口地址,然后执行复位中断处理函数;(上电机制)

2号线:复位中断处理函数执行完成后,进入到主函数入口;

3号线:日常中断,回到中断向量表,PC得到中断入口地址,

4号线:PC得到中断入口地址后,进入中断函数处理,

5号线:处理中断,返回主函数;

__asm void MSR_MSP(uint32_t addr) {MSR MSP, r0 			BX r14
}iapfun jump2app;的addr的作用

在给定的代码中,addr是作为参数传递给函数MSR_MSP的。这个参数addr是一个uint32_t类型的变量,它表示要设置的主堆栈指针(MSP)的地址。

在函数内部,MSR MSP, r0这行代码将寄存器r0的值(即addr的值)加载到主堆栈指针寄存器(MSP)中,从而设置了新的主堆栈指针地址。

最后一行代码BX r14是一个分支指令,它将程序控制权返回到调用函数的位置。

所以,addr参数用于设置主堆栈指针(MSP)的地址。

这篇关于bootloader_IAP的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/963225

相关文章

STM32内部闪存FLASH(内部ROM)、IAP

1 FLASH简介  1 利用程序存储器的剩余空间来保存掉电不丢失的用户数据 2 通过在程序中编程(IAP)实现程序的自我更新 (OTA) 3在线编程(ICP把整个程序都更新掉) 1 系统的Bootloader写死了,只能用串口下载到指定的位置,启动方式也不方便需要配置BOOT引脚触发启动  4 IAP(自己写的Bootloader,实现程序升级) 1 比如蓝牙转串口,

新版iOS内购(IAP)完整流程

新版iOS内购(IAP)完整流程 苹果内购是用来做什么的?能不能吃? iOS内购(以下简称IAP)是你可以实现一个应用内购买各种物品的功能,最常见的就是游戏中购买的道具,比如钻石。 新版的iOS内购从申请、审核以及代码的书写都充满了恶意,下面来介绍一下IAP的基本流程和我们遇到的问题以及一些解决办法。 1.创建应用和IAP项目 首先进入苹果的iTunesConnection(http

零基础国产GD32单片机编程入门(十三)单片机IAP(在应用编程)详解及实战源码

文章目录 一.概要二.GD32F103C8T6单片机IAP介绍1.GD32F103C8T6单片机IAP基本原理2.GD32F103C8T6单片机IAP基本流程 三.配置一个BOOT工程四.配置一个APP工程五.工程源代码下载六.小结 一.概要 GD32单片机程序升级方法有很多种,主要有以下几种: 1.将编译生成的hex/bin文件使用ST-Link/J-Link工具直接下载进

为什么bootloader跳转地址要加4?

问题 “我看你验证程序从ROM跳Flash地址要加4,为啥?” 又被问到了,这次记一下,以后谁再问我就直接发链接,必须点赞+关注,哈哈 答案 上电流程 ARM内核上电以后会从启动地址开始执行,就是vector的起始地址。 vector的第一个4byte-word是堆栈的栈顶地址,后面4byte-word是程序地址,要去这里执行。 硬件上电后会把第一个word load到SP里面,然后第二个

【转载】STM32 IAP 在线升级详解

(扩展-IAP主要用于产品出厂后应用程序的更新作用,考虑到出厂时要先烧写IAP  再烧写APP应用程序要烧写2次增加工人劳动力基础上写了“STM32 IAP+APP ==>双剑合一”链接稍后发) 一、在进入主题之前我们先了解一些必要的基础知识----stm32系列芯片的种类和型号:   startup_stm32f10x_cl.s 互联型的器件,STM32F105xx,STM32F107xx

集成电路学习:什么是Bootloader启动加载程序

Bootloader:启动加载程序         Bootloader,亦称引导加载程序,是计算机或设备在操作系统内核运行之前执行的一段小程序。其详细解释如下: 一、定义与功能         Bootloader的主要功能包括初始化系统基本硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。它是启动操作系统前执行任务的固件

关于bootloader,eboot,uboot,norflash,nandflash。

一.bootloader的作用        其实bootloader主要的必须的作用只有一个:就是把操作系统映像文件拷贝到RAM中去,然后跳转到它的入口处去执行。而操作系统文件的来源,可以是flash,sd card,PC(可以通过网络,USB,甚至串口传输)等等,所谓的EBOOT,UBOOT,其实就是表明了系统文件是通过Ethernet或者USB从PC传输过去的。当然,为了实现这个功能(以及

BootLoader和OTA的关系

什么需要BootLoader 在Linux系统中,软件组成可以跟Windows进行类比: BootLoader的主要作用是: 初始化硬件:比如设置时钟、初始化内存 启动内核:从Flash读出内核、存入内存、给内核设置参数、启动内核 调试作用:在开发产品时需要经常调试内核,使用BootLoader可以方便地更新内核 在单片机中,软件没那么复杂,一般只有一个程序,上电就运行这个

自己写bootloader------编写第1阶段

目录 1.bootloader的作用 2.编写代码 2.1 start.S 2.2 boot.lds 链接脚本 2.3 init.c 2.3.1 nand_init 2.3.2 nand_read 1.bootloader的作用 bootloader的目标:启动内核, 2.编写代码 2.1 start.S #define S3C2440_MPLL_200MHZ

【单片机开发】单片机的烧录方式详解(ICP、IAP、ISP)

【前言】 在单片机开发过程中,程序的烧录是一个至关重要的环节。随着技术的不断演进,单片机烧录方式也日益多样化。本文将重点讲解单片机中三种常见的烧录方式:ICP(In-Circuit Programming)、ISP(In-System Programming)和IAP(In-Application Programming),并探讨它们各自的特点与应用场景。 1. ICP(In-Circuit