MDK平台 - Code, RO-data , RW-data, ZI-data详解

文章目录

  • 1 . 前言
  • 2 . Code, RO-data , RW-data, ZI-data解析
  • 3 . RAM上电复位
  • 4 . 细节扩展
  • 5 . 总结


【全文大纲】 : https://blog.csdn.net/Engineer_LU/article/details/135149485


1 . 前言

MDK编译后,会列出Code, RO-data , RW-data, ZI-data,以下解析各段内容


2 . Code, RO-data , RW-data, ZI-data解析


  • Code : 顾名思义就是代码区域

  • RO-data(Read Only data) :是指常量数据, 程序编译下来把常量数据编译到RO-data区域,例如 const u16 ram = 5;

  • RW-data(Read Write data) :是指在定义时赋予了非0的初始值,那么程序编译下来,会在code区写入对应数据,程序段运行时再从code区拿出对应数据赋予到ram对应区域,实现上电初始非0值,例如 u16 ram = 5;

  • RI-data(Zero Initialie data) : 是指在定义时没有初始化或者初始化为0, 那么程序编译下来,ram1和ram2就会被认为在RI-data区域,例如 u16 ram1;u16 ram2 = 0;

3 . RAM上电复位

MDK编译时默认全ram复位,排除RW-data区域外,若不希望ram某个地址上电被复位,可通过勾选红框中NoInit,告诉编译器某段地址范围内不进行初始化段操作
在这里插入图片描述

4 . 细节扩展

另外编译结果还有堆和栈,MDK的堆和栈是自底向上的,与KeilC51反过来,KeilC51是自顶向下,内存排布有关各区域的描述这里尽量保持简洁风格描述

5 . 总结

编译程序知道编译后存放的区域有助于理解编译器的行为,从而使我们知道怎样可以做到更好,并且有更多的思路去开发,文章内容保持简洁风格,通俗易懂,谢谢观看。

技术交流群 : 745662457
群内专注 - 问题答疑,技术研究

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/813017.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

股票价格预测 | Python使用LSTM预测股票价格

文章目录 效果一览文章概述代码设计效果一览 文章概述 Python使用LSTM预测股票价格 代码设计 import pandas as pd import matplotlib.pyplot as plt import numpy as np import tensorflowfrom numpy import

我可以信任XEX吗?

在数字货币领域,安全一直是我们最为关注的话题之一。作为一个积极参与加密货币交易的投资者,我深知选择一个安全可靠的交易所至关重要。在众多交易所中,我发现XEX是最安全的交易所之一。 每当我想要进行加密货币交易时,第一件事就…

git合并冲突

git合并冲突 问题描述 Auto-merging mes5server/mes5j.json Auto-merging mes5server/mes5j.json CONFLICT (content): Merge conflict in mes5server/mes5j.json Automatic merge failed; fix conflicts and then commit the result.原因 要合并的两个分支改动了同一份文件…

深入理解MySQL中的log_bin_trust_function_creators系统变量

在MySQL数据库管理中,尤其是在涉及到数据复制与恢复的情境下,二进制日志(Binary Log)扮演着至关重要的角色。它忠实记录了对数据库内容进行修改的SQL语句,为数据同步、故障恢复等任务提供了关键信息。然而,…

K8S资源管理之LimitRange

资源配置范围管理:LimitRange 在默认情况下,Kubernetes不会对Pod加CPU和内存的限制,这意味着Kubernetes系统中的任何Pod都可以使用其节点的所有可用的CPU和内存。 如果一个机器的Pod特别多,我们又不愿意为每个Pod都配置上…

2024年蓝牙耳机哪个品牌最好?五大热门机型PK,新手必看!

​随着生活节奏的加快,蓝牙耳机已经成为了我们日常生活中不可或缺的伙伴。它不仅让我们的听音乐、观看视频和通话变得更加便捷,还带来了无线的自由体验。面对市场上众多的选择,我为你精挑细选了几款表现优异的蓝牙耳机,希望能帮助…

mybiats-puls-插入测试以及雪花算法

一,测试 /* * 插入测试 * */ Test public void test01() {User user new User();/** 自动帮我们生成id* */user.setName("kuku");user.setAge(3);user.setEmail("2983394967qq.com");final int insert mapper.insert(user);System.out.print…

Redis从入门到精通(十六)多级缓存(一)Caffeine、JVM进程缓存

文章目录 第6章 多级缓存6.1 什么是多级缓存?6.2 搭建测试项目6.2.1 项目介绍6.2.2 新增商品表6.2.3 编写商品相关代码6.2.4 启动服务并测试6.2.5 导入商品查询页面,配置反向代理 6.3 JVM进程缓存6.3.1 Caffeine6.3.2 实现JVM进程缓存6.3.2.1 需求分析6.…

基于springboot仿雀语的文档管理系统

项目介绍 本项目借鉴了雀语的一些UI设计,实现了文档在线管理的功能,知识库可以对不同分类的文档建立不同的库,知识库里面左边可以维护菜单菜单目录,右边实现在线预览。该项目可以防止用户下载和复制文档,只支持在线预…

TSINGSEE青犀AI智能分析网关V4吸烟/抽烟检测算法介绍及应用

抽烟检测AI算法是一种基于计算机视觉和深度学习技术的先进工具,旨在准确识别并监测个体是否抽烟。该算法通过训练大量图像数据,使模型能够识别出抽烟行为的关键特征,如烟雾、手部动作和口部形态等。 在原理上,抽烟检测AI算法主要…

Dockerfile中 CMD和ENTRYPOINT的区别

在 Dockerfile 中,CMD 和 ENTRYPOINT 都用于指定容器启动时要执行的命令。它们之间的主要区别是: - CMD 用于定义容器启动时要执行的命令和参数,它设置的值可以被 Dockerfile 中的后续指令覆盖,包括在运行容器时传递的参数。如果…

Angular 13新特性概览与升级指南

Angular 13是Angular框架的最新版本,它引入了一些新的特性和改进。下面是Angular 13的一些新特性概览和升级指南: Ivy Renderer改进:Angular 13进一步改进了Ivy渲染器,提供更好的性能和更小的包大小。这意味着你可以在应用程序中获…

如何测试PostgreSQL数据库的性能

在这篇博客里,我将展示如何测量 PostgreSQL 数据库服务器的性能,并指导你如何运行一个基准测试。 基准测试旨在评估和比较不同配置、拓扑结构、系统和组件的性能。为此,我将使用 pgbench 工具。 你可能会问,为什么要使用一个单独…

Java 语言程序设计(基础篇)原书第10版 梁勇著 PDF 文字版电子书

简介 Java 语言程序设计(基础篇)原书第 10 版 是 Java 语言的经典教材,中文版分为基础篇和进阶篇,主要介绍程序设计基础、面向对象程序设计、GUI 程序设计、数据结构和算法、高级 Java 程序设计等内容。本书通过示例讲解问题求解…

蓝桥杯嵌入式(G431)备赛——最后一晚查漏补缺

蓝桥杯嵌入式(G431)备赛笔记——初始化cubeMX 蓝桥杯嵌入式(G431)备赛笔记——LED 蓝桥杯嵌入式(G431)备赛笔记——按键模块设计 蓝桥杯嵌入式(G431)备赛笔记——LCD按键 蓝桥杯…

杂货铺 | Linux虚拟机Ubuntu操作系统下设置共享文件夹(以及找不到hgfs文件夹怎么办)

文章目录 📚步骤一:配置共享文件夹📚步骤二:配置挂载环境📚步骤三:解决权限问题📚步骤四:解决重启失效问题 📚步骤一:配置共享文件夹 建立本地共享文件夹&…

07.QT信号和槽-2

一、自定义信号和槽 在Qt中,允许⾃定义信号的发送⽅以及接收⽅,即可以⾃定义信号函数和槽函数。但是对于⾃定义的信号函数和槽函数有⼀定的书写规范。 1.基本语法 1.1 自定义信号 (1)⾃定义信号函数必须写到"signals"…

2024 DTC大会精彩演讲:DBdoctor,基于eBPF重新定义数据库可观测 (附PPT下载和演讲视频)

由中国DBA联盟(ACDU)和墨天轮社区联合主办的第十三届数据技术嘉年华(DTC)于北京盛大召开。4月13日上午海信聚好看云平台负责人张纪宽受邀在『数据库生态软件』分论坛发表主题演讲《DBdoctor:利用eBPF技术实现数据库智能…

微信小程序公共组件封装使用

1.在components目录下创建公共组件,以navbar为例 2.完成组件功能 3.调用,如果很多地方都会用到,建议放全局,如果不是则放在需要引用的文件中 3.1全局引用,在app.json做全局引用配置 3.2局部引用,在需要引入…

springcloud第4季 springcloud-alibaba之nacos篇

一 nacos 1.1 nacos作用介绍 nacos是一个分布式的配置中心和注册发现中心。 nacos是 dynamic naming configuration service nacosconfigbus 实现动态刷新;nacosconsul 1.2 各个注册中心对比 注册中心CAP模型控制台管理社区活跃度EureakaAp支持低zkcp不支持中…