首页/新闻资讯/正文详情

【2015-03-15】ARM学习随手笔记:最简单的内存分析

发布时间:2026/9/25 16:41:23 来源:云帆数科 栏目:资讯中心
【2015-03-15】ARM学习随手笔记:最简单的内存分析
[历史归档]本文原发布于 cstriker1407.info 个人博客内容为历史存档仅供参考。发布时间2015-03-15 标题ARM学习随手笔记最简单的内存分析分类编程 / 操作系统 / ARM 标签ARMARM学习随手笔记简单的内存分析作者最近在学习keil和ARM哎只能感叹自己老了这里简单的记录下学习笔记吧。以【 ARM学习随手笔记使用ITM方式启用printf 】为基本工程,这里打开HEAP内存如下图然后修改mainfunc.c修改后如下#includestdio.h#includestdlib.h#defineITM_Port8(n)(*((volatileunsignedchar*)(0xE00000004*n)))#defineITM_Port16(n)(*((volatileunsignedshort*)(0xE00000004*n)))#defineITM_Port32(n)(*((volatileunsignedlong*)(0xE00000004*n)))#defineDEMCR(*((volatileunsignedlong*)(0xE000EDFC)))#defineTRCENA0x01000000struct__FILE{inthandle;/* Add whatever you need here */};FILE __stdout;FILE __stdin;intfputc(intch,FILE*f){if(DEMCRTRCENA){while(ITM_Port32(0)0);ITM_Port8(0)ch;}return(ch);}intg_int100;intmain(void){intlocal_int10;int*p_local_int(int*)malloc(sizeof(int));printf(g_int address:%x ,(unsignedint)(g_int));printf(local_int address:%x ,(unsignedint)(local_int));printf(p_local_int address:%x ,(unsignedint)(p_local_int));printf(main address:%x ,(unsignedint)(main));while(1);}使用模拟器编译执行结果如下g_int address: 20000008 local_int address: 20001068 p_local_int address: 20000088 main address: 18b查看map文件这里有两种方式可以在文件目录中查找【 HelloM3\Listings\HelloM3.map 】或者如下图右键快捷打开map部分内容如下Image Symbol Table Local Symbols Symbol Name Value Ov Type Size Object(Section) 。。。。。。。 。。。。。。。 HEAP 0x20000070 Section 3072 startup_armcm3.o(HEAP) Heap_Mem 0x20000070 Data 3072 startup_armcm3.o(HEAP) STACK 0x20000c70 Section 1024 startup_armcm3.o(STACK) Stack_Mem 0x20000c70 Data 1024 startup_armcm3.o(STACK) __initial_sp 0x20001070 Data 0 startup_armcm3.o(STACK) Global Symbols Symbol Name Value Ov Type Size Object(Section) 。。。。。。。 。。。。。。。 main 0x0000018b Thumb Code 52 mainfunc.o(.text) 。。。。。。。 g_int 0x20000008 Data 4 mainfunc.o(.data) 。。。。。。。 Memory Map of the image Execution Region RW_IRAM1 (Base: 0x20000000, Size: 0x00001070, Max: 0x00020000, ABSOLUTE) Base Addr Size Type Attr Idx E Section Name Object 0x20000000 0x0000000c Data RW 2 .data mainfunc.o 0x2000000c 0x00000004 Data RW 37 .data system_armcm3.o 0x20000010 0x00000060 Zero RW 281 .bss c_w.l(libspace.o) 0x20000070 0x00000c00 Zero RW 26 HEAP startup_armcm3.o 0x20000c70 0x00000400 Zero RW 25 STACK startup_armcm3.o这里最简单的分析下1 g_int是全局变量属于全局变量区。2 local_int是局部变量因此在栈上。3 p_local_int是malloc出来的因此在堆上。4 RAM上的内存分布简图如下由此可见栈的大小在实际工作中需要仔细计算以免内存越界不过在实际工作中一般不会使用堆内存也不会使用malloc等函数。

相关推荐

Atlas 300V 24G推理卡部署YOLO全指南:从环境配置到性能优化
Atlas 300V 24G推理卡部署YOLO全指南:从环境配置到性能优化

1. 先把 Atlas 300V 这块卡看明白1.1 它到底是不是一张“运算加速卡”直接回答热搜那个问题:是的,Atlas 300V 24G 就是一张标准的 AI 推理运算加速卡,而且是一张定位非常明确的国产推理卡。它和玩家熟悉的游戏显卡完全不是一个路子&#xff0… · 2026/9/25 16:41:16

5 分钟打通!OpenClaw 连接 Ollama 本地模型,保姆级实操教程(TaoToken 统一 Key 配置版)
5 分钟打通!OpenClaw 连接 Ollama 本地模型,保姆级实操教程(TaoToken 统一 Key 配置版)

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 16:41:04

AI日语视频转中文字幕全流程:Whisper识别、大模型翻译与压制
AI日语视频转中文字幕全流程:Whisper识别、大模型翻译与压制

字幕组时代,一部深夜番出来,最快的熟肉也要等大半天,冷门一点的作品隔周能出都算良心。现在完全变了,我最近半年帮朋友处理了不少日语视频转中文字幕的活儿——有冷门番剧、日企会议录音、还有直播录像,基本流程就是&a… · 2026/9/25 16:40:51

DevOps-Guide 仓库 Linux 系统管理 Bash 脚本实战:进程监控、僵尸进程清理与文件系统检索全解析
DevOps-Guide 仓库 Linux 系统管理 Bash 脚本实战:进程监控、僵尸进程清理与文件系统检索全解析

云原生CI/CD运维 【免费下载链接】DevOps-Guide DevOps Guide - Development to Production all configurations with basic notes to debug efficiently. 项目地址: https://gitcode.com/gh_mirrors/de/DevOps-Guide 点击查看 免费下载 导读 本文以 DevOps-Guide… · 2026/9/25 17:09:43

AI代理技能设计方法论:从提示词到可复用技能包的工程实践
AI代理技能设计方法论:从提示词到可复用技能包的工程实践

直接说结论吧:agent-skills 并不是某个花哨的框架,也不是一句提示词就完事,它是一整套“把大模型的泛化能力,收敛成可复用、可测试、可组合的确定性技能包”的方法论。这两年我拿它做了不少 AI 代理项目,从邮件自动分类… · 2026/9/25 17:09:37

ESP8266与ACS712电流传感器接入KiwisIoT实战
ESP8266与ACS712电流传感器接入KiwisIoT实战

1. 从一块电流传感器说起:为什么我要把它接进KiwisIoT手头有一批ACS712电流传感器和几块NodeMCU ESP8266开发板,最初的想法很简单——给实验室的老旧设备加个电流监测,看看哪些机器在偷偷耗电。但真正动手之后才发现,从"传感… · 2026/9/25 17:09:19

红外光谱分析技术应用于乳品检测原理及影响因素
红外光谱分析技术应用于乳品检测原理及影响因素

1. 红外光谱分析技术应用于乳品检测原理及影响因素1.1 从一杯牛奶说起:为什么红外光谱能“看透”乳品乳品检测这个行当,说复杂也复杂,说简单也简单。复杂在于牛奶是个极其复杂的胶体体系——里面有水、脂肪、蛋白质、乳糖、矿物质&#xff0c… · 2026/9/25 17:09:13

系统分析师必备:微服务架构拆分、选型与联调落地实践
系统分析师必备:微服务架构拆分、选型与联调落地实践

最近有不少同行问我,系统分析师这种偏“需求到设计”的角色,为什么也要去啃微服务。说实话,我一开始也觉得微服务主要是开发团队的事,直到自己带项目从单体拆成微服务,才真正明白:如果分析阶段不给服务边界… · 2026/9/25 17:09:06

EI会议投稿实操:CTESP 2026通信信号处理方向选题与录用全解析
EI会议投稿实操:CTESP 2026通信信号处理方向选题与录用全解析

一看到“CTESP 2026”这个组合,通信和信号处理方向的同行应该马上能对上号:这是一个主打EI检索的国际学术会议,全称对应着通信技术、电子学与信号处理三大板块。做这个方向的研究生、高校青年教师、企业研发工程师,还有准备冲毕业… · 2026/9/25 17:09:00

数值优化(Numerical Optimization)学习系列-03-共轭梯度方法(Conjugate Gradient)
数值优化(Numerical Optimization)学习系列-03-共轭梯度方法(Conjugate Gradient)

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:31

创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战
创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:31

MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX
MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:37

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码