IAR 指定数据存储的绝对位置

  • 方法1:@
  • 方法2:#pragma location
  • 原理:
  • 博主热门文章推荐:

指定代码编译后数据的绝对地址是比较常见的需求,如程序的某一数据或功能函数设置在bin中的绝对地址:

方法1:@

直接通过@操作符 实现(变量/函数都可以使用) :

  • uint8_t Data[x] @ (Address) = {xx, xx, xx, xx…};

举个例子:设置版本号在bin的位置为0x400:

首先在icf文件中要先定义有0x400这一块Section

这里因为我的设备用了HyperRam,所以是0x70000xxx,正常不用HyperRam就直接定义为0x0000400


之后在任一c文件中,加入下面代码:

__root const char uint8_t Software_Version[4] @ (0x70000400) = {02, 02, 02, 00};

在编译器编译链接过程中,识别到@操作符时,就会将数据放在bin对应地址:

Build之后的bin如下图,左边是加@,右边是未加

方法2:#pragma location

通过#pragma location = (Address)

在代码中变量位置前面,加上#pragma location = 0x70000400

原理:

  • __root :强制编译,是IAR的扩展关键字,保证没有使用的函数或者变量也能够包含在目标代码中
  • __no_init :强制不初始化,正常情况下,应用程序启动时,IAR运行时环境将全部全局和静态变量初始化为0。IAR C编译器支持声明不初始化的变量,使用__no_init类型限定符。声明__no_init的变量不需初始化
  • @是IAR中的地址操作符,通过@或#program location 指令来把全局变量/静态变量/代码Text 放到操作符后面的绝对地址上
  • @强制定义了编译后某数据的存储地址
  • #pragma location = Address 等价于 @ Address

博主热门文章推荐:

一篇读懂系列:

  • 一篇读懂无线充电技术(附方案选型及原理分析)
  • 一篇读懂:Android/iOS手机如何通过音频接口(耳机孔)与外设通信
  • 一篇读懂:Android手机如何通过USB接口与外设通信(附原理分析及方案选型)

LoRa Mesh系列:

  • LoRa学习:LoRa关键参数(扩频因子,编码率,带宽)的设定及解释
  • LoRa学习:信道占用检测原理(CAD)
  • LoRa/FSK 无线频谱波形分析(频谱分析仪测试LoRa/FSK带宽、功率、频率误差等)

网络安全系列:

  • ATECC508A芯片开发笔记(一):初识加密芯片
  • SHA/HMAC/AES-CBC/CTR 算法执行效率及RAM消耗 测试结果
  • 常见加密/签名/哈希算法性能比较 (多平台 AES/DES, DH, ECDSA, RSA等)
  • AES加解密效率测试(纯软件AES128/256)–以嵌入式Cortex-M0与M3 平台为例

嵌入式开发系列:

  • 嵌入式学习中较好的练手项目和课题整理(附代码资料、学习视频和嵌入式学习规划)
  • IAR调试使用技巧汇总:数据断点、CallStack、设置堆栈、查看栈使用和栈深度、Memory、Set Next Statement等
  • Linux内核编译配置(Menuconfig)、制作文件系统 详细步骤
  • Android底层调用C代码(JNI实现)
  • 树莓派到手第一步:上电启动、安装中文字体、虚拟键盘、开启SSH等
  • Android/Linux设备有线&无线 双网共存(同时上内、外网)

AI / 机器学习系列:

  • AI: 机器学习必须懂的几个术语:Lable、Feature、Model…
  • AI:卷积神经网络CNN 解决过拟合的方法 (Overcome Overfitting)
  • AI: 什么是机器学习的数据清洗(Data Cleaning)
  • AI: 机器学习的模型是如何训练的?(在试错中学习)
  • 数据可视化:TensorboardX安装及使用(安装测试+实例演示)

IAR 指定数据存储的绝对位置相关推荐

  1. rpm mysql 指定目录_rpm 安装并配置MySQL(包含指定数据存储路径)

    1.安装rpm包 rpm -ivh /home/mysql-rpms/*.rpm 2.拷贝配置文件 cp /usr/share/mysql/my-small.cnf /etc/my.cnf 3.修改/ ...

  2. Keil AC5/Keil AC6/IAR指定数据绝对存储地址

    文章目录 1 前言 2 实现方法 3 例子 1 前言   编译过程中,指定数据绝对存储地址在实际项目中会经常使用到或者必须用到,这样使得项目实现某些功能可以非常灵活,常用的场景有: IAP升级时候,中 ...

  3. 1203 - 数据存储 - 应用安装位置

    应用安装位置 来源:Android Develop - API Guides - Data Storage - App Install Location 自 API Level 8 开始,我们可以让应 ...

  4. Android之文件数据存储

    一.文件保存数据介绍 Activity提供了openFileOutput()方法可以用于把数据输出到文件中,具体的实现过程与在J2SE环境中保存数据到文件中是一样的.文件可用来存放大量数据,如文本.图 ...

  5. 大数据存储基石——HDFS

    简介 HDFS产生背景 随着数据量越来越大,在一个本地文件系统里边已经存不下所有的数据,需要将数据分配到更多的操作系统和文件管理系统,但是不方便管理和维护,所以需要一个系统来统一管理这些存储了所有数据 ...

  6. iOS开发简单高效的数据存储

    在iOS开发过程中,不管是做什么应用,都会碰到数据保存的问题,你是用什么方法来持久保存数据的?这是在几乎每一次关于iOS技术的交流或讨论都会被提到的问题,而且大家对这个问题的热情持续高涨.本文主要从概 ...

  7. extjs2.0 文件上传_extjs数据存储与传输

    本章内容 qExt.data简介 qExt.data.Connection qExt.data.Record qExt.data.Store q常用proxy q常用reader q高级store q ...

  8. iOS开发之数据存储

    概览 在iOS开发中数据存储的方式可以归纳为两类:一类是存储为文件,另一类是存储到数据库.例如前面IOS开发系列-Objective-C之Foundation框架的文章中提到归档.plist文件存储, ...

  9. mysql数据存储到指定位置_Mysql数据库表分区存储到指定磁盘路径

    . 前提: mysql5.6.6以上的版本以上的版本才支持单表指定目录,且目录权限是MySQL:mysql.  在mysql中数据文件存放于在my.cnf中datadir指定的路径,使用的表引擎不同产 ...

  10. Outlook 2003中各个数据存储和配置文件的存放位置

    这个还是比较有用的 以下是 Microsoft Outlook 2003 所用的数据存储和配置文件的列表.某些文件夹可能是隐藏文件夹.以Windows XP 为列,.打开"我的电脑" ...

最新文章

  1. [TypeScript][文档]变量
  2. 【Android 启动过程】Activity 启动源码分析 ( ActivityThread 流程分析 二 )
  3. java找出两个字符串中所有共同的子串_【Java笔记】
  4. Linux0.11内核剖析--内核体系结构
  5. 字符串拼接+和concat的区别
  6. Matlab各种分布的函数
  7. “约见”面试官系列之常见面试题之第六十八篇之本地对象 内置对象 宿主对象(建议收藏)
  8. spring mvc学习(38):Unknow tag(c:forEach)错误解决办法,jstl.jar包以及standard.jar包下载与导入
  9. 【转】坐标系变换矩阵推导
  10. java 异常处理的关键字_java异常,异常处理,异常类 关键字:throws 和 throw 自定义的异常类...
  11. vue 下载本地静态资源(xls等)
  12. python 接口自动化测试王浩然 pdf_Python接口自动化测试
  13. 2021年中国商业银行发展现状及龙头企业对比分析[图]
  14. 《CISCO交换机常用命令》——【思科交换机配置及维护技能】
  15. 根据经纬度查询两点距离(sql)
  16. 项目 | Java+PhantomJs爬虫实战——半次元 下载高清原图
  17. Paper:可解释性之ICE/PDP《Peeking Inside the Black Box: Visualizing Statisti窥视黑盒内部:用个体条件期望ICE图可视化统计学习》翻译与解读
  18. Qt Design Studio 2.2 测试版发布啦!迎来全新属性视图
  19. 我分析了b站10万条弹幕,发现了歪嘴战神的终极奥义!(文末重磅福利)
  20. 计算机网络 - 面试篇

热门文章

  1. 用正则表达式验证邮箱、密码、QQ号、手机号、身份证号
  2. OverLeaf(LaTeX在线编辑器)使用简介
  3. 如何成为一名区块链工程师? | 附学习资源
  4. 【第三方互联】微博2、创建新浪微博(sina)互联应用
  5. Matlab窄带信号的测向算法
  6. 宇枫资本上班族理财的方法
  7. 《蔡康永的说话之道》书摘
  8. 如何查看一篇论文是否被SCI检索
  9. mysql大于等于号
  10. 解决阿里云FTP 227 Entering Passive Mode