内存管理例程,内存参数设定问题

2019-10-15 06:53发布


//mem1内存参数设定.mem1完全处于内部SRAM里面.
#define MEM1_BLOCK_SIZE                        32                                                            //内存块大小为32字节
#define MEM1_MAX_SIZE                        100*1024                                                  //最大管理内存 100K
#define MEM1_ALLOC_TABLE_SIZE        MEM1_MAX_SIZE/MEM1_BLOCK_SIZE         //内存表大小

//mem2内存参数设定.mem2的内存池处于外部SRAM里面
#define MEM2_BLOCK_SIZE                        32                                                            //内存块大小为32字节
#define MEM2_MAX_SIZE                        960 *1024                                                  //最大管理内存960K
#define MEM2_ALLOC_TABLE_SIZE        MEM2_MAX_SIZE/MEM2_BLOCK_SIZE         //内存表大小
                 
//mem3内存参数设定.mem3处于CCM,用于管理CCM(特别注意,这部分SRAM,仅CPU可以访问!!)
#define MEM3_BLOCK_SIZE                        32                                                            //内存块大小为32字节
#define MEM3_MAX_SIZE                        60 *1024                                                  //最大管理内存60K
#define MEM3_ALLOC_TABLE_SIZE        MEM3_MAX_SIZE/MEM3_BLOCK_SIZE         //内存表大小



上述是例程中的参数设定,从mem2可以看出最大内存管理为960k byte,但是板子上用的sram为512*16bit的也就是 1024k byte,那为什么这里是960k呢?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
8条回答
taizonglai
1楼-- · 2019-10-15 08:27
1、堆和栈肯定是有固定区域的,看你的map文件就知道HEAP和STACK的起始地址和大小
2、全局变量的内存既不在堆里面,也不在栈里面。编译器会给他分配内存。
3、malloc申请的内存在堆里面
4、堆和栈应该不叫内存分配方法。
li13158
2楼-- · 2019-10-15 11:10
顶顶顶顶
IsLuo
3楼-- · 2019-10-15 12:48
16bit = 2 byte
li13158
4楼-- · 2019-10-15 16:31
 精彩回答 2  元偷偷看……
taizonglai
5楼-- · 2019-10-15 21:13
因为SRAM还有一部分用来存储内存管理表!所以不能用完了!
li13158
6楼-- · 2019-10-15 22:56
zuozhongkai 发表于 2017-1-17 16:39
因为SRAM还有一部分用来存储内存管理表!所以不能用完了!

还想问下,一般内存里有堆,栈,全局变量区,文字常量区,程序代码存储区,那么我外加一个sram,其内存空间是全加在堆上吗?

一周热门 更多>