EWARM IAR5.4编译链接过程, 程序运行阶段, ICF ilink配置文件

编译链接过程

编译器, 汇编器和链接器完成将代码转换成可执行文件的过程.

编译过程
首先是编译器和汇编器, 这是链接之前的工作, 生成可重定向的目标文件, 进而可以生成库文件:

命令为: iccarm myfile.c

链接过程
链接器的输入除了有上阶段产生的目标文件和库文件之外, 还需要链接配置文件, 目的是让链接器知道数据段, 代码段等具体放在哪个地址, 类似的还需要知道程序入口地址.

命令为: ilinkarm myfile.o myfile2.o -o a.out --config myconfigfile.icf

后链接过程

经过链接好之后得到的文件就是符合ELF格式的可执行镜像了, 之后可以将这个镜像文件转换成HEX文件烧入到Flash/PROM中去.

-----------------------------------------------------------
程序运行阶段

代码的运行可分为初始化阶段, 执行阶段和结束阶段.

初始化阶段
初始化阶段一般指从程序第一条语句开始到进入main函数之前, 一般由cstartup.s完成, 初始化阶段一般要做:
硬件初始化--堆栈指针, 中断向量, CPU时钟等;
软件初始化--全局变量等;
应用程序初始化--RTOS环境;


执行阶段
通常是循环扫描, 中断驱动, 对于RTOS多任务来说就是任务调度了.

结束阶段

嵌入式程序一般不结束, 但可用exit语句来结束代码运行, 届时所有的资源会被回收.

-----------------------------------------------------------
链接配置文件icf

链接器通常会将应用程序分成好几个段, 譬如有bss段、data段、text段.

具体为:

一般认为已初始化的全局变量保存在.data段中, 未初始化的全局变量保存在.bss段中.

IAR的icf文件有专门的语句来配置不同的程序段, 一个简单的icf文件的片段如下:

在icf文件中也可以找到__iar_program_start标志位, 用于表示cstartup.s的入口地址.

-----------------------------------------------------------
参考:EWARM_DevelopmentGuide.ENU.pdf
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值