共2条
1/1 1 跳转至页
ARM,heap 关于ARM初始化中heap的大小分配?
问
谁能告诉我ARM的heap分配的大小是考什么来确定的。还有他是分配给谁用的
答 1:
你准备使用malloc/free这两个函数吗?
答 2:
暂时还不用,但我想知道这个区是做什么的是不是heap这个区就是malloc/free这二个函数的最大分配内存和释放内存的空间大小啊!还有其它的用途吗?
答 3:
堆栈,有堆和栈之分,也就是一块区域的两头,调用函数会出入栈,MALLOC 动态分配内存,这个内存当然不能从栈里面分了,所以只能从堆里面来分。
ADS 不知道你的堆和栈具体地址在哪里,也不晓得究竟分多大,所以要你自己来搞定,HEAP 就是堆的初始化。
如果你不用动态分配(没有MMU的管理一般不建议用MALLOC)就不用设置堆了,
EXPORT __user_initial_stackheap
__user_initial_stackheap
MOV R0, #0
MOV PC, LR
即可,这里提供 __user_initial_stackheap 函数实际上是利用了类似C++ 的函数重载的技术,有ADS C 编译器支持。
具体见 ADS 的 C 编译器手册。ADS 目录下的 PDF 文件夹 答 4: 谢谢,看完的你的解释我已经明白了。现在我明白了heap的用处了。随便问一句关于__user_initial_stackheap函数的问题。我知道在这个函数中R0是用来存放heap的基址的,R2是存放其长度限制的。我想问的是这个长度限制值是heap的长度呢?还是heap的结束地址?还有编译器是怎么使用这个长度限制变量的,怎么办判断是否超出了分配的长度,如果超出了长度限制什么有什么提示,或处理器会进入什么状态。还有这个函数里还一个堆的基址寄存器R1,他这个堆的基址寄存器是按向上增长的,还是按向下生长的基址来赋初始地址。还是他能够区分出堆是怎么生长的,怎么处理才可以区分出。我现在这个函数这个寄存器没有赋值,一赋值堆的空间就不对了(用的是LPC2210,堆是向下增长的)。希望能够帮我解答一下,谢谢!
ADS 不知道你的堆和栈具体地址在哪里,也不晓得究竟分多大,所以要你自己来搞定,HEAP 就是堆的初始化。
如果你不用动态分配(没有MMU的管理一般不建议用MALLOC)就不用设置堆了,
EXPORT __user_initial_stackheap
__user_initial_stackheap
MOV R0, #0
MOV PC, LR
即可,这里提供 __user_initial_stackheap 函数实际上是利用了类似C++ 的函数重载的技术,有ADS C 编译器支持。
具体见 ADS 的 C 编译器手册。ADS 目录下的 PDF 文件夹 答 4: 谢谢,看完的你的解释我已经明白了。现在我明白了heap的用处了。随便问一句关于__user_initial_stackheap函数的问题。我知道在这个函数中R0是用来存放heap的基址的,R2是存放其长度限制的。我想问的是这个长度限制值是heap的长度呢?还是heap的结束地址?还有编译器是怎么使用这个长度限制变量的,怎么办判断是否超出了分配的长度,如果超出了长度限制什么有什么提示,或处理器会进入什么状态。还有这个函数里还一个堆的基址寄存器R1,他这个堆的基址寄存器是按向上增长的,还是按向下生长的基址来赋初始地址。还是他能够区分出堆是怎么生长的,怎么处理才可以区分出。我现在这个函数这个寄存器没有赋值,一赋值堆的空间就不对了(用的是LPC2210,堆是向下增长的)。希望能够帮我解答一下,谢谢!
共2条
1/1 1 跳转至页
回复
| 有奖活动 | |
|---|---|
| 这个春节你犒赏自己什么了?分享你的故事,有奖征集 | |
| 2026年“我要开发板活动”第三季,开始了! | |
| 硬核工程师专属补给计划——填盲盒 | |
| “我踩过的那些坑”主题活动——第002期 | |
| 【EEPW电子工程师创研计划】技术变现通道已开启~ | |
| 发原创文章 【每月瓜分千元赏金 凭实力攒钱买好礼~】 | |
| 【EEPW在线】E起听工程师的声音! | |
| 高校联络员开始招募啦!有惊喜!! | |
我要赚赏金打赏帖 |
|
|---|---|
| 【S32K3XX】SWT 模块使用被打赏¥22元 | |
| 【分享开发笔记,赚取280元手持便携数字示波器】32位linux内核内存映射896的理解被打赏¥14元 | |
| AG32VH407开发板例程体系的构成与使用方法被打赏¥20元 | |
| 【S32K3XX】SEMA42 模块使用被打赏¥26元 | |
| 【S32K3XX】XRDC 功能使用被打赏¥22元 | |
| 【分享开发笔记,赚取280元手持便携数字示波器】8051使用keil编译的程序移动心得被打赏¥21元 | |
| 【S32K3XX】HSE 密钥管理被打赏¥17元 | |
| 【S32K3XX】Standby RAM的初始化流程被打赏¥18元 | |
| Gravity:中英文语音合成模块V2.0及其串口控制被打赏¥24元 | |
| 全彩色度变化图的绘制被打赏¥27元 | |
我要赚赏金
