Keil_MDK 中绝对地址定位问题
在项目开发过程中,要求对部分函数接口、变量数组、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 中绝对地址定位问题相关推荐
- keil中关于使用_at_绝对地址定位问题
在网上看到有人提到在keil中使用_at_进行绝对地址定位问题,我简单介绍一下它的用法. 使用_at_关键字对存储器进行绝对地址定位程序如下 #i nclude<reg51.h> char ...
- Autoware 中 GPS 定位问题
本文转载自 [1] isl_qdu. Autoware 中 GPS 定位问题 [EB/OL]. https://www.jianshu.com/p/9bfdd11c3fa8, 2019-03-04/2 ...
- 单片机中绝对地址的访问 CBYTE
参考:https://blog.csdn.net/wangjiaweiwei/article/details/105254048 起因是看 英飞凌SP37 代码的时候有点疑惑,51怎么学过. void ...
- 单片机中绝对地址的访问
一.使用C51运行库中预定义宏 C51编译器提供了一组宏定义来对51系列单片机的code.data.pdata和xdata空间进行绝对寻址.规定只能以无符号数方式访问,定义了8个宏定义,其函数原型如下 ...
- linux中关于wifi函数,wifi详解(五)
user interface Android WiFiService WPA_Supplicant DHD Driver Dongle Binary BCM43xxHardware 蓝色:需要修改 黑 ...
- Apache ZooKeeper - 集群中 Follow 的作用_非事务请求的处理与 Leader 的选举分析
文章目录 Pre 非事务性请求处理过程 源码分析 选举过程 在这里插入图片描述 Leader 失效发现 Leader 重新选举 Follow 角色变更 集群同步数据 源码解析 小结 Pre 在 Zoo ...
- 机器人学习--粒子滤波及其在定位中的应用
前提基础,先看一下 贝叶斯滤波 和 蒙特卡洛方法 一.什么是粒子滤波? 这里有个基于粒子滤波的物体跟踪 案例说明: 参考:基于粒子滤波的物体跟踪 - yangyangcv - 博客园 如果还是看不懂 ...
- win2000服务器 网站设置,服务器_Win2000中DNS服务器的设置,一、DNS概述 计算机在网 - phpStudy...
Win2000中DNS服务器的设置 一.DNS概述 计算机在网络上通讯时只能识别如"192.168.0.48"之类的数字地址,那为什么当我们打开浏览器,在地址栏中输入如" ...
- Vue中获取组件声明时的name属性
在实际开发中,我们可能需要拿到组件声明时创建的一些属性,比较典型的话就是name属性,在实际开发中需要定位问题时,需要找到是哪一个组件,但是我们总不可能写代码的时候去先找到组件的name属性,然后复制 ...
- 无线传感器网络定位问题的大象群优化算法
无线传感器网络定位问题的大象群优化算法 摘要 提出了一种用于解决无线传感器网络定位问题的大象群优化算法.EHO是一种相对较新的群体智能元启发式算法,在处理NP-hard问题时取得了很好的效果.无线传感 ...
最新文章
- HBase搭建完全分布式环境
- 面试题25: 合并两个排序的链表
- 【深圳】掌通宝科技有限公司技术总监(兼架构师),约吗
- leetcode103. 二叉树的锯齿形层次遍历
- 倒N字形排列java_Java实现n位数字的全排列
- Java新职篇:变量的作用域和生存期
- ubuntu终端运行python找不到模块_在ubuntu里直接通过终端编写运行python程序
- AT070TN83调试总结(时序)
- 校本课程 计算机组装与维护,让信息技术成为校本课程开发的对象
- 如何设置需要密码才能访问的共享文件夹?
- 绍耕反失败学课程(01)— —人生只做一件事
- 在计算机硬盘使用前需要做的工作是,工作电脑的硬盘该如何保养
- 计算机 网络 硬件包括,局域网网络硬件主要包括5个
- unity给定两个点和中间点的其中一个坐标比如z坐标,求该点的坐标
- 字符串 转义 反转义
- IIS 配置PHP环境,可以运行PHP网站
- 使用snap安装mosquitto并且进行初步配置
- c 语言推箱子vs,基于C语言实现推箱子游戏
- MinIO 源码分析
- 【Code】代码答案错误怎么办?三种方法教你如何查错