KEIL编译器设置RAM数据复位后不被初始化数据

2023-11-10

第一种,编译器设置:

这样设置RAM2,,,前提是你的RAM空间要有0x8200的大小,,,我只是举一个例子。

在用at指定空间就可以了,比如:

unsigned char  APP_MAC[6] __attribute__((at(0x20008000)));

这样只要不带电属于热启动就不会被初始化

第二种:

1. 修改分散加载文件sct,增加一个名为MYRAM的执行节,该执行节起始地址为0x1000A000,长度为0x2000字节(8KB),由UNINIT修饰:

在sct文件中这样加入:

  APP_MAC 0x20007100 UNINIT 0x08 {  
   .ANY (NO_INIT)
  }

这样再设置一句:unsigned char  APP_MAC[6] __attribute__((at(0x20007100 )));

同样也不会被初始化掉,还能指定存放地址。

第三种:

变量属性修饰符__attribute__((section(“name”),zero_init))用于将变量强制定义到name属性数据节中,zero_init表示将未初始化的变量放到ZI数据节中。因为“NO_INIT”这显性命名的自定义节,具有UNINIT属性。

比如:unsigned char  APP_MAC[6] __attribute__(((section(“NO_INIT”),zero_init));

唯一缺点是不能指定地址,同样不能初始化

最后一种:

 如何将一个模块内的非初始化变量都非零初始化

假如该模块名字为test.c,修改分散加载文件如下所示:

RW_IRAM2 0x1000A000 UNINIT 0x00002000 {test.o (+ZI)}

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

KEIL编译器设置RAM数据复位后不被初始化数据 的相关文章

  • 为 ARM 交叉编译 zlib

    我尝试为arm poky linux gnueabi交叉编译zlib 但启动 make 时出现错误 zlib 1 2 11 AR HOST ar CC HOST gcc RANLIB HOST ranlib configure prefix
  • 有没有办法在 Xcode 4 中为 ARM 而不是 Thumb 进行编译?

    如果有很多浮点运算正在进行 Apple 建议针对 ARM 进行编译 而不是针对拇指进行编译 我的整个应用程序几乎是一个大型浮点运算 iOS 应用程序开发工作流程指南中是这样说的 iOS 设备支持两种指令集 ARM 和 Thumb Xcode
  • 分析 Cortex-M7 (stm32f7) 上的 memcpy 性能

    简洁版本 从 GNU ARM 工具链中提取的 memcpy 的性能指标在 ARM Cortex M7 上对于不同的副本大小似乎差异很大 即使复制数据的代码始终保持不变 这可能是什么原因造成的 长版 我是使用 GNU Arm 工具链 11 2
  • 如何使用 Neon SIMD 将无符号字符转换为有符号整数

    如何转换变量的数据类型uint8 t to int32 t使用霓虹灯 我找不到执行此操作的任何内在因素 假设您想要将 16 x 8 位整数的向量转换为 4 个 4 x 32 位整数的向量 您可以通过首先解压缩为 16 位 然后再次解压缩为
  • 在 Intel 机器上构建 Apple Silicon 二进制文件

    如何在 macOS 11 Intel 上编译 C 项目以在 Silicon 上运行 我当前的构建脚本很简单 configure make sudo make install 我尝试过使用 host and target标志与aarch64
  • 如何设置 CMake 与 clang 交叉编译 Windows 上的 ARM 嵌入式系统?

    我正在尝试生成 Ninja makefile 以使用 Clang 为 ARM Cortex A5 CPU 交叉编译 C 项目 我为 CMake 创建了一个工具链文件 但似乎存在错误或缺少一些我无法找到的东西 当使用下面的工具链文件调用 CM
  • DS-5:什么是 FVP、RTSM、基础模型、AEM 模型、快速模型、CADI?

    DS 5 模拟器使用了很多术语 如 FVP RTSM 快速模型 基础模型 AEM 模型 CADI Arm的文档中提供的解释不是很清楚 这些术语的含义是什么 作为 DS 5 的最终用户我应该关心哪些术语 Model 软件模拟的行业术语 就 A
  • 使用 NEON 优化 Cortex-A8 颜色转换

    我目前正在执行颜色转换例程 以便从 YUY2 转换为 NV12 我有一个相当快的函数 但没有我预期的那么快 主要是由于缓存未命中 void convert hd uint8 t orig uint8 t result uint32 t wi
  • AOSP 的“午餐”组合是什么意思?我需要选择什么?

    我是 Android 设备 ROM 开发的新手 无论如何 我现在正在为具有 64 位处理器的中国设备构建 AOSP 我按照 source android com 上的菜单进行操作 当我运行 午餐 命令时 终端显示 午餐菜单 选择一个组合 我
  • arm-linux-gnueabi 编译器选项

    我在用 ARM Linux gnueabi gcc在 Linux 中为 ARM 处理器编译 C 程序 但是 我不确定它编译的默认 ARM 模式是什么 例如 对于 C 代码 test c unsigned int main return 0x
  • 直接在 ARM 目标上调试单声道应用程序

    我最近在 BeagleBone 嵌入式 ARM 设备上安装了 Mono 希望通过 USB 连接 Kinnect 传感器并使用 C Mono 控制它 我想知道 Mono 我正在使用 MonoDevelop 但我想这个问题也适用于 VS 是否允
  • 设备树不匹配:.probe 从未被调用

    我无法理解设备树的工作原理 或者具体来说为什么该驱动程序无法初始化 这是在 android 版本 3 10 的 rockchip 供应商内核中 驱动程序 看门狗 rk29 wdt c 为了可读性而减少 static const struct
  • 需要一些建议来开始在 ARM(使用 Linux)平台上编程

    我 也许 很快就会在托管 Linux 发行版的 ARM 平台上工作 我不知道哪个发行版 我知道该项目涉及视频流 但我无法告诉你更多信息 其实我只收到通知 还没见到任何人 我从来没有在这样的平台上工作过 所以我的想法是在项目开始之前进行测试
  • ARM Cortex-M3 启动代码

    我试图了解 STM32 微控制器的 Keil realview v4 附带的初始化代码是如何工作的 具体来说 我试图了解堆栈是如何初始化的 In the 文档 http infocenter arm com help index jsp t
  • ARM 汇编:从 STDIN 获取字符串

    我目前正在学习 CS 课程 我们刚刚开始在 Raspberry Pi 上使用 ARM Assembly 事实证明这相当困难 想知道是否有人可以提供帮助 我当前的任务是从 stdin 获取一个字符串 使用 scanf 并计算其中的字符数 然后
  • 你好世界,裸机 Beagleboard

    我正在尝试在我的 Beagleboard xm rev 上运行 hello world 类型的程序 C 通过调用 Cputs功能来自装配 到目前为止 我一直使用这个作为参考 http wiki osdev org ARM Beagleboa
  • GCC 变量映射和 MISRA-C

    我主要知道两种使用 GCC 声明内存映射寄存器的方法 有许多变体 使用双字段 每个外设的数据结构等 要么使用初始化为正确地址的指针 例如volatile uint32 t pMyRegister uint32 t 0xDEADBEEFUL
  • 使用arm-linux-gnueabi-gcc为Android交叉编译静态C hello world

    我想使用 arm linux gnueabi gcc 从 C 构建静态 hello world 而不是使用 NDK 独立工具链或 Codesourcery 在Ubuntu中 我做了以下事情 sudo apt get install gcc
  • 在 ARM Cortex-M3 中使用 newlib 的 malloc

    我正在为 ARM Cortex M3 NXP 的 LCP17xx 创建代码 到目前为止我一直在使用静态内存 一切都运行良好 我尝试添加动态内存支持 但是一旦调用 malloc 系统就会卡住 我正在使用 gcc 为 Arm Bare Meta
  • 读取STM32 MCU SPI数据寄存器的值

    有很多类似的问题 但似乎没有一个问题完全相同 我正在将 STML4 MCU 连接到 6 轴传感器 LSM6DS3 我已经成功地在 I2C 中实现了所有内容 但想要 SPI 的额外速度 和 DMA 如果我能让这些第一步工作起来的话 因此 第一

随机推荐

  • 程序员Linux学到什么程度,Linux学到什么程度,才可以找到合适的工作?

    首先我说一下我的学习路线吧 我是学习java出生的 懂编程的人都知道 一般我们程序员用开发系统 大多数都是在linux系统上开发的 在最开始的时候把我哥给了我一本书 我名字就叫鸟哥的私房菜 这本书非常不错 非常适合刚入门的新手看学习 里面讲
  • python中定时执行脚本

    python中定时执行脚本 引入time os sched 这三个是必备的 import time os sched def ll num print 123123456 with open tt txt ab as txt txt wri
  • Spring Cloud Edgware新特性之九:Sleuth使用MQ方式整合Zipkin

    原文 http www itmuch com spring cloud edgware new sleuth zipkin mq 众所周知 Spring Cloud Sleuth有两种方式整合Zipkin HTTP直连Zipkin方式 MQ
  • 微众银行蝉联入选《福布斯》全球区块链50强

    美东时间2023年2月7日 福布斯 杂志公布2023年全球区块链50强榜单 微众银行蝉联入选 微众银行因联合多方共建开源联盟链生态圈 以及基于DDTP Distributed Data Transfer Protocol 分布式数据传输协议
  • 腾讯云存储上传头像、文件功能(超详细保姆级)

    创建腾讯云 并实名认证 地址 申请腾讯云账号 腾讯云 产业智变 云启未来 腾讯 在官网搜索对象存储 点击立即使用 创建存储桶 无脑下一步 唯一注意点就是可以选择共有读写 以及取一个存储桶的名称 查看存储桶列表 点击进某个存储桶后 可以上传文
  • 【Qt Quick】用Qt编辑器书写C++项目、解决输出中文问题

    系统 Win10 IDE Qt 1 简介 我想直接用qt的编辑器写c 的项目 不再重新下载vs2019等 2 创建项目 创建好以后 默认会有如下代码 include
  • JDK源码汇总

    JDK源码汇总 持续更新中 Appendable
  • 关于Android中的api、implementation、compile理解

    1 compile在3 0及以上的gradle版本已弃用 2 api可以完全代替compile 利用api导入的包可以被下级引用 3 implementation只是编译时引用 并不把引入的包打包进项目 4 java library项目依然
  • 操作系统真象还原实验记录之实验十五:多线程调度

    操作系统真象还原实验记录之实验十五 多线程调度 对应书P428 9 4节 1 相关基础知识 2 实验记录 2 1 实验流程 上次实验中 实现了一个线程的运行 具体是 1 申请了一页物理页作为PCB 2 init thread填写了位于PCB
  • 攻防世界--MISC题之坚持60s

    问题描述 难度系数 四颗星 题目来源 08067CTF 题目描述 菜狗发现最近菜猫不爱理他 反而迷上了菜鸡 题目场景 暂无 题目附件 附件1 题目分析 文件是一个jar文件 于是就想到了java 其实 在我看来 它就是一个压缩包 所以 大致
  • ROS 学习笔记(一)

    前言 最近在学习ros 为毕设作准备 和师兄交流过 想了想还是先把A 的路径规划给做完 然后在去做动态无限充电的实验好了 目前学习的视频还是经典中的经典 古月ros21讲 这个看完之后再去看师兄推荐的文章 vscode开发ROS1 3 创建
  • 【板子】 0-1背包问题 一维数组

    0 1背包问题 有 N 件物品和一个容量是 V 的背包 每件物品只能使用一次 第 i 件物品的体积是 vi 价值是 wi 求解将哪些物品装入背包 可使这些物品的总体积不超过背包容量 且总价值最大 输出最大价值 输入格式 第一行两个整数 N
  • C语言之生肖、年龄、星座查询

    程序实现输入年月日 输出星座生肖年龄 代码实现 include
  • chatgpt赋能python:Python如何随机生成26个字母

    Python如何随机生成26个字母 Python是一种流行的编程语言 被广泛用于数据分析 人工智能和Web开发等领域 Python中有很多库可以用于随机生成字符 包括Python内置的random库和第三方库string 在本文中 我们将介
  • GetCurrentDirectory和SetCurrentDirectory

    GetCurrentDirectory和SetCurrentDirectory是获取和设置的线程的当前工作路径 而不是线程所在路径 下面的代码是源文件所在路径下有一个文件为write txt 而上一级路径下没有这个文件 来说明这两个函数的功
  • 获取宝塔Linux面板登陆地址账号和密码

    在ssh终端输入 etc init d bt default
  • vs中出现bug error C1083:无法打开文件

    被自己的愚蠢惊呆了 这个bug是我自己手动造成的 编译的时候出现下面的情况 解决办法 找到项目 属性 C C 常规 然后就是直接 加上这句 GeneratedFiles 如图 成功解决这个问题
  • c++代码的编译

    1 gcc和g 1 1搞清楚几个名字 GCC GNU Compiler Collection GUN编译套件 可以编译c c java objective c Fortran等语言 gcc GCC中的 GUN C Compiler C 编译
  • GCC学习

    GCC的学习 图片来源于牛客项目课程 备注 1 默认Ubuntu 没有安装GCC 安装需要一定时间 2 gcc编译c文件 g 编译c 文件 3 ctrl l 清空命令行 gcc 介绍 优点 跨平台 支持 多软件平台和硬件平台 软件平台支持
  • KEIL编译器设置RAM数据复位后不被初始化数据

    第一种 编译器设置 这样设置RAM2 前提是你的RAM空间要有0x8200的大小 我只是举一个例子 在用at指定空间就可以了 比如 unsigned char APP MAC 6 attribute at 0x20008000 这样只要不带