让STM32的外接SRAM操作跟内部SRAM一样

2020-01-01 17:59发布

大家都有给STM32外接SDRAM的经历,但是外接了却无法让编译器将已定义变量自动分配到外接SDRAM中,当我们使用UCOS和EMWIN时,会出现以下问题:

STEP5.jpg (331.88 KB, 下载次数: 1) 下载附件 2016-3-1 07:20 上传


按照以上步骤配置完后,以后使用外部SDRAM就跟用内部SRAM一样,不用自己去申请内存,也不用考虑什么内存地址,一切让编译器自己去解决。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
96条回答
love_ourdev
2020-01-11 07:09
yaya001 发表于 2016-3-4 20:47
很想知道 在IAR中如何 和MDK一样的设置

IAR中也是很简单的,这些属于工具链的知识;现在的开发人员都很浮躁,他们不愿意深入理解自己所使用的工具,都是一知半解就行了。
拿楼主的内存布局做为例子(这样更利于对比),IAR下您只需在ICF文件中加入下面这些定义就可以了:


  1. define region RAM1 = mem:[from 0xC0000000 size 0x1E00000];
  2. define region IRAM1 = mem:[from 0x20000000 size 0x30000];
  3. define region IRAM2 = mem:[from 0x10000000 size 0x10000];
  4. define region RAM_region = RAM1 | IRAM1 | IRAM2;

  5. place in RAM_region { readwrite, block CSTACK, block HEAP };
复制代码

我估计你看了上面的define之后,就心里有数了;根本不用原模原样抄我的例子。
此外,在SystemInit中初始化SDRAM控制器的代码还是需要的,这些做法和Keil一致。

一周热门 更多>