Keil_MDK 中绝对地址定位问题

在项目开发过程中,要求对部分函数接口、变量数组、obj文件、bin文件等要指定位置。

以下是我项目中遇到的问题及如何解决的方案:
## 对部分函数接口指定位置: ##
应用场景说明:当IAP(提供下载程序的功能)和应用程序编写在一个工程文件中时,需要对IAP程序指定相应的地址(如:0x0001000 ~0x0008000),目的是为了保证能区分开IAP和应用程勋的存放位置。
因此需要进行如下操作

a、首先在sct脚本中编写一个段空间(网上可以搜索到sct链接脚本的语法格式及说明,这里不再叙述),如下所示:IAP_IROM的段空间的定义。
LR_IROM1 0x00000000 0x00010000  {    ; load region size_region
  ER_IROM1 0x00000000 0x0001000  {  ; load address = execution address
    *.o (RESET, +First)
    *(InRoot$$Sections)
  }

IAP_IROM 0x0001000 0x0007000   {  ; load address = execution address
    *.o(iapSection)
  }

APP_IROM 0x0008000 0x00010000 {
    .ANY (+RO)
  }

RW_IRAM1 0x20000000 0x00004000  {  ; RW data
   .ANY (+RW +ZI)
  }
}
b、然后在每个需要放入IAP_IROM 区域的函数进行如下定义:
__attribute__ ((section ("iapSection"))) int f3()
{
  return 1;
} 

为了使程序显得更加美观,因此建议采用宏定义的方式编写

#define __IAP (__attribute__ ((section ("iapSection"))))

 int __IAP f3()
{
  return 1;
}

void __IAP f4()
{
  ...
  return 1;
}

以上这个写法是模仿Linux中驱动编写的方式。
c、如果还是不喜欢上述风格,则可以利用下面这种预处理指令

#pragma arm section code="iapSection"
  int f2()
  {
      return 1;
  }          // into the 'iapSection' area

  int f4()
  {
      return 1;
  }         // into the 'iapSection' area   

#pragma arm section                 

## 变量数组指定位置 ##
未完待续。。。

  • 3
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: Keil ARM MDK 5.00是一种用于嵌入式开发的集成开发环境(IDE)。它是Keil公司推出的一套ARM架构微控制器开发工具。 Keil ARM MDK 5.00提供了一套完整的开发工具和环境,包括编译器、调试器和IDE。它支持ARM Cortex-M系列处理器,可以用于开发各种嵌入式系统,如单片机、传感器、无线通信模块等。 Keil ARM MDK 5.00的编译器采用了高度优化的ARM C/C++编译器,能够生成高效的机器代码,提高系统性能。同时,它还集成了丰富的调试功能,包括实时变量查看、寄存器监视、内存访问等,方便开发者进行程序调试和优化。 Keil ARM MDK 5.00的IDE提供了友好的用户界面,简化了开发流程。开发者可以使用它来创建项目、编写代码、进行编译和调试,还可以通过集成的仿真器或外部调试器来调试目标系统。同时,它还提供了一些额外的工具和组件,如RTOS、断优先级分析器等,帮助开发者更好地进行嵌入式开发。 总的来说,Keil ARM MDK 5.00是一款功能强大的嵌入式开发工具,它提供了全面的开发环境和各种工具,帮助开发者更方便地进行ARM架构的嵌入式系统开发。无论是初学者还是经验丰富的开发者,都可以通过使用Keil ARM MDK 5.00来加快开发速度、提高开发效率。 ### 回答2: Keil ARM MDK 5.00是一款用于嵌入式系统开发的软件开发工具。它由ARM公司开发和发布,可提供给开发人员一系列的工具和环境,用于开发和调试ARM处理器架构的嵌入式应用程序。 Keil ARM MDK 5.00具有集成开发环境(IDE),包括一个程序编辑器、编译器、调试器和仿真器。它通过集成多个工具和功能为开发人员提供了便利,可以高效地开发嵌入式系统。 这个开发工具还支持多种ARM处理器架构,例如ARM7、ARM9、Cortex-M0 / M0+、Cortex-M3 /M4等。它提供了丰富的软件库,包括启动代码、外设驱动、间件和操作系统,并提供了各种示例项目,以帮助开发人员快速上手和开发。 Keil ARM MDK 5.00还提供了强大的调试功能,包括实时跟踪程序执行、变量和寄存器查看、调试消息跟踪等。开发人员可以使用仿真器和调试器来调试代码,查找和修复错误,并进行性能优化。 此外,Keil ARM MDK 5.00还提供了一系列的性能分析工具,可以帮助开发人员评估和优化代码的性能。开发人员可以使用这些工具来了解代码的执行时间、内存使用情况和功耗等指标,以优化系统性能和资源利用率。 总之,Keil ARM MDK 5.00是一款功能强大的嵌入式系统开发工具,为开发人员提供了一体化的开发环境和强大的调试功能,可以帮助开发人员快速、高效地开发和调试ARM处理器架构的嵌入式应用程序。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值