学习STM32F769DK-OTA例程之APP中断向量表重映射
2019-04-17
【小记】
APP的IAR工程中的中断向量表偏移是在系统库中的 __iar_program_start 处实现的

启动代码 stm32f769xx.s
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
;; Default interrupt handlers.
;;
THUMB
PUBWEAK Reset_Handler
SECTION .text:CODE:NOROOT:REORDER()
Reset_Handler LDR R0, =SystemInit
BLX R0
LDR R0, =__iar_program_start
BX R0 PUBWEAK NMI_Handler
SECTION .text:CODE:NOROOT:REORDER()
经调试看到 __iar_program_start 的反汇编
Reset_Handler:
0x80385d0: 0x4801 LDR.N R0, [PC, #0x4] ; SystemInit
BLX R0
0x80385d2: 0x4780 BLX R0
LDR R0, =__iar_program_start
0x80385d4: 0x4801 LDR.N R0, [PC, #0x4] ; __iar_program_start
BX R0
0x80385d6: 0x4700 BX R0
SECTION .text:CODE:NOROOT:REORDER()
0x80385d8: 0x0802586d DC32 SystemInit
SECTION .text:CODE:NOROOT:REORDER()
0x80385dc: 0x080385f9 DC32 __iar_program_start
0x80385e0: 0x70636573 DC32 0x70636573 ()
0x80385e4: 0x72363532 DC32 0x72363532 ()
0x80385e8: 0x00000031 DC32 0x31 ()
0x80385ec: 0x72617453 DC32 0x72617453 ()
0x80385f0: 0x00000074 DC32 0x74 ()
0x80385f4: 0x00544f49 DC32 0x544f49 ()
__iar_program_start:
0x80385f8: 0xf3af 0x8000 NOP.W
0x80385fc: 0xf7ff 0xff90 BL __iar_init_vfp ; 0x8038520
0x8038600: 0xf7ff 0xffb0 BL ?main ; 0x8038564
APBPrescTable:
0x8038604: 0x00000000 DC32 0x0 ()
0x8038608: 0x04030201 DC32 0x4030201 ()
0x803860c: 0x002e0000 DC32 0x2e0000 ()
0x8038610: 0x0043 DC16 ; 'C.'
B WWDG_IRQHandler
__iar_init_vfp:
0x8038520: 0xf64e 0x5188 MOVW R1, # ; 0xed88
0x8038524: 0xf2ce 0x0100 MOVT R1, # ; 0xe000
0x8038528: 0x6808 LDR R0, [R1]
0x803852a: 0xf440 0x0070 ORR.W R0, R0, # ; 0xf00000
0x803852e: 0x6008 STR R0, [R1]
0x8038530: 0xf3bf 0x8f4f DSB
0x8038534: 0xf3bf 0x8f6f ISB
0x8038538: 0xf04f 0x7000 MOV.W R0, # ; 0x2000000
0x803853c: 0xeee1 0x0a10 VMSR FPSCR, R0
0x8038540: 0x4770 BX LR
0x8038542: 0x0000 MOVS R0, R0
Region$$Table$$Base:
0x8038544: 0xfffdb3e7 DC32 0xfffdb3e7 (-)
0x8038548: 0x000220dc DC32 0x220dc ()
0x803854c: 0x20000204 DC32 xStart
0x8038550: 0x00000000 DC32 0x0 ()
0x8038554: 0xfffdb2b7 DC32 0xfffdb2b7 (-)
0x8038558: 0x00000262 DC32 0x262 ()
0x803855c: 0x000001a2 DC32 0x1a2 ()
0x8038560: 0x20000000 DC32 global_hooks
?main:
Region$$Table$$Limit:
__cmain:
0x8038564: 0xf000 0xf80d BL __low_level_init ; 0x8038582
0x8038568: 0x2800 CMP R0, #
0x803856a: 0xd001 BEQ.N _call_main ; 0x8038570
0x803856c: 0xf7ff 0xffb2 BL __iar_data_init3 ; 0x80384d4
学习STM32F769DK-OTA例程之APP中断向量表重映射的更多相关文章
- 痞子衡嵌入式:利用i.MXRT1060,1010上新增的FlexSPI地址重映射(Remap)功能可安全OTA
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是i.MXRT部分型号上新增的FlexSPI Remap功能. OTA升级设计几乎是每个量产客户都绕不开的话题,产品发布后免不了要做固件( ...
- STM32F0系列MCU中断向量表的重映射
最近使用了一款Cortex-M0内核的芯片STM32F030CC,发现它中断向量表的重映射方法与STM32F10x系列的有所区别,在这里记录与分享一下. 由于需要通过IAP进行固件升级,所以芯片的FL ...
- MapServer Tutorial——MapServer7.2.1教程学习——第一节用例实践:Example1.6 Defining Projections and Extents
MapServer Tutorial——MapServer7.2.1教程学习——第一节用例实践:Example1.6 Defining Projections and Extents 一.前言 当在m ...
- MapServer Tutorial——MapServer7.2.1教程学习——第一节用例实践:Example1.5 Adding a raster layer
MapServer Tutorial——MapServer7.2.1教程学习——第一节用例实践:Example1.5 Adding a raster layer 一.前言 MapServer不仅支持 ...
- 逆向工程之App脱壳
http://www.cnblogs.com/ludashi/p/5725743.html iOS逆向工程之App脱壳 本篇博客以微信为例,给微信脱壳."砸壳"在iOS逆向工程中是 ...
- MapServer Tutorial——MapServer7.2.1教程学习——第一节用例实践:Example1.7 Adding a wms layer
MapServer Tutorial——MapServer7.2.1教程学习——第一节用例实践:Example1.7 Adding a wms layer 前言 Add OGC WMS Layers( ...
- MapServer Tutorial——MapServer7.2.1教程学习——第一节用例实践:Example 1.4 Labeling the Map
MapServer Tutorial——MapServer7.2.1教程学习——第一节用例实践:Example 1.4 Labeling the Map 一.前言 MapServer拥有非常灵活的标签 ...
- MapServer Tutorial——MapServer7.2.1教程学习——第一节用例实践:Example1.3 Displaying Classes in a Layer
MapServer Tutorial——MapServer7.2.1教程学习——第一节用例实践:Example1.3 Displaying Classes in a Layer 一.前言 关于第一节的 ...
- MapServer Tutorial——MapServer7.2.1教程学习——第一节用例实践:Example1.2 Static Map with Two Layers
MapServer Tutorial——MapServer7.2.1教程学习——第一节用例实践:Example1.2 Static Map with Two Layers 一.前言 上一篇博客< ...
随机推荐
- mysql-8.0 安装教程(自定义配置文件,密码方式已修改)
下载zip安装包: MySQL8.0 For Windows zip包下载地址:https://dev.mysql.com/downloads/file/?id=476233,进入页面后可以不登录.后 ...
- 非常易于理解‘类'与'对象’ 间 属性 引用关系,暨《Python 中的引用和类属性的初步理解》读后感
关键字:名称,名称空间,引用,指针,指针类型的指针(即指向指针的指针) 我读完后的理解总结: 1. 我们知道,python中的变量的赋值操作,变量其实就是一个名称name,赋值就是将name引用到一个 ...
- ArcGIS API for JavaScript与 npm
在4.7版本中,不仅增加了WebGL的渲染支持(渲染前端速度加快,渲染量也加大).增强了ES6中的Promises语法支持,还支持了npm管理及webpack打包,实属喜讯. “意味着可以不经过esr ...
- window模拟linux环境-cygwin安装
cygwin是一个在windows平台上运行的unix模拟环境,它对于学习unix/linux操作环境,或者从unix到windows的应用程序移植,非常有用.通过它,你就可以在不安装linux的情况 ...
- Android-蓝牙的网络共享与连接分析
一.概述 本次分析是基于android7.0的源码,主要是介绍如何通过反射来打开蓝牙的网络共享以及互联网的连接. 二.蓝牙的网络共享 1. 网络共享部分源码分析 关于packages/apps/Set ...
- Android ViewPager+Fragment 在Activity中获取Fragment的控件
如果ViewPager+Fragment实现Tab切换,在activity中利用adapter.getItem获取到fragment然后再根据fragment.的方法获取控件 //隐藏求租,以下代码用 ...
- Flask技术问题汇总
1:Flask 使用 request对象代理了当前请求的上下文.这么做什么好处和坏处? 好处:flask封装了C端发起request对象,这样就可以使用上下文临时把某些对象变为全局可访问:如果不封装, ...
- C# Dictionary 函数解析及使用方法
要使用Dictionary集合,需要导入C#泛型命名空间 System.Collections.Generic(程序集:mscorlib) Dictionary的描述 1.从一组键(Key)到一组值 ...
- 深入Node之初识
0前言 陆续的用Node已经一年多了,已经用node写了几个的项目,也该是总结node学习的过程了 1.Node是啥? Node.js是一使用JavaScript作为开发语言,运行在服务器端的Web服 ...
- Objective-C Block与函数指针比较
相似点 1.函数指针和Block都可以实现回调的操作,声明上也很相似,实现上都可以看成是一个代码片段. 2.函数指针类型和Block类型都可以作为变量和函数参数的类型.(typedef定义别名之后,这 ...