历史上的今天

今天是:2024年09月21日(星期六)

2019年09月21日 | STM32中stm32f0xx_flash.icf文件的作用详解!

发布者:ikfnpo 来源: eefocus关键字:STM32  stm32f0xx_flash  icf文件  链接文件 手机看文章 扫描二维码
随时随地手机看文章

每个芯片开发商都会针对每款芯片来编写一个.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  stm32f0xx_flash  icf文件  链接文件 引用地址:STM32中stm32f0xx_flash.icf文件的作用详解!

上一篇: STM32 USART串口DMA 接收和发送的源码详解!
下一篇:STM32F0造就盖亚智能城市崛起

推荐阅读

手机解锁非得靠指纹?开门还在用钥匙?取钱付钱还要按密码?今后,搞定这一切只需看“你的眼神”。9月17日,武汉光谷自主研发的虹膜生物识别芯片,通过严格的性能测试,流片成功,年内将由全球半导体巨头台积电代工量产。 这款芯片型号为“虹膜生物识别乾芯ASIC芯片QX8001”,由总部位于武汉未来科技城的虹识技术有限公司研发。为了这枚米粒大小的生物芯片...
硬件平台:STM32F103ZET6; 开发环境:KEIL 4;先说说应用通讯模式,串口终端的工作方式和迪文屏差不多,终端被动接受MCU发的指令,终端会偶尔主动发送一些数据给MCU(像迪文屏的触摸信息上传)。串口DMA发送:发送数据的流程:前台程序中有数据要发送,则需要做如下几件事1.在数据发送缓冲区内放好要发送的数据,说明:此数据缓冲区的首地址必须要在DMA...
继中兴发布全球首款屏下摄像头手机A20 5G之后,越南手机品牌Vsmart计划在下个月发布屏下摄像头手机,一时间屏下摄像头手机成为行业一大热点。但是手机大厂却异常沉默,除了擅长营销的小米趁热点之外,华为、OPPO、vivo、苹果、三星等都在一旁观望,下半年并无意凑热闹。屏下摄像头手机到底如何?为何雷声大雨点小?进入全面屏时代之后,智能手机屏幕的更...
英飞凌科技股份公司日前宣布,其位于奥地利菲拉赫的300毫米薄晶圆功率半导体芯片工厂正式启动运营。这座以“面向未来”为座右铭的芯片工厂,总投资额为16亿欧元,是欧洲微电子领域同类中最大规模的项目之一,也是现代化程度最高的半导体器件工厂之一。欧盟委员Thierry Breton、奥地利总理Sebastian Kurz、英飞凌科技股份公司首席执行官Reinhard Ploss博...

史海拾趣

问答坊 | AI 解惑

西门子 PROFIBUS2DP 现场总线及应用

根据尾桨试验台拖动系统的特点及技术要求 , 采用 S72300 PLC作为中央控制器 , PⅡ工控机作为监控计算机 , SIMOVERTMD 工程型变频器作为 DP从站 , 构成了一个基于 PROFIBUS2DP现场总线的控制网络。…

查看全部问答∨

基于ARM的直流电机调速系统的设计与实现

摘要:阐述了基于ARM的嵌入式智能小车系统中的直流电机调速子系统,此调速系统主要由S3C44B0X处理器和L298N电机驱动芯片构成,主要功能是驱动小车的两个车轮,调节小车的行驶速度和方向。文中详细介绍了S3C44B0X处理器中的相关寄存器设置及工作方式 ...…

查看全部问答∨

基于LabVIEW的双机器人实时控制系统设计

开发一种安全且可靠的机器人康复系统,对中风后手臂残障的病人提供援助,以辅助治疗手臂运动,协调和指引手臂。 解决方案: 使用NI公司LabVIEW软件对两个定制机器人实现双持续的实时性控制系统,通过与治疗师沟通所需要使用而设计的用户界面(UI ...…

查看全部问答∨

嵌入式环境下3G上网模块调试?

小弟最近需要在嵌入式环境下对3G上网模块进行调试,采用的模块是华为的EM775。以前是有对GPRS进行调试的一些经验,但是对于3G上网模块,又是USB驱动,又是模块驱动的,有点摸不到头脑了。请问论坛里的各位前辈,有谁有这方面的经验,顺便指点下?? ...…

查看全部问答∨

关于CE下线程执行优先级的问题

{ ...... // 启动线程,开始播放声音, 并将线程的优先权设置为最高,希望它立即去执行 HANDLE m_hThread = CreateThread(NULL, 0, TOPlaySoundThread, NULL, 0, NULL); SetThreadPriority( m_hThread,THREAD_PRIORITY_TIME_CRITICAL); Sleep( ...…

查看全部问答∨

如果我要win ce dll驱动程序动态加载,是不是要改掉*.reg文件

我一个wince的键盘驱动程序的*.reg参数文件是这样写的: [HKEY_LOCAL_MACHINE\\Drivers\\BuiltIn\\HGPIOs]       "Index"=dword:1       "Prefix"="HGP"       "Dl ...…

查看全部问答∨

有关噪音传感器的问题

大师们好!     有谁能给我提供一些噪音传感器的商品介绍。加入测马路上的噪音应该用到什么样子灵敏度的噪音,有没有推荐的。     只有mic加放大器够用么?…

查看全部问答∨

怎么使得CComboBox默认是上拉?

一般来说只要到屏幕底端有足够空间,就下拉. 如果没有足够空间就上拉. 那么应该存在的上拉这个功能. 我想让它自动默认的为上拉,该怎么做? 如果不行,也可以这样,让下拉菜单不要长出我的对话框的底端也可以…

查看全部问答∨

LPC1114数据寄存器

最近又看了一下LPC1114的数据寄存器的内容。数据寄存器允许从被设置为输入的引脚上读取数据,往被设置输出的引脚写值。每个端口数据寄存器占用地址空间的0-0X3FFC,地址位13:2用于屏蔽。如图1:  原先一直对这个数据屏蔽作用搞不太懂,现在 ...…

查看全部问答∨

求 邦华330 无线扩音器电路原理图!

邦华330改进版、 最新功能:数字收音,USB、SD读卡功能,数字显示屏,卡座功能           技术参数:   1.电源:AC220V 内置DC12V/1.2AH 蓄电池,外接VDC   2.频率范围:VHF165-265MHz   3.振 ...…

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved