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

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

a、首先在sct脚本中编写一个段空间(网上可以搜索到sct链接脚本的语法格式及说明,这里不再叙述),如下所示:IAP_IROM的段空间的定义。
LR_IROM1 0x00000000 0x00010000  {    ; load region size_regionER_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' areaint f4(){return 1;}         // into the 'iapSection' area   #pragma arm section                 

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

Keil_MDK 中绝对地址定位问题相关推荐

  1. keil中关于使用_at_绝对地址定位问题

    在网上看到有人提到在keil中使用_at_进行绝对地址定位问题,我简单介绍一下它的用法. 使用_at_关键字对存储器进行绝对地址定位程序如下 #i nclude<reg51.h> char ...

  2. Autoware 中 GPS 定位问题

    本文转载自 [1] isl_qdu. Autoware 中 GPS 定位问题 [EB/OL]. https://www.jianshu.com/p/9bfdd11c3fa8, 2019-03-04/2 ...

  3. 单片机中绝对地址的访问 CBYTE

    参考:https://blog.csdn.net/wangjiaweiwei/article/details/105254048 起因是看 英飞凌SP37 代码的时候有点疑惑,51怎么学过. void ...

  4. 单片机中绝对地址的访问

    一.使用C51运行库中预定义宏 C51编译器提供了一组宏定义来对51系列单片机的code.data.pdata和xdata空间进行绝对寻址.规定只能以无符号数方式访问,定义了8个宏定义,其函数原型如下 ...

  5. linux中关于wifi函数,wifi详解(五)

    user interface Android WiFiService WPA_Supplicant DHD Driver Dongle Binary BCM43xxHardware 蓝色:需要修改 黑 ...

  6. Apache ZooKeeper - 集群中 Follow 的作用_非事务请求的处理与 Leader 的选举分析

    文章目录 Pre 非事务性请求处理过程 源码分析 选举过程 在这里插入图片描述 Leader 失效发现 Leader 重新选举 Follow 角色变更 集群同步数据 源码解析 小结 Pre 在 Zoo ...

  7. 机器人学习--粒子滤波及其在定位中的应用

    前提基础,先看一下 贝叶斯滤波  和 蒙特卡洛方法 一.什么是粒子滤波? 这里有个基于粒子滤波的物体跟踪 案例说明: 参考:基于粒子滤波的物体跟踪 - yangyangcv - 博客园 如果还是看不懂 ...

  8. win2000服务器 网站设置,服务器_Win2000中DNS服务器的设置,一、DNS概述 计算机在网 - phpStudy...

    Win2000中DNS服务器的设置 一.DNS概述 计算机在网络上通讯时只能识别如"192.168.0.48"之类的数字地址,那为什么当我们打开浏览器,在地址栏中输入如" ...

  9. Vue中获取组件声明时的name属性

    在实际开发中,我们可能需要拿到组件声明时创建的一些属性,比较典型的话就是name属性,在实际开发中需要定位问题时,需要找到是哪一个组件,但是我们总不可能写代码的时候去先找到组件的name属性,然后复制 ...

  10. 无线传感器网络定位问题的大象群优化算法

    无线传感器网络定位问题的大象群优化算法 摘要 提出了一种用于解决无线传感器网络定位问题的大象群优化算法.EHO是一种相对较新的群体智能元启发式算法,在处理NP-hard问题时取得了很好的效果.无线传感 ...

最新文章

  1. HBase搭建完全分布式环境
  2. 面试题25: 合并两个排序的链表
  3. 【深圳】掌通宝科技有限公司技术总监(兼架构师),约吗
  4. leetcode103. 二叉树的锯齿形层次遍历
  5. 倒N字形排列java_Java实现n位数字的全排列
  6. Java新职篇:变量的作用域和生存期
  7. ubuntu终端运行python找不到模块_在ubuntu里直接通过终端编写运行python程序
  8. AT070TN83调试总结(时序)
  9. 校本课程 计算机组装与维护,让信息技术成为校本课程开发的对象
  10. 如何设置需要密码才能访问的共享文件夹?
  11. 绍耕反失败学课程(01)— —人生只做一件事
  12. 在计算机硬盘使用前需要做的工作是,工作电脑的硬盘该如何保养
  13. 计算机 网络 硬件包括,局域网网络硬件主要包括5个
  14. unity给定两个点和中间点的其中一个坐标比如z坐标,求该点的坐标
  15. 字符串 转义 反转义
  16. IIS 配置PHP环境,可以运行PHP网站
  17. 使用snap安装mosquitto并且进行初步配置
  18. c 语言推箱子vs,基于C语言实现推箱子游戏
  19. MinIO 源码分析
  20. 【Code】代码答案错误怎么办?三种方法教你如何查错

热门文章

  1. java 双机热备_MySQL双机热备
  2. 配置与管理Ubuntu 21.10
  3. 腾讯微云和坚果云哪个好用?
  4. Matlab yalmip 符号变量syms和sdpvar的替换
  5. 微信登陆之生成微信二维码
  6. vue初学篇----过滤器(filters)
  7. Arcgis使用教程(九)ARCGIS空间数据符号化
  8. 福建选择阿里云服务器地域(华南/华东/华北)哪个更好?
  9. 算法岗实习面试经历(机器学习/强化学习岗实习生)
  10. 北京二手房价预测(数据分析)