
嵌入式开发
文章平均质量分 57
lighthear
这个作者很懒,什么都没留下…
展开
-
再次理解STM32中的堆栈机制
STM32中的堆栈在启动文件中有初始设置,也可以根据需求调整大小,不同的类型的变量也会存储在内存的不同区域。因此,深入理解STM32中的堆栈机制,对于合理使用内存,以及更高效的内存管理至关重要。本文针对不同类型变量在内存中的存储位置,以及如何调整堆栈大小做了简单介绍。转载 2017-04-07 16:05:03 · 8155 阅读 · 0 评论 -
FreeRTOS中的堆栈设置”与“系统启动文件中堆栈”的关系
本文由之前系统堆空间分配所引发,简要分析了“FreeRTOS中的堆栈设置”与“系统启动文件中堆栈”的关系 ,并进行了初步测试。证明了二者在系统内存空间上互不影响的结论。原创 2017-04-07 15:53:32 · 6321 阅读 · 3 评论 -
Keil中 Program Size: Code RO-data RW-data ZI-data 所代表的意思
在Keil中编译工程成功后,在下面的Bulid Ouput窗口中会输出下面这样一段信息:Program Size: Code=6320 RO-data=4864 RW-data=44 ZI-data=1636 代表的意思:Code :是程序中代码所占字节大小RO-data :程序中所定义的指令和常量大小 (个人理解 :Read Only)RW-data :程序中已初始化转载 2017-04-06 21:07:47 · 1214 阅读 · 0 评论 -
Keil调试局部变量显示"not in scope"的问题解决
Keil调试局部变量显示"not in scope"的问题解决 今天在调试程序的时候,发现函数返回值赋值给变量时,变量值总是显示"not in scope",无法看到变量被赋的值。 出现这种情况的原因是这个局部变量没被分配到内存,或者变量被编译器优化了。 编译器优化级别高的时候,编译器为了优化,可能并没有按照我们想要执行的代码汇编。转载 2017-04-10 10:22:21 · 2385 阅读 · 1 评论 -
STM32分配堆栈空间不足问题原因及解决方法
本文针对实践中STM32堆栈空间不足问题展开讨论。经过分析发现,如果动态内存分配需求过多时,需要手动调节堆空间。可以通过修改启动文件或在STM32CubeMX中也可对堆栈大小进行修改。并初步得出用户可以有使用的堆空间约占系统堆空间一半的结论。原创 2017-04-06 21:20:39 · 34738 阅读 · 11 评论 -
malloc函数分配内存失败的原因及解决方法
本文简单描述了malloc()函数分配内存失败的原因以及解决方法,对指针越界造成的分配内存失败做了详细探讨,对之后的内存管理及指针使用很有帮助。原创 2017-04-12 19:38:22 · 62895 阅读 · 11 评论 -
为什么不能越界访问malloc分配的内存
之前在遇到了使用`malloc()`分配内存后,如果发生内存指针越界,则会导致下次使用`malloc()`分配内存失败的后果。但是,上次的`malloc()`函数调用,为何会影响到下次呢?这就要从`malloc()`的实现原理说起了。原创 2017-04-14 17:37:50 · 3100 阅读 · 0 评论