Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
堆_heap_动态内存管理
编译器
请教编译时内存分配问题
发布于 2023-02-14 17:03:48 浏览:643
订阅该版
最近在使用沁恒的ch576,正好rt-thread BSP里面有,就下下来运行了一下。 结果msh出不来,后来把msh的栈改小后出来。 msh出来后,就用free看了下内存,结果total只有`4780`,只剩120 available。 可明明有32K RAM,怎么变4K了,顺着free的源代码找到了board.h中堆起始地址与结束的定义 ```c #define CH579M_SRAM_SIZE 32 #define CH579M_SRAM_END (0x20000000 + CH579M_SRAM_SIZE * 1024) #if defined(__ARMCC_VERSION) extern int Image$$RW_IRAM1$$ZI$$Limit; #define HEAP_BEGIN ((void *)&Image$$RW_IRAM1$$ZI$$Limit) #elif __ICCARM__ #pragma section="CSTACK" #define HEAP_BEGIN (__segment_end("CSTACK")) #else extern int __bss_end; #define HEAP_BEGIN ((void *)&__bss_end) #endif #define HEAP_END CH579M_SRAM_END ``` 就摸到 ``` Image$$RW_IRAM1$$ZI$$Limit ``` 这个变量,好像是编译器自动算出来的,就一下子明白了: 是被C中的非const静态变量占了,Keil编译完输出 ``` Program Size: Code=87516 RO-data=3360 RW-data=632 ZI-data=27276 ``` 就是RW-data和ZI-data 但是`32 * 1024 - 27276 - 632 = 4860`,与free显示的total`4780`还差了80 所以我的问题时那80被什么占了
查看更多
xiaorui
认证专家
2023-02-14
小睿手办 https://item.taobao.com/item.htm?id=674889867009
建议结合链接脚本和MAP来看看。
2
个回答
默认排序
按发布时间排序
宇宙码蚁
2023-02-14
接口与实现分离
刚才在rtthread.map中看到了许多PAD,就是内存对齐空隙,数了下: RW+ZI 段的的PAD有16个字节。 ~~所以还差64个不明字节~~ - 原因找到了,不是PAD,输出的大小已经包括了PAD。 通过看链接脚本: ``` LR_IROM1 0x00000000 0x0003E800 { ; load region size_region ER_IROM1 0x00000000 0x0003E800 { ; load address = execution address *.o (RESET, +First) *(InRoot$$Sections) .ANY (+RO) } RW_IRAM1 0x20000000 0x00004000 { ; RW data .ANY (+RW +ZI) } RW_IRAM2 0x20004000 0x00004000 { *.o (NMICode) .ANY (+RW +ZI) } } ``` 发现可疑的NMICode 查了下NMI的含义,是non-maskable interrupt,就是中断向量表,在启动的汇编代码里定义,一共20个,地址32位4字节,乘4正好80
撰写答案
登录
注册新账号
关注者
0
被浏览
643
关于作者
宇宙码蚁
接口与实现分离
提问
15
回答
101
被采纳
28
关注TA
发私信
相关问题
1
rt_malloc 申请内存失败
2
webnet heap最大使用量。
3
调度锁会引起线程内存不足
4
RT-Thread内存和字符串相关函数与C语言自带的内存和字符串相关函数冲突问题
5
webnet 是否可以做全动态网页,使用内存池来加快速度
6
boatload跳转到app反复重启,难道你们编译器有问题?
7
怎么释放动态线程占用的内存
8
内存堆使用时产生不对齐
9
pandora开发板使用cjson,内存不足。
10
小内存管理中rt_realloc的实现问题
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
RT-Thread CI编译产物artifacts自动上传功能介绍
2
STM32G030移植RT-Thread
3
CubeMX & RT-Thread Studio 联合开发说明
4
RT-Thread动态模块
5
RT-Thread项目助手v0.3 | Ubuntu与MacOS平台的RT-Thread Env
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
rt-smart
FAL
I2C_IIC
ESP8266
UART
cubemx
WIZnet_W5500
ota在线升级
PWM
BSP
flash
freemodbus
packages_软件包
潘多拉开发板_Pandora
GD32
定时器
ADC
flashDB
编译报错
socket
中断
rt_mq_消息队列_msg_queue
keil_MDK
Debug
ulog
SFUD
msh
C++_cpp
MicroPython
本月问答贡献
lchnu
3
个答案
2
次被采纳
张世争
1
个答案
2
次被采纳
a1012112796
9
个答案
1
次被采纳
三世执戟
8
个答案
1
次被采纳
聚散无由
5
个答案
1
次被采纳
本月文章贡献
jinchanchan
10
篇文章
13
次点赞
ssdd45555
3
篇文章
2
次点赞
聚散无由
1
篇文章
4
次点赞
RTT_逍遥
1
篇文章
3
次点赞
hywing
1
篇文章
2
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部