文章转载自:https://blog.csdn.net/weibo1230123/article/details/80142210

每个芯片开发商都会针对每款芯片来编写一个.icf文件就是传说中的链接文件。对于基本的应用,这个.icf文件足以满足你的工程需要。但有时也会需要改动,比如当你的项目要添加外部RAM时就要修改一下icf。

1、Icf到底干了啥呢?

  1. 定义了芯片存储空间的大小。
  2. 定义ROM的大小和起始、结束地址。
  3. 定义RAM的大小和起始、结束地址。

当然这些都是最基本的,你也可以设置以下的东西来匹配你的具体项目。

  1. 链接时是否保存位块与符号
  2. 设置你的启动过程
  3. 设置你的堆与栈的大小和对齐方式
  4. 修改编译器默认的初始化过程。
  5. 关于默认库的处理等。。。

2、下面我简单介绍几个功能,详细请参考 EWARM_DevelopmentGuide

2.1  添加额外的region

比如我要添加另一个名为ROM2的ROM区域,大小是256bytes,起始地址是0x80000.

define region ROM = Mem:[from 0x80000 size 0x100];

2.2 教你怎样放置SECTION

如果你要把你的只读常量放置在你指定的域而不是编译器默认的位置,你就得按如下操作了:

define region CONST_region = Mem:[from 0x100 size 0x100];

place in CONST_region{readonly section .rodata}

2.3 把一个段放置在指定位置

place at address Mem:[0]  {readonly section .intvec} //--将向量表放置在地址0处。

Note:之前在看启动代码时,老在想这个向量表示怎么放到地址0处的呢,查了一下reference

__vector_table是编译器专有字符,表示出处开始放置向量表。

在代码开始处就声明了此段为.intvec。链接的时候在依据icf把它放到地址0处。

2.4 将需要从RAM中运行的代码搬到RAM中

Initialize by copy {section .textrw}

二、下面是我对generic_cortex.icf的注解

三、总结

咋看一下,这些东西对我们实际编程没有太大作用,有的同学可能学了许久的单片机了也没接触到这个icf(我就是),但是个人觉得,这对于我们理解单片机有很大的帮助。不然的话,对于单片机的理解就简单停留在外设操作了。

STM32 stm32fxxx_flash.icf文件的作用详解的更多相关文章

  1. STM32中stm32f0xx_flash.icf文件的作用详解!(不错的!)

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/weibo1230123/article/details/80142210 每个芯片开发商都会针对每款 ...

  2. Python中__init__.py文件的作用详解

    转自http://www.jb51.net/article/92863.htm Python中__init__.py文件的作用详解 http://www.jb51.net/article/86580. ...

  3. Linux(centos)系统各个目录的作用详解

    Linux(centos)系统各个目录的作用详解 文件系统的类型 LINUX有四种基本文件系统类型:普通文件.目录文件.连接文件和特殊文件,可用file命令来识别. 普通文件:如文本文件.C语言元代码 ...

  4. shell脚本中常见的一些特殊符号和作用详解

    这篇文章主要介绍了shell脚本中常见的一些特殊符号和它的作用详解,总结的很简洁,容易看懂,需要的朋友可以参考下   在编写Shell脚本时,我们需要会用到各种各样的特殊符号,通过这些特殊符号可以使我 ...

  5. linux(CENTOS)系统各个目录的作用详解

    Linux(CentOS)系统各个目录的作用详解 文件的类型 LINUX有四种基本文件系统类型:普通文件.目录文件.连接文件和特殊文件,可用file命令来识别. 普通文件:如文本文件.C语言元代码.S ...

  6. Linux学习之文件特殊权限详解(SetUID、SetGID、Sticky BIT)(十一)

    Linux学习之文件特殊权限详解(SetUID.SetGID.Sticky BIT) 目录 SetUID SetGID Sticky BIT SetUID SetUID简介 只有可以执行的二进制程序和 ...

  7. jsp九大内置对象和其作用详解

    jsp九大内置对象和其作用详解 JSP中一共预先定义了9个这样的对象,分别为:request.response.session.application.out.pagecontext.config.p ...

  8. [转载]java中import作用详解

    [转载]java中import作用详解 来源: https://blog.csdn.net/qq_25665807/article/details/74747868 这篇博客讲的真的很清楚,这个作者很 ...

  9. Multipart/form-data POST文件上传详解

    Multipart/form-data POST文件上传详解 理论 简单的HTTP POST 大家通过HTTP向服务器发送POST请求提交数据,都是通过form表单提交的,代码如下: <form ...

随机推荐

  1. python中pip的安装与更新

    python -m pip install --upgrade pip --force-reinstall

  2. mysql数据库查找数据的方法。

    今日内容 1.外键的变种 唯一索引:关键字 unique(num) 作用:使指定的列,中的属性不能重复,并且加速查找案例:create table t5(id int,num int,unique(n ...

  3. 《机器学习实战(基于scikit-learn和TensorFlow)》第七章内容学习心得

    本章主要讲述了“集成学习”和“随机森林”两个方面. 重点关注:bagging/pasting.boosting.stacking三个方法. 首先,提出一个思想,如果想提升预测的准确率,一个很好的方法就 ...

  4. linux的route

    参考: https://blog.csdn.net/u011857683/article/details/83795435 老男孩: https://blog.51cto.com/oldboy/974 ...

  5. Compress and decompress string

    You are given a string with lower case letters only. Compress it by putting the count of the letter ...

  6. 【转帖】 解开龙芯与mips4000的关系

    -- 苏联给的套件,我们只要把电子管插上就好. -- 千万次机器,不晓得来源 DJS-130系列,16位小型机,仿造美国NOVA DJS-180系列,超级小型机,仿造美国DEC VAX, 能跑DEC的 ...

  7. BandingList 泛型集合数据绑定

    public IList<Student> IStudent = new List<Student>();  public BindingList<Student> ...

  8. Python +requests 关于post请求返回报错

    python+request 发送post请求:msg返回"Content type 'application/octet-stream' not supported" 一.问题源 ...

  9. GIT SSH-KEY配置以及问题解决

    GIT SSH-KEY 生成 我们在使用git的时候需要生成ssh key,我在这里说一下生成key和一些个性化操作,如:保存key的位置,如何解决Could not open a connectio ...

  10. Linux系列之putty远程登录

    在工作中,我们通常都是通过远程操作Linux服务器的,因此必须熟悉一些远程登录的软件,在此使用的是putty,在Windows上安装putty软件,通过该软件访问Linux主机. 1.远程登录步骤 1 ...