STM32 IAP时RAM范围设置的疑惑

原创 2016年06月01日 16:30:11
在用STM32F103VET6芯片做IAP时发现一个不解的地方。IAP和APP程序除了要定义不同的中断向量表外,RAM和ROM都要分区,不能有重叠区域。但是多大区域才合适呢?有没有计算的方法?

我用的是IAR7.3。程序在编译完成后,在下方的Messages栏可以看到3个数据。如下图:

29958字节的只读code和9970字节只读数据。这两类数据都是在ROM区的,因此可以估算出ROM的占用空间是(29958+9970)字节。6268字节的读写数据是在RAM区的,但RAM区包含3类区域,RW数据区、CSTACK(栈)区、HEAP(堆)区。一般程序里的静态变量和全局变量都是在RW区的,在程序结束时释放内存。函数的形参、局部变量等都是在栈区的,由编译器自动分配释放。堆区里存放的数据一般都是我们自己分配释放,C中典型的malloc和free函数就是分配和释放的过程。

在IAR里options选项的linker项可编辑内存范围。如下图所示:


点击Edit弹出对话框,在这里可以修改向量表、内存范围和堆栈大小。打开STM32F103VET6的默认icf文件,即stm32f103xE.icf。看到他的内容如下:


堆栈的对齐方式是8字节对齐吗????

修改Vector Table、Memory Regions和Stack/Heap Size就可修改icf文件的相应值。

 

如果堆栈是8字节对齐的话,那RAM最小空间是不是可以这样计算?

RAM Size = RW Size(本例中是6268) +STACK Size+ HEAP Size

 

堆栈的大小取决于程序,一般都是设置较大些。


IAR和APP程序的RAM可以共用,只需将ROM分开就行了。



版权声明:本文为博主原创文章,未经博主允许不得转载。

STM32IAP升级-----编写IAP升级遇到的问题总结

编写IAP升级遇到的问题总结 一,串口通信问题 二,FLASH问题 三,数组越界问题 四,关于APP与IAP互跳之间的中断处理问题 五,总结一下在IAP升级中APP程序的中断向量表的偏移...
  • f907279313
  • f907279313
  • 2014年06月18日 10:51
  • 7464

keil环境下IAP使用中 stm32中M0 M3中断偏移对比

M3中断偏移: 当加入IAP 程序之后,程序运行流程如图所示:默认情况下,main flash memory(0x0800 0000) is selected boot space,即映射为 0x0...
  • weixin_38848977
  • weixin_38848977
  • 2017年05月19日 11:54
  • 439

STM32内存管理以及堆和栈的理解

今天仔细读了一下内存管理的代码,然后还有看了堆栈的相关知识,把以前不太明白的一些东西想通了,写下来,方便以后查看,也想大家看了能指出哪里不对,然后修改。     ...
  • c12345423
  • c12345423
  • 2016年11月02日 09:38
  • 8678

STM32内部RAM在线调试配置方法及详细说明(基于Keil开发工具)

Ⅰ、写在前面本文主要讲述的内容:基于Keil开发工具下,STM32内部RAM在线调试配置方法,以及每一项配置的详细说明。如需要了解更多相关的文章,可以到我博客,或微信公众号查看。 让程序运行在RAM中...
  • ybhuangfugui
  • ybhuangfugui
  • 2016年09月22日 23:37
  • 6460

STM32 IAP 在线升级详解

一、在进入主题之前我们先了解一些必要的基础知识----stm32系列芯片的种类和型号: startup_stm32f10x_cl.s 互联型的器件,STM32F105xx,STM32F107xx ...
  • yx_l128125
  • yx_l128125
  • 2013年10月24日 15:49
  • 72943

STM32 IAP时RAM范围设置的疑惑

在用STM32F103VET6芯片做IAP时发现一个不解的地方。IAP和APP程序除了要定义不同的中断向量表外,RAM和ROM都要分区,不能有重叠区域。但是多大区域才合适呢?有没有计算的方法? 我用...
  • tomandjerry323
  • tomandjerry323
  • 2016年06月01日 16:30
  • 1236

IAR环境下STM32+IAP方案的实现

--基于STM32F103ZET6的UART通讯实现   一、什么是IAP,为什么要IAP       IAP即为In Application Programming(在应用中编程),一般情况下...
  • slj_win
  • slj_win
  • 2015年12月23日 11:25
  • 1346

STM32的内存地址映射与IAP下载

stm32的flash地址起始于0x08000000,结束地址是0x080000000加上芯片实际的flash大小,不同的芯片flash大小不同。RAM起始地址上0x200000000,结束地址是0x...
  • CallMeSumo
  • CallMeSumo
  • 2016年07月23日 11:36
  • 1437

STM32 IAP升级遇到的问题总结

IAP的源码等资料我上传了,压缩包内有12个文件,,http://download.csdn.net/detail/f907279313/7524849(要积分的辛苦收集的你们就给点积分吧) 还...
  • jxgxlm2008
  • jxgxlm2008
  • 2016年11月03日 14:44
  • 656

STM32F0 IAP Demo

  • 2014年08月21日 11:27
  • 6.37MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:STM32 IAP时RAM范围设置的疑惑
举报原因:
原因补充:

(最多只允许输入30个字)