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分开就行了。



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

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

stm32的flash地址起始于0x08000000,结束地址是0x080000000加上芯片实际的flash大小,不同的芯片flash大小不同。RAM起始地址上0x200000000,结束地址是0x...

STM32启动时RAM空间堆(Heap)和栈(stack)的分配

转载请注明出处,谢谢。   先说结论,STM32再启动的时候RAM首先分配给使用到的全局变量,及调用库占用的一些数据(不太清楚是什么数据) ,然后再将剩余的空间分配给Heap和stack。    ...

STM32栈和堆使用不同RAM的实现方法

STM32栈和堆使用不同RAM实现的方法最近在调试将开源数据压缩算法zlib移植到STM32的工程中. 由于zlib要占用大量的动态内存(缺省设置下需要至少280kB左右的内存), STM32内部的4...

Keil MDK中的Code, RO-data , RW-data, ZI-data分别代表什么意思?

一 基础知识 字节  8位 半字  16位 字    32位   二 解惑 Code, RO-data,RW-data,ZI-data RO就是readonly, RW就是read/write, ZI...

stm32f4 RAM中运行程序 读保护设置 - tofixer

stm32f4 RAM中运行程序 读保护设置 - tofixer 时间 2014-04-24 12:03:19  博客园-所有随笔区原文  http://www.cnblogs.com/tofi...
  • rrxxzz
  • rrxxzz
  • 2014年08月21日 23:25
  • 1159

用STM32F103C8T6的做IAP时,在跳转时一直进入HardFault_Handler 解决方法

首先是IAP STM32F103C8T6的flash是64k,每次擦除是1k 1、用串口接收APP的bin文件数据,然后写入内部的FLASH //appxaddr是要跳转的地址 设置是0x080...

STM32的IAP下载与设置

首先修改IAP程序:  由于官方的例子中是基于官方的开发板的,其中使用的触发条件为上电检测一个按键。所以需要更改启动设置。去官方下载IAP程序 http://www.stmicroelec...

STM32f030 boot iap升级时keil配置注意事项

最近使用了一款Cortex-M0内核的芯片STM32F030CC,发现它中断向量表的重映射方法与STM32F10x系列的有所区别,在这里记录与分享一下。 由于需要通过IAP进行固件升级,...
  • jacycle
  • jacycle
  • 2017年07月22日 10:17
  • 334

STM32定时器输出比较模式中的疑惑【转】

OCx与OCxREF和CCxP之间的关系 初学STM32,我这个地方卡了很久,现在终于有些明白了,现在把我的理解写下与大家共享,如果有不对的地方,还请指出。 OCxREF就是一个参考信...
  • LZQ0056
  • LZQ0056
  • 2015年03月11日 22:18
  • 512
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:STM32 IAP时RAM范围设置的疑惑
举报原因:
原因补充:

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