学习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 一.前言 上一篇博客< ...
随机推荐
- eclipse中集成maven
一.环境 eclipse mar jdk 1.7 apache-maven-3.3.3 注意: 1> eclipse mar 已集成maven插件,我们只需要配置成自己的maven即可,类似ec ...
- es6 for of 循环
es6 新增了 for of 循环,只要继承了Iterator 接口的数据集合都可以使用 for of 去循环 for of 循环,统一数据集合的循环方法,解决了forEach循环的不能使用break ...
- 如何利用GitHub设计一个炫酷的个人网站(含代码)
1.在开始制作之前我们先预览一下我的网站吧! 1.方式一: 由于是手机版的所以用手机访问下面的链接体验比较好一点: https://tom-shushu.github.io/MyWeb.github. ...
- Python 标准类库- 因特网协议于支持之UUID
标准类库- 因特网协议于支持之UUID by:授客 QQ:1033553122 测试环境 python3 UUID生成函数定义 uuid.getnode() 获取一个表示硬件地址的48位正整数.第 ...
- python使用rabbitMQ介绍四(路由模式)
一.模式介绍 路由模式,与发布-订阅模式一样,消息发送到exchange中,消费者把队列绑定到exchange上. 这种模式在exchange上添加添加了一个路由键(routing-key),生产者发 ...
- Windows Server 2008远程桌面默认端口更改方法
win2008远程桌面端口默认是用的是3389端口,但是由于安全考虑,经常我们安装好系统后一般都会考虑把原来的3389端口更改为另外的端口. 本文以改为端口为25608商品为例,讲解一下具体操作过程. ...
- Ajax异步交互基础
1. ajax是什么? * asynchronous javascript and xml:异步的js和xml * 它能使用js访问服务器,而且是异步访问! * 服务器给客户端的响应一般是整个页面,一 ...
- PhpStorm 常用快捷键
PhpStorm 常用快捷键 File Structure 路径: Main menu > Navigate > File Structure 显示当前文件的类和函数结构,便于查找当前文件 ...
- “百度杯”CTF比赛 十月场 Hash 复现
进入题后老套路得到两个关键: 1.$hash=md5($sign.$key);the length of $sign is 8 2.key=123&hash=f9109d5f83921a551 ...
- HTML5移动端触摸事件
一.移动端事件问题 1.click事件300ms延迟问题 2007年第一代iphone发布,移动端Safari首创双击缩放功能,原理是click一次后,经过300ms之后检测是否再有一次click,如 ...