每个芯片开发商都会针对每款芯片来编写一个.icf文件就是传说中的链接文件。对于基本的应用,这个.icf文件足以满足你的工程需要。但有时也会需要改动,比如当你的项目要添加外部RAM时就要修改一下icf。
1、Icf到底干了啥呢?
定义了芯片存储空间的大小。
定义ROM的大小和起始、结束地址。
定义RAM的大小和起始、结束地址。
当然这些都是最基本的,你也可以设置以下的东西来匹配你的具体项目。
链接时是否保存位块与符号
设置你的启动过程
设置你的堆与栈的大小和对齐方式
修改编译器默认的初始化过程。
关于默认库的处理等。。。
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 USART串口DMA 接收和发送的源码详解!
下一篇:STM32F0造就盖亚智能城市崛起
推荐阅读
史海拾趣
B公司原本是一家地区性的电子产品供应商,为了拓展国际市场,决定采用CIF交易模式。通过与国外客户的深入沟通和合作,B公司成功打开了多个海外市场。同时,B公司还积极参与国际电子产品展会,提升品牌知名度,进一步巩固了其在全球市场的地位。
随着公司技术的不断进步,Advanced Electronic Packaging公司开始寻求与行业内知名厂商的合作机会。通过与一家全球领先的电子产品制造商达成战略合作,公司成功将其先进的封装技术应用于对方的高端产品线中。这一合作不仅提升了合作双方的产品竞争力,还为Advanced Electronic Packaging公司带来了可观的利润回报。此后,公司陆续与多家知名企业建立了合作关系,进一步巩固了其在电子封装领域的市场地位。
在环保意识日益增强的今天,AEP公司积极响应国家号召,致力于绿色环保和可持续发展。公司投入大量资金研发环保型电子元器件,减少生产过程中的废弃物排放。同时,公司还建立了完善的废旧产品回收机制,对废旧产品进行环保处理,实现资源的循环利用。这一举措不仅提升了AEP公司的社会形象,也为公司的可持续发展注入了新的动力。
随着市场的不断拓展,FTDI也面临着诸多挑战,包括如何吸纳优秀的技术人才、打击假冒芯片以及提供本地化的技术支持等。为了应对这些挑战,FTDI采取了多项措施,包括引进经验丰富的工程师和潜力大学毕业生充实技术团队,加强对本地分销商的培训,以及增加对重点应用市场的技术支持力度。这些措施不仅提升了FTDI的技术实力和市场响应速度,也进一步巩固了其在全球市场的地位。
中移物联网自2012年成立以来,便致力于物联网专用网络的建设。根据中国移动的整体战略布局,公司开发并运营了物联网连接管理平台OneLink和物联网应用开放平台OneNET,为各行业提供稳定、高效的物联网连接服务。这些平台的建立,不仅满足了市场对于物联网连接的需求,也为公司后续业务的拓展奠定了坚实基础。
中移物联网始终秉持开放、合作、共享的发展理念,与国内外众多企业建立了紧密的合作关系。公司积极与硬件设备厂商、软件开发商、解决方案提供商等开展技术合作,共同推动物联网技术的创新与应用。同时,中移物联网还与行业协会、学术机构建立合作关系,加强技术交流和合作研究,为构建良好的物联网产业生态做出了积极贡献。这些合作不仅提升了公司的技术实力和市场竞争力,也推动了整个物联网行业的健康发展。
根据尾桨试验台拖动系统的特点及技术要求 , 采用 S72300 PLC作为中央控制器 , PⅡ工控机作为监控计算机 , SIMOVERTMD 工程型变频器作为 DP从站 , 构成了一个基于 PROFIBUS2DP现场总线的控制网络。… 查看全部问答∨ |
摘要:阐述了基于ARM的嵌入式智能小车系统中的直流电机调速子系统,此调速系统主要由S3C44B0X处理器和L298N电机驱动芯片构成,主要功能是驱动小车的两个车轮,调节小车的行驶速度和方向。文中详细介绍了S3C44B0X处理器中的相关寄存器设置及工作方式 ...… 查看全部问答∨ |
开发一种安全且可靠的机器人康复系统,对中风后手臂残障的病人提供援助,以辅助治疗手臂运动,协调和指引手臂。 解决方案: 使用NI公司LabVIEW软件对两个定制机器人实现双持续的实时性控制系统,通过与治疗师沟通所需要使用而设计的用户界面(UI ...… 查看全部问答∨ |
小弟最近需要在嵌入式环境下对3G上网模块进行调试,采用的模块是华为的EM775。以前是有对GPRS进行调试的一些经验,但是对于3G上网模块,又是USB驱动,又是模块驱动的,有点摸不到头脑了。请问论坛里的各位前辈,有谁有这方面的经验,顺便指点下?? ...… 查看全部问答∨ |
{ ...... // 启动线程,开始播放声音, 并将线程的优先权设置为最高,希望它立即去执行 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 ...… 查看全部问答∨ |
一般来说只要到屏幕底端有足够空间,就下拉. 如果没有足够空间就上拉. 那么应该存在的上拉这个功能. 我想让它自动默认的为上拉,该怎么做? 如果不行,也可以这样,让下拉菜单不要长出我的对话框的底端也可以… 查看全部问答∨ |
|
最近又看了一下LPC1114的数据寄存器的内容。数据寄存器允许从被设置为输入的引脚上读取数据,往被设置输出的引脚写值。每个端口数据寄存器占用地址空间的0-0X3FFC,地址位13:2用于屏蔽。如图1: 原先一直对这个数据屏蔽作用搞不太懂,现在 ...… 查看全部问答∨ |
邦华330改进版、 最新功能:数字收音,USB、SD读卡功能,数字显示屏,卡座功能 技术参数: 1.电源:AC220V 内置DC12V/1.2AH 蓄电池,外接VDC 2.频率范围:VHF165-265MHz 3.振 ...… 查看全部问答∨ |