首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 单片机 >

请问:单片机内存分配有关问题

2012-03-13 
请教:单片机内存分配问题情况是这样的:在STM32单片机上能够完全正常运行的程序,按照相同的架构修改后拿到A

请教:单片机内存分配问题
情况是这样的:在STM32单片机上能够完全正常运行的程序,按照相同的架构修改后拿到ATMEGAL128单片机上面来运行,逻辑全部正确,可是就是出现乱码问题,调了几天,纠结的不行了.最后一想,是不是内存不够呀,ATMEGAL128只有4K内存(没有扩展内存),然后我把堆栈大小由原来128K改成了64K(在ICC AVR开发环境的options项里面有个STACK SIZE项),问题就解决了.
  所以我就想请教下高手:弹片机内存是怎么分配的?何时分配?我是这么想的,它是静态分配,也就是在程序开始执行之前,分配好所有的全局变量,然后程序执行过程中的内存分配全在堆栈区,不只是不是这样的.

[解决办法]
堆栈一般就设几十或几百字节,其余的主要是变量。

[解决办法]
定义的全局变量都会事先分配好内存,局部变量,临时数据是临时分配的,保存在堆栈中;
堆栈的指针会被初始化,通常堆栈顶部指定到SRAM最末端。堆栈的大小(深度)仅受SRAM空间的大小的限制。堆栈用到SRAM不够了,即覆盖到全局变量就出错。

[解决办法]
还有就是字节对齐问题要注意.

热点排行