打印
[STM32F4]

请大家谈谈STM32F4上几块RAM的用法和相关注意事项

[复制链接]
14706|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
guet_new_man|  楼主 | 2014-3-14 01:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
:lol:lol潜水很长一阵子了,最近在玩F4,所以就顺便提一些开放性的课题,与各位同学共同学习,分数不多;P,只有5分,我会选出5个同学每人发1分作为感谢,呵呵~~:P:)

如题,希望各位看官能根据自己的经验,谈谈STM32F4上几块RAM区(地址不连续)的用法,当然,不应该局限于F4,包括其他的如STM32F1xx或者ARM9等构成的平台上不止使用一块RAM时。

呵呵,我先带个头,简略讲一下之前项目中的一些做法:
   1.  纯裸机
(1)STM32F1xx接有外扩的SRAM,一共有两片SRAM---内部SRAM与外部SRAM,它们的用法分别是: 内部SRAM--用作基础平台的全局或静态变量、栈、堆空间,速度较快;外部SRAM--用作存放一些大型的数据块,速度较慢。
(2)STM32F4接有外扩的SDRAM,共有SRAM1(112KB)、SRAM2(16KB)、SRAM3(64KB)、CCMRAM(64KB)、SDRAM(xxMB),它们的用法分别是:CCMRAM作为基础平台的全局或静态变量、堆、栈空间;SRAM1、SRAM2、SRAM3以及SDRAM分别是专用数据块使用。
(3)关于基础平台,这里再提出一个小问题:基础平台中没有内存管理接口,所以应该是不存在堆吧?? 翻看过IAR编译链接后生成的*.map文件,确实没见有哪里引用HEAP的,只有全局或静态变量、栈。因此,在编写链接器的配置文件时,是不是可以不定义HEAP空间或者把HEAP空间设为0?

  2. 带OS
(1)STM32F4接有外扩的SDRAM,共有SRAM1(112KB)、SRAM2(16KB)、SRAM3(64KB)、CCMRAM(64KB)、SDRAM(xxMB),它们的用法分别是:CCMRAM作为基础平台的全局或静态变量、堆、栈空间(该基础平台包含了OS必须用的一些资源,这里等于是把OS本身耗费的内存与所管理任务使用的内存分离开了);SRAM1作为OS的内存单元,即OS的任务堆、栈空间;SRAM2、SRAM3以及SDRAM分别是专用数据块使用,比如SRAM2分成几份给串口用,SRAM3分成几份给USB或者以太网用,SDRAM用于其他一些大的数据块或者是直接与文件系统对接起来;
(2)带OS的基础平台,这其中的堆空间是不是也不需要?  我的理解是,一般OS自身耗费的资源,跟其他基础程序一样,都没有第三方的东西来管理,所以引出一个同样的问题,在编写链接器的配置文件时,是不是可以不定义HEAP空间或者把HEAP空间设为0?

   PS:IAR的icf链接器配置文件太博大精深了,看了多次IAR的开发指南,仍然处在菜鸟边缘,惭愧啊,希望大牛们能发一些这方面的帖子,供我等菜鸟膜拜学习,呵呵。。。
沙发
wallace_tsou| | 2014-3-14 11:44 | 只看该作者
HEAP為malloc用的。若是沒有用到這個函式,其使用量為0。
若是有用,不管有無O.S.皆往HEAP取空間。使用上小心。

使用特权

评论回复
板凳
guet_new_man|  楼主 | 2014-3-14 17:37 | 只看该作者
wallace_tsou 发表于 2014-3-14 11:44
HEAP為malloc用的。若是沒有用到這個函式,其使用量為0。
若是有用,不管有無O.S.皆往HEAP取空間。使用上小 ...

对,就是想确定一下

使用特权

评论回复
地板
liil1992| | 2017-6-21 17:14 | 只看该作者
老帖了 ,翻出来看看还是挺有帮助啊

使用特权

评论回复
5
jonele| | 2017-6-30 10:42 | 只看该作者
好帖子,做个记录。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:Only to live happily and wonderfully!

2

主题

181

帖子

2

粉丝