博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
stm32 内存
阅读量:4284 次
发布时间:2019-05-27

本文共 3553 字,大约阅读时间需要 11 分钟。

  • cortex-M3

在这里插入图片描述

在这里插入图片描述

  • stm32F407zgt6
    在这里插入图片描述
    在这里插入图片描述
  • 工程设置
128M 1M			512M 128K				256M 64K

在这里插入图片描述

  • 下载设置
512M 4K

在这里插入图片描述

  • 擦写设置
总共1MB(1024KB),8sector,1个sector为 128KB,区间为(0x00000-0x1FFFF)

在这里插入图片描述

  • boot 配置了(BOOT1 1 BOOT0 0)使用了 user Flash(0x08000000-0x080FFFFF)

    在这里插入图片描述

  • 大小端

stm32 属于 小端模式,比如 0x11223344 在内存中的存储为0x08000230 : 0x11 0x22 0x33 0x44
  • 代码分析
    在这里插入图片描述
    在这里插入图片描述
/// 代码 查找分析对象                AREA    |.text|, CODE, READONLY; Reset handlerReset_Handler    PROC                 EXPORT  Reset_Handler             [WEAK]        ;IMPORT  SystemInit					;寄存器代码,不需要在这里调用SystemInit函数,故屏蔽掉,库函数版本代码,可以留下											;不过需要在外部实现SystemInit函数,否则会报错.        IMPORT  __main                 LDR     R0, =0xE000ED88    ; 使能浮点运算 CP10,CP11 // 分析对象// 根据 调试时出现的 Disassembly 窗口反编译为0x08000228 480B      LDR           r0,[pc,#44]  ; @0x08000258// map文件    Symbol Name                              Value     Ov Type        Size  Object(Section)    .text                                    0x08000228   Section       68  startup_stm32f40_41xxx.o(.text)    $v0                                      0x08000228   Number         0  startup_stm32f40_41xxx.o(.text)		Exec Addr    Load Addr    Size         Type   Attr      Idx    E Section Name        Object    0x08000228   0x08000228   0x00000044   Code   RO            4    .text               startup_stm32f40_41xxx.o	Symbol Name                              Value     Ov Type        Size  Object(Section)    Reset_Handler                            0x08000229   Thumb Code    14  startup_stm32f40_41xxx.o(.text)
说明 	1.伪指令 "LDR     R0, =0xE000ED88" 被编译为 "LDR           r0,[pc,#44]  ; @0x08000258"  0x08000258 为 [pc,#44] 的内容	2.伪指令 "LDR     R0, =0xE000ED88" 在 符号 Reset_Handler 内,且被编译为 thumb指令(2字节)	3.Reset_Handler 在 .text段内, .text段 还包括除了 Reset_Handler 之外的其他内容	4.伪指令 "LDR     R0, =0xE000ED88" 在 bin 文件中的位置 为 0x00000228,被烧写到stm32 主内存后,位置为0x08000228,被映射到0x00000228.(根据BOOT0BOOT1设置)	5.伪指令 "LDR     R0, =0xE000ED88" 被汇编成的二进制数据为 0x480B,在内存中以小端格式存放,为0B48.	6. .text段的属性为仅读属性.	7. 为什么 Reset_Handler 的地址 为 0x08000229,而 Reset_Handler 中的 0x08000228 比 Reset_Handler 小?不是应该相等?	8. "LDR     R0, =0xE000ED88"为两个字节,"ORR     R1,R1,#(0xF << 20)"为四个字节
  • 函数入口
Symbol Name                              Value     Ov Type        Size  Object(Section)    Reset_Handler                            0x08000229   Thumb Code    14  startup_stm32f40_41xxx.o(.text)	LED_Init                                 0x080003bd   Thumb Code    48  led.o(i.LED_Init)    Exec Addr    Load Addr    Size         Type   Attr      Idx    E Section Name        Object    0x080003bc   0x080003bc   0x00000040   Code   RO          250    i.LED_Init          led.oLED_Init0x080003BC 0000      MOVS          r0,r0
  • JMem.exe 读出来的0x00000000以及0x08000000以及bin文件以及hex文件的比较
// 前提0x00000000-0x000FFFFF 从0 开始的 1MB 内容 被 BOOT 脚决定aliased to Flash, system memory or SRAM depending on the BOOT pins当前设置为BOOT0 0BOOT1 1启动区域被映射为 主闪存存储器(0x08000000-0x080FFFFF)
// 结论一样的.--- C:\Users\admin\Desktop\data\32_mcu\mem\target.bin+++ C:\Users\admin\Desktop\data\32_mcu\mem\data_read_08000000.bin@@ -114,3 +114,5 @@ 7047 0000 3407 0008 0000 0020 0c00 0000 c401 0008 4007 0008 0c00 0020 2c05 0000 e001 0008 0000 0000 0000 0000 0000 0000+ffff ffff ffff ffff ffff ffff ffff ffff+ffff ffff ffff ffff ffff ffff ffff ffff--- C:\Users\admin\Desktop\data\32_mcu\mem\target.bin+++ C:\Users\admin\Desktop\data\32_mcu\mem\data_read_00000000.bin@@ -114,3 +114,5 @@ 7047 0000 3407 0008 0000 0020 0c00 0000 c401 0008 4007 0008 0c00 0020 2c05 0000 e001 0008 0000 0000 0000 0000 0000 0000+ffff ffff ffff ffff ffff ffff ffff ffff+ffff ffff ffff ffff ffff ffff ffff ffffdata_read_08000000.bin 与 data_read_00000000.bin 没有区别

转载地址:http://rrngi.baihongyu.com/

你可能感兴趣的文章
贝叶斯学习--极大后验假设学习
查看>>
朴素贝叶斯分类器
查看>>
贝叶斯学习举例--学习分类文本
查看>>
hadoop HDFS原理基础知识
查看>>
数据挖掘十大算法----EM算法(最大期望算法)
查看>>
android StrictMode应用
查看>>
TabHost的两种使用方法
查看>>
Android---TextView属性详解
查看>>
K近邻算法基础:KD树的操作
查看>>
数据挖掘十大算法--K近邻算法
查看>>
android对话框(Dialog)的用法
查看>>
Android使用Application总结
查看>>
android启动第一个界面时即闪屏的核心代码(两种方式)
查看>>
数据挖掘十大经典算法(详解)
查看>>
数据挖掘十大算法--K-均值聚类算法
查看>>
java中常用的日期格式化(全)
查看>>
POI操作Excel导入和导出
查看>>
java的md5加密算法代码
查看>>
jdbc连接数据库
查看>>
Android开发四大组件概述
查看>>