本文原创于http://www.cnblogs.com/humaoxiao,非法转载者请自重!

 

硬件平台:STM32F4 DISCOVERY开发板 型号:MB997A或MB997C
主芯片型号:STM32F405xx, STM32F407xx, STM32F415xx, 或 STM32F417xx

主要参考文档:

(1)PM0081 STM32F40xxx and STM32F41xxx Flash programming manual.pdf
(2)STM32F407 datasheet.pdf

 

    做为嵌入式方面的开发人员,拿到一个芯片后,我们首先看它的参数指标,有多少多少容量的RAM,多少多少容量的Flash。当然,前提是芯片自带这两个模块。
    今天我们只研究Flash的结构:)
(一)声明
    STM32F405xx, STM32F407xx, STM32F415xx, 和 STM32F417xx的Flash模块都是一样的,所以,我们在文章后面统一以STM32F4代表它们。
(二)概览
    首先来一张概览图吧

 

 

 

2.1 Main memory
    Main memory部分各个Sector相加最后正合适等于1024Kbyte,这也是与文档开头说的Capacity up to 1 Mbyte相符的。在这个区域里主要是存储我们用户编写的程序,这里你可能看到了,该片存储区地址是从0x08000000开始的,这也就是为什么我们在使用ST-Link2烧写程序的时候,要规定起始地址是0x08000000的原因了。
2.2 System memory
    System memory区域是系统保留区,用来在“System memory boot”模式下启动芯片。存储的是一段特殊的程序,叫做bootloader,通过运行此段区域里的程序,可以对Main memory进行重新烧写。举个栗子,如果我们选择以System memory boot模式启动,同时插上了带有系统固件的U盘,那么经过配置后,bootloader就可以读出U盘里的固件,烧写到Main memory区域里去,怎么样,方便吧!也就是说,给芯片重新烧写固件,可以通过USB OTG FS的方式!神奇的功能:)
2.3 OTP area

 

 

 

    这段区域更是神奇,OTP是One-time programmable的缩写,从字面上可以看出来,此段区域是一次性编程区。但是,机智的人类也有犯错误的时候,万一写错了怎么办!ST公司考虑到这一点,在从0x1FFF7A00地址开始的16个字节是带有“锁”功能的字节,当你确定OTPx区域写进去的数据确实没有错误了,你就可以对LOCKBx地址写入0x00,从此OTPx区域就没法更改了。
2.4 Option bytes
    官方文档应该写错了吧,0x1FFFC000-0x1FFFC00F怎么会是16Kbytes呢?应该是16bytes才对吧。

 

    想要具体了解的朋友们,可以参考STM32F407 datasheet.pdf中3.1-3.9节的详细介绍:)
    下一节将给大家带来启动文件.S的详细解释。


 

    ------------------------------------

 

    大家可以+关注我的博客,以便得到最新的文章。

 

    ------------------------------------

 

打字不易,转载请注明出处(http://www.cnblogs.com/humaoxiao/p/3579214.html),谢谢。


STM32F40xxx 与 STM32F41xxx Flash结构详解的更多相关文章

  1. BS模式的模型结构详解

    编号:1004时间:2016年4月12日16:59:17功能:BS模式的模型结构详解 URL:http://blog.csdn.net/icerock2000/article/details/4000 ...

  2. Linux下的文件目录结构详解

    Linux下的文件目录结构详解 / Linux文件系统的上层根目录 /bin 存放用户可执行的程序 /boot 操作系统启动时所需要的文件 /dev 接口设备文件目录,例如:had表示硬盘 /etc ...

  3. PHP扩展代码结构详解

    PHP扩展代码结构详解: 这个是继:使用ext_skel和phpize构建php5扩展  内容 (拆分出来) Zend_API:深入_PHP_内核:http://cn2.php.net/manual/ ...

  4. Android系统目录结构详解

    Android系统基于linux内核.JAVA应用,算是一个小巧精致的系统.虽是开源,但不像Linux一般庞大,娇小可亲,于是国内厂商纷纷开发出自己基于Android的操作系统.在此呼吁各大厂商眼光放 ...

  5. Linux文件系统的目录结构详解

    Linux文件系统的目录结构详解   一.前 言 文章对Linux下所有目录一一说明,对比较重要的目录加以重点解说,以帮助初学者熟练掌握Linux的目录结构. 二.目 录 1.什么是文件系统 2.文件 ...

  6. vue 文件目录结构详解

    vue 文件目录结构详解 本篇文章主要介绍了vue 文件目录结构详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考.一起跟随小编过来看看吧 项目简介 基于 vue.js 的前端开发环境,用于前后 ...

  7. [转帖]Tomcat目录结构详解

    Tomcat目录结构详解 https://www.cnblogs.com/veggiegfei/p/8474484.html 之前应该是知道一点 但是没有这么系统 感谢原作者的描述. 1.bin: 该 ...

  8. web标准 浏览器介绍 开发工具介绍 HTML介绍 HTML颜色介绍 规范 HTML结构详解 {前端之前端初识}

    前端之前端初识   前端初识 本节目录 一 web标准 二 浏览器介绍 三 开发工具介绍 四 HTML介绍 五 HTML颜色介绍 六 规范 七 HTML结构详解 一 web标准 web准备介绍: 1. ...

  9. JS函数动作分层结构详解及Document.getElementById 释义 js及cs数据类型区别 事件 函数 变量 script标签 var function

    html +css 静态页面 js     动态 交互   原理: js就是修改样式, 比如弹出一个对话框. 弹出的过程就是这个框由disable 变成display:enable. 又或者当鼠标指向 ...

随机推荐

  1. cocos2d-x NotificationCenter

    转自:http://www.xinze.me/cocos2d-x-ccnotificationcenter/ 在前端开发中,JS和as3中都有很好的监听机制, 我们使用Event的addEventLi ...

  2. MSSQL 如何实现 MySQL 的 limit 查询方式 (转)

    不知为何,MSSQL 中没有 limit 这个极为重要的查询方式,熟悉 MySQL 的朋友都知道,MySQL 的 limit 对于实现分页和一些限制结果集的应用中非常方便.没有不要紧,我们可以用其他方 ...

  3. 用Bootstrap 写了个站点

    近期发现vdceye的站点有些丑陋,就找了一个bootstrap工具,又一次把站点写了一遍 这个工具果然好用 http://vdceye.com/

  4. OpenCV 读取.xml文件

    OpenCV 只提供了读取和存储.xml和.yml 文件格式的函数. 读取.xml文件的C++例程如下: cv::FileStorage fs; //OpenCV 读XML文件流 cv::Mat De ...

  5. Java下拼接运行动态SQL语句

    mod=viewthread&tid=3039" target="_blank">Java拼接动态SQL的一般做法有       1.使用动态语句 非常多数 ...

  6. WebGL on iOS8 最终等到了这一天

    WWDC2014刚结束,这次的大会是名符事实上的开发人员大会.更贴切的应该说的确是一次软件开发人员的大会.对于OSX和iOS的很多其它功能特性让人兴奋.Swift新语言促成了如上图片 但我更感兴趣的是 ...

  7. VC6.0设置选项解读(转)

    其实软件调试还是一个技术熟练过程,得慢慢自己总结,可以去搜索引擎查找一些相关的文章看看,下边是一篇关于VC6使用的小文章,贴出来大家看看: 大家可能一直在用VC开发软件,但是对于这个编译器却未必很了解 ...

  8. mysql 源码调试方法

     http://blog.itpub.net/29254281/viewspace-1847415/ 其中吕海波老师分享的内容是 <调试Oracle二三例:调试技术在日常运维中的应用>其中 ...

  9. page cache和buffer cache 图解

    http://www.cnblogs.com/yrpen/p/3777963.html http://www.cnblogs.com/hustcat/archive/2011/10/27/222699 ...

  10. Overview & Change Log

    Overview & Change Log Nova Framework is a PHP 5.5+ MVC Framework. It's designed to be lightweigh ...