历史上的今天
返回首页

历史上的今天

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

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

2019-09-21 来源:eefocus

每个芯片开发商都会针对每款芯片来编写一个.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(我就是),但是个人觉得,这对于我们理解单片机有很大的帮助。不然的话,对于单片机的理解就简单停留在外设操作了。

推荐阅读

史海拾趣

Capital Advanced Technologies公司的发展小趣事

品质管理是CAT发展的重要保障。公司建立了严格的质量管理体系,从原材料采购到产品制造、检验、包装等各个环节都进行严格的品质控制。CAT还注重与客户的沟通与协作,及时了解客户需求,为客户提供个性化的解决方案和优质的售后服务。这些举措使得CAT赢得了客户的广泛信赖和长期合作。

Great American Electronics公司的发展小趣事

面对未来电子行业的发展趋势和市场变化,CAT制定了明确的发展战略和布局。公司将继续加大研发投入,推动技术创新和产业升级;同时,积极拓展新的应用领域和市场空间,寻求与更多合作伙伴的共赢发展。此外,CAT还将注重人才培养和团队建设,为公司的长远发展提供坚实的人才保障。

通过以上五个故事,我们可以看到Capital Advanced Technologies公司在电子行业里发展起来的艰辛与辉煌。他们凭借技术创新、市场拓展、品质管理和战略布局等方面的不断努力,逐渐成为了电子行业的领军企业。

Bellin公司的发展小趣事

品质管理是CAT发展的重要保障。公司建立了严格的质量管理体系,从原材料采购到产品制造、检验、包装等各个环节都进行严格的品质控制。CAT还注重与客户的沟通与协作,及时了解客户需求,为客户提供个性化的解决方案和优质的售后服务。这些举措使得CAT赢得了客户的广泛信赖和长期合作。

思博科技(Cybermax)公司的发展小趣事

在2005年的一个阳光明媚的春天,思博科技(Cybermax)公司在硅谷正式成立。创始人李明,一位经验丰富的电子工程师,看准了当时电子市场蓬勃发展的机遇,决定创办自己的公司。起初,公司只有几名员工,主要致力于研发和生产高性能的电子元器件。通过不懈的努力和优质的产品,思博科技逐渐在市场上崭露头角。

CST Master Electronic Co Ltd公司的发展小趣事

在国内市场取得一定成绩后,CST Master决定进军国际市场。然而,国际市场的竞争更加激烈,法律法规和文化差异也给公司带来了不小的挑战。公司积极调整市场策略,加强与当地合作伙伴的合作,逐步打开了国际市场的大门。通过不断的努力,CST Master在国际市场上也取得了一定的份额。

Chengdu Sino Microelectronics Technology Co Ltd公司的发展小趣事

在集成电路设计领域,技术的突破是赢得市场的关键。成都华微科技始终坚持以技术研发为核心,不断投入巨资进行技术研发和创新。经过多年的努力,公司在可编程逻辑器件、系统级芯片、存储器和模数/数模转换器(AD/DA)芯片等领域取得了重大突破,产品性能达到了国内领先水平。这些技术突破不仅为公司赢得了市场的认可,也提升了中国集成电路设计行业的国际地位。

问答坊 | AI 解惑

SJA1000独立的CAN控制器.

关键词SJA1000,CAN控制器.本文将很详细的介绍SJA1000芯片来独立的做CAN控制器.…

查看全部问答>

汽车点烟器输出电压和电流是多少呢?

汽车点烟器输出电压和电流是多少呢? 电脑的光驱有多少的电压和电流呢? 如果把光驱放到车上要接多大的电阻呢? 接什么东西 能把电流降到 1.5A 呢?  光驱的电流是1.5A  如果电流大了,光驱会坏吗? [ 本帖最后由 sunsonglin 于 2009-2-2 ...…

查看全部问答>

冰箱:高端驶入快车道 中国成全球“风向标”

本帖最后由 jameswangsynnex 于 2015-3-3 19:57 编辑 然国际金融危机给家电业带来了不小的冲击,但是受益于家电下乡、以旧换新等一系列利好政策,2009年我国的高端冰箱市场出现了快速增长的态势。另外,随着低碳理念的深入人心,企业节能技术不断 ...…

查看全部问答>

ARM Pc寄存器的一个问题

我在看书看到这样一段话: 对于arm指令集来说,PC指向当前指令的下两条指令的地址,由于ARM指令是字对齐的,PC值的第0位和第一位总为0, 这句话全不懂,谁能解释下呢…

查看全部问答>

请问mw5一定要用TI的通讯模块吗?如果用wavecom的通讯模块,我该如何对ril进行处理

请问mw5一定要用TI的通讯模块吗?如果用wavecom的通讯模块,我该如何对ril进行处理?哪怕是给个思路也好,谢谢…

查看全部问答>

问一下MSP430f42xx里的SAD( Sigma-Delta A/D)怎么用啊?

本帖最后由 paulhyde 于 2014-9-15 09:44 编辑 Sigma-Delta A/D 原理基本不懂····和逐次比较的有什么不同?还有怎样操作它?  …

查看全部问答>

【悬赏求助】launchpad捕获按键按下的时间

最近在学习launchpad,中断方面困难重重。。。我想实现这样一个功能:P1.1设为输入,连接一个按键,然后利用中断判断按键按下的时间,要是短按的话就LED1翻转,长按的话LED2翻转。这样的话,我知道应该用捕获模式获取时间信息对吧,但是实现过程一 ...…

查看全部问答>

MSP430硬件I2C程序

MSP430硬件I2C程序,已测试通过,有兴趣的可探讨探讨…

查看全部问答>