const char* 定义的变量保存在常量区 ,即只读数据段
static 定义的变量,保存在 静态存储区
static局部变量,作用域 在本函数中
static全局变量,在本文件中
全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态
变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域,即bss段。
总结
堆,栈,全局区(静态区–数据段),文字常量区(只读数据段),代码区 段
bss段–未初始化的变量
墨衍会员
·
AI 创作全网分发
墨衍智能分发
本文由作者通过墨衍一键同步至各平台
1分发平台
600+累计阅读
645平均单平台
已同步平台
优快云
微信公众号
微博
知乎
掘金
百家号
博客园
抖音
小红书
你的文章也可以这样分发
墨衍会员 ¥399起/年,写一次发全网
我也要 →
码龄10年
const char* 定义的变量保存在常量区 ,即只读数据段
static 定义的变量,保存在 静态存储区
static局部变量,作用域 在本函数中
static全局变量,在本文件中
全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态
变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域,即bss段。
总结
堆,栈,全局区(静态区–数据段),文字常量区(只读数据段),代码区 段
bss段–未初始化的变量
MCU内存基础知识
32位的M3有4GB的寻址空间,2^32(字节) = 4G(字节),STM32的存储器地址映射,地址范围为:0x0000_0000-0xFFFF_FFFF;由前文知道RAM掉电数据会丢失,RW-data是非0初始化的数据,已初始化的数据需要被存储在掉电不会丢失的FLASH中,上电后会从FLASH搬移到RAM中。静态区(全局区):静态变量和全局变量的存储区域是一起的,一旦静态区的内存被分配, 静态区的内存直到程序全部结束之后才会被释放。代码区:存放程序的代码,即CPU执行的机器指令,并且是只读的。
单片机中那些数据位于flash中,哪些数据位于ram中??
单片机中那些数据位于flash中,哪些数据位于ram中?? 注:这篇文章来自优快云的上一个大哥,初学者很感谢!!在此欢迎各位来评论。 看这篇文章之前有一下几个问题: 1,全局区(静态区)和FLASH,ram的关系?? 2,栈和FLASH,ram的关系?? 我的总结:回答以上问题: 1,未初始化全局变量—在RAM中。默认0初始化全局变量—在RAM中。已初始化全局变量—初始化值在FLASH中,变量本...
【Vector Memory Mapping】- 为什么数据(和代码)需要映射到特定的MCU内存区域
传统方法编译是基于一个(或几个)整体MemMap.h文件,编译器读取和预处理MemMap.h及其包含的文件,对于每个编译单元都进行这样的操作。新方法会产生一堆相对较小的MemMap.h文件,这些较小的MemMap.h文件文件都包含在各自的组件中,这会导致要完成的预处理工作少得多。一些代码(code)应该从与cpu紧密耦合的内存运行,而其他一些代码也可能从外部内存运行,但速度较低,因为访问不同的内存、不同的总线【memories】有不同的速度。初始化策略:变量(在 RAM 中)在初始化时可能有不同的要求。
单片机的内存分配(变量的存储位置)详解
对于初学者而言,对单片机的内存分配往往最让人头疼,很多人学了单片机几年 都不知道单片机内部的内存使用情况是如何分配的。要了解 ROM、RAM启动,首先 需要对 链接器 Linker 如何分配内存有一定的了解。 通常,对于栈生长方向向下的单片机,其内存一般模型是: 1. int a = 0; //全局初始化区,.data 段 2. static int b=20; ...
ISO26262-(Memory Partitioning)在多核MCU的MPU上功能安全ASILB与ASILD有什么区别
在ISO26262中基于AUTOSAR创建每个TASK的时候根据任务的危害分析和风险评估确定对应的ASIL等级,在开发的时候并对ASIL进行适度分解,之后在软件开发中对每个TASK施行不同的软件策略,比如内存分区的复杂度,诊断和错误处理,冗余与容错等软件机制,最终实现各个ASIL Level。ASIL D级别的系统在动态内存分配上可能需要更严格的控制,以避免运行时的内存错误,这可能影响MMU的配置策略,要求实时监控和保护堆和栈的完整性。ASIL B系统在这一点上可能允许更多依赖于软件层面的管理。
数据中心光模块升级实录:从200G QSFP56到400G QSFP-DD的踩坑指南
本文记录了数据中心从200G QSFP56升级至400G QSFP-DD光模块的完整实战经验。文章深入剖析了升级过程中面临的兼容性、链路预算、布线、散热与功耗管理等核心挑战,并提供了具体的解决方案与排坑指南,为高速网络升级提供了宝贵的实践参考。
MCU的程序的存储结构详述
简介 程序由一个或者多个函数组成,必须要有main()函数,作为程序入口。 存储结构 程序存储在RAM内存中,内存结构由高地址到低地址分别为:STACK、unused memory、HEAP、BSS、GVAR、TEXT。 STACK即栈:编译期间就能确认的存储大小,在函数作用域内创建,离开作用域后销毁。 HEAP即堆: 使用malloc或者new开辟的空间,需要灵活释放,否则有溢出故障。 BSS段:没有被初始化的全局变量和静态变量,会被初始化为0. GVAR即数据段:初始化后的全局变量,静态变量,常量。 T
离散数学 --- 图论基础 --- 图的同构,通路与回路,可达性与最短通路
同一个图(这里的图是抽象的数学定义)可以有不同的图形表示方法1.重数:两点之间的平行边的个数1.得到 n!的过程,一个图中的一个结点在另一个图中对应的结点有n种可能(黄框中定义的图来讨论),这个对应好后下一个结点有 n - 1 种可能,再下一个有n-2种,直到最后一个为1,所有可能的结果就等于 n * (n - 1) *(n - 2)*....*1 = n!2.虽然说找对应结点很困难,但不是没有规律可循的。比如1.两个相互对应的结点的度数要相同;
MCU 编译结果中的 text, data, bss, dec 是什么意思?
留言:优快云 嵌入式入群,加入嵌入式技术交流群。加作者微信:jiyuyun18, 交流电子技术。
开源处理器Rocket的分支预测机制研究与性能评估(二)
Rocket是基于RISC-V指令集架构的开源处理器,具有分支预测功能,其实现了GShare分支预测机制,在分析Rocket处理器分支预测处理过程、分支预测实现原理的基础上,利用模拟器进行了性能测试,并依据测试结果,对Rocket处理器分支预测参数配置给出建议。
QT项目实战:如何在正点原子Linux开发板上集成CVR-100UC身份证阅读器(附完整代码)
本文详细介绍了在正点原子Linux开发板上集成CVR-100UC身份证阅读器的完整实战流程。内容涵盖驱动适配、库文件部署、QT项目框架搭建、核心功能封装以及界面集成,并提供了完整的代码示例,帮助开发者快速实现嵌入式环境下的身份证信息读取功能。
MCU内存分区 — KEIL默认链接环境下,ZI—data的真正含义
一种是将内存分为RO区、RW区和ZI区;我们一般认为, RO区 = .text区(code) + .rodata区(const),RW区 = .data区,ZI区=.bss区。
OS实验xv6 6.S081 开坑
OS实验xv6 6.S081 开坑 终于把xv6 2019 6.S081做完了,网络部分没有写,因为有计网实验了。怎么说呢,xv6的坑有点多,能做完多亏了:和我同学ljj交流,参考RedemptionC老哥的博客(他写的非常详细,遗憾的是,他好像没有写mmap),再者就是参考这位老哥的做法(没有源码,写得不是特别详细,不过有借鉴作用,mmap就是借鉴了他的思想)……废话不多说了,直接开始。 实验指导 首推RedemptionC的博客 这位老哥的个人博客 xv6 6.S081官网(后面的实验都要参考官网
autosar MPU实现内存分区的底层原理
切换到application2后,application2 对应分region 变成了UR UX,原来的applicaiton1 对应的region 的权限少了UR 和 UX,因此当前程序只能访问application2 对应区域,访问其他application 对应的区域就会导致MPU产生异常。什么意思呢,就是我们的MPU不是一成不变的,对于不同的application,会有不同的MPU的配置参数,同一个region,在不同的application下,可能会有不同的访问权限。
YOLOv11改进缝合FasterBlock | 一种新型轻量化卷积结构C3k2的设计与实证:兼顾精度与速度的改进方法(附代码)
YOLO系列一直是目标检测领域的明星算法,凭借其实时性和准确性在众多应用中占据一席之地。随着YOLO版本的不断迭代,网络架构逐渐变得更为复杂,尤其是在卷积模块的设计上。本文将介绍如何利用FasterNet的FasterBlock创新,并通过二次创新C3k2提出一种全新的卷积结构。该结构旨在提高YOLOv11的计算效率和准确性,特别是在视觉任务中的表现。我们的创新在保证高精度的前提下,有效降低了计算量和内存需求,特别适合在资源受限的设备上运行。
GeoXCP:可解释人工智能中空间解释的不确定性量化
GeoXCP: uncertainty quantification of spatial explanations in explainable AI提出基于保形预测(conformal prediction)的不确定性量化框架——地理空间解释保形预测(GeoXCP),将空间依赖纳入建模过程,生成具有校准不确定性估计的空间自适应解释。通过大量模拟实验和真实世界数据集验证,GeoXCP在不同地理空间场景中能提供可靠解释并有效量化不确定性,推动可解释地理空间机器学习的发展,帮助决策者评估模型驱动洞察的可信度。
域控软件安全隔离关键技术剖析:MCU 域 VS SOC 域
安全隔离的底层原理是避免软件对内存的不合理访问,以满足功能安全要求。硬件层面上,有MPU、MMU这样的硬件进行程序内存空间的保护和约束;软件层面上,容器化技术和虚拟化技术也能帮助用户制定更灵活的隔离策略。
高通SDX35平台 modem启动异常分析
SDX35 MIFI项目在生产时出现modem反复重启问题。经排查发现是modem在初始化GNSS模块时访问了不存在的硬件地址导致崩溃,原因是产线使用的SDX35 000-AB型号芯片阉割了GNSS功能,而本地测试使用的AA型号支持该功能。解决方案是通过修改modem编译选项,采用高通新提供的genlmm2选项(保留IMS和SMS功能但去除GNSS支持),最终解决了启动异常问题并满足VZW认证需求。
瑞萨RX系列MCU固件更新模块配置实战:从内存分区到安全升级
在嵌入式系统开发中,固件更新(Firmware Update)是保障设备长期稳定运行与功能迭代的核心技术。其原理在于通过引导加载程序(Bootloader)管理存储空间,协调新旧固件的安全切换。这项技术的价值在于能够远程修复漏洞、升级功能,极大降低了物联网设备和工业控制器的维护成本。典型的应用场景包括部署在偏远地区的环境监测设备算法升级,或智能家居网关对新通信协议的支持。要实现可靠更新,关键在于对微控制器内存映射的精确规划,以及对Flash擦写、中断管理等底层操作的稳健实现。本文以瑞萨电子RX系列MCU为例
TMS_WebGMaps_1.9.8.0_Full_Source
TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder
精雕软件(JDpaint) 5.5 绿色版
精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版
STM32 - 内存分区与OTA
最近搞MCU,发现它与SOC之间存在诸多差异,不能沿用SOC上一些技术理论。本文以STM L4为例,总结了一些STM32 小白入门指南。
jre9下载 jdk9
(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】
【lm401】解决malloc动态申请内存时内存不足的问题
> 使用 lm401 模组,基于STM32WLE5 调试时,遇到 malloc 分配内存提示内存不足 > > 现记录解决过程如下
单片机mcu内存分布详解
存储位置:ROM特点:只读。
【AS32系列MCU驱动教程】MCU启动详解
在实际编程开发之前,我们首先对芯片的启动流程进行一下介绍,对于绝大多数嵌入式工程师而言,在MCU开发过程中,通常只需要完成C语言代码功能,即可利用集成开发环境编译出来芯片的可执行文件,但在此过程中,编译器进行了一系列编译操作来保证MCU可以支持C程序的运行,因此,实际的完整工程代码中,总共包含了三类文件:汇编文件、C程序代码以及链接脚本。第10行,保留符号__iar_cstart_init_gp,该符号在启动代码cstartup.s定义,保留符号意味着即使它未被直接引用,也不会被链接器优化掉。
[MCU]SRAM
1.SRAM 2.FLASH 3.TCMSRAM(Static Random-Access Memory):静态随机存取存储器. 特点:访问速度快、断电丢失、不1.系统SRAM:连接在系统总线上,所有外设和CPU都可访问 2.TCM SRAM:紧耦合内存,专为CPU高速访问设计(如ARM的DTCM) 3.外设SRAM:某些外设专用的缓冲区(如USB、DMA等 128KB = 128 * 1024 byte = 0x20000 地址范围:0x2000_0000 ~ 0x2002_0000mcu访问错误的sr
【亲测免费】 一款专业的MAP文件分析工具:助力Linux环境下的内存分区解析
一款专业的MAP文件分析工具:助力Linux环境下的内存分区解析 【下载地址】一款专业的MAP文件分析工具 这是一款专为Linux环境设计的MAP文件分析工具,能够深度解析由gcc编译器生成的MAP文件,帮助开发者全面掌握RAM、ROM FLASH等内存分区的使用情况。工具具备强大的分析功能,支持多种内存类型,操作界面简...
MCU 安全飞地内的推理执行方案设计:利用 TrustZone 保护模型权重和中间特征的安全架构
利用ARM TrustZone-M构建MCU安全推理飞地,可以实现在不增加额外硬件成本的前提下,对模型权重、推理过程和中间特征进行硬件级保护。实现方案的核心要素包括:合理的内存分区方案(建议安全世界不低于64KB SRAM)、严格的NSC入口参数校验、推理完毕后对安全世界缓冲区的强制性清理、以及IDAU/SAU配置的出厂锁定。该方案的直接优势在于保护强度与硬件隔离能力,但代价是SRAM占用增加约40%和安全启动链的额外构建工作量。
418
801

被折叠的 条评论
为什么被折叠?



