你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

stm32f4 discovery SDRAM例程FMC_SDRAM_DataMemory问题

[复制链接]
wu1169668869 提问时间:2015-7-28 15:27 /
在F4系列的固件库里面看到这个例程
stm32f4_dsp_stdperiph_lib\Project\STM32F4xx_StdPeriph_Examples\FMC\FMC_SDRAM_DataMemory
在readme里面看到介绍:
This example shows how to use the MT48LC2M3B2B5-7E SDRAM mounted on
STM324x9I-EVAL RevB as data memory (including heap and stack).

不是discovery板子上用的那个SDRAM芯片,使用discovery板子自带例程:
STM32F429I-Discovery_FW_V1.0.1\Projects\Peripheral_Examples\FMC_SDRAM     中的初始化方式
  /* SDRAM Initialization */  
  SDRAM_Init();

  /* FMC SDRAM GPIOs Configuration */
  SDRAM_GPIOConfig();

  /* Disable write protection */
  FMC_SDRAMWriteProtectionConfig(FMC_Bank2_SDRAM,DISABLE);

将上述代码添加到template工程system_stm32f4xx.c的初始化函数
void SystemInit(void)中的
#if defined(DATA_IN_ExtSRAM) || defined(DATA_IN_ExtSDRAM)
  SystemInit_ExtMemCtl();
#endif /* DATA_IN_ExtSRAM || DATA_IN_ExtSDRAM */

代码段的下方

根据readme中所说需要把所有相同文件替换,看了一下几个文件都没做改动就没做修改,
环境用的keil,在readme中有如下:
<li> MDK-ARM
    - in Project->Options for Linker window, uncheck the option "Use Memory Layout
      from Target Dialog". You can then import the scatter file dedicated for this
      example.
    - uncomment "#define DATA_IN_ExtSDRAM " in the "system_stm32f4xx.c" file           

第一点需要导入一个scatter file,但是工程好像没有给出。。。

第二点的效果应该和自己导入那两个初始化一样?吧。。。

没玩过这么深入,还请有经验的帮帮忙~~多谢多谢

收藏 评论10 发布时间:2015-7-28 15:27

举报

10个回答
wu1169668869 回答时间:2015-7-28 15:42:57
据说初始化完就可以和SRAM一样来使用SDRAM了,有用过SRAM的或者哪里能找到例程。。。
creep 回答时间:2015-7-28 15:46:57
本帖最后由 creep 于 2015-7-28 16:01 编辑

把工程编译重编译会自动生成scatter file文件,要去掉勾选的"Use Memory Layout   from Target Dialog"选项。
wu1169668869 回答时间:2015-7-28 16:10:52
creep 发表于 2015-7-28 15:46
把工程编译重编译会自动生成scatter file文件,要去掉勾选的"Use Memory Layout   from Target Dialog"选项 ...

恩恩,可以看到sct文件,需要做什么修改吗还是直接可以用了
有什么帖子可以参考一下吗
creep 回答时间:2015-7-28 16:17:51
wu1169668869 发表于 2015-7-28 16:10
恩恩,可以看到sct文件,需要做什么修改吗还是直接可以用了
有什么帖子可以参考一下吗 ...

应该需要修改,将SDRAM的地址添加到里面,仿照sram的格式!!
有个类似的设置帖子可以看看:【STM32F303开发】+ 使用片内的CCMRAM缩短代码执行时间
wu1169668869 回答时间:2015-7-28 16:21:56
creep 发表于 2015-7-28 16:17
应该需要修改,将SDRAM的地址添加到里面,仿照sram的格式!!
有个类似的设置帖子可以看看:【STM32F303 ...

多谢多谢~
突然发现不能把函数放到SystemInit函数里面让startup调用…还要用寄存器改写
yanhaijian 回答时间:2015-7-28 19:56:17
要注意启动代码中要用的数据不能放置到外部SDRAM中。
wu1169668869 回答时间:2015-7-28 20:20:32
yanhaijian 发表于 2015-7-28 19:56
要注意启动代码中要用的数据不能放置到外部SDRAM中。

现在好像就遇到这种问题
我的sct文件现在是这样的:
; *************************************************************
; *** Scatter-Loading Description File generated by uVision ***
; *************************************************************

LR_IROM1 0x08000000 0x00200000  {    ; load region size_region
  ER_IROM1 0x08000000 0x00200000  {  ; load address = execution address
   *.o (RESET, +First)
   *(InRoot$$Sections)
   .ANY (+RO)
  }
  RW_IRAM1 0x20000000 0x00030000  {  ; RW data
   .ANY (+RW +ZI)
  }
  RW_ESDRAM1 0xd0000000 0x000400000{ ; RW data
   .ANY (+RW +ZI)
  }
}
最后一个ESDRAM1是discovery外挂的SDRAM,main函数中的数据现在可以定义到我要的大小,但是一执行到FMC开时钟就进默认中断了
继续看keil的帮助中…
wu1169668869 回答时间:2015-7-28 20:23:28
现在都是停在这一句
/*-- FMC Configuration ------------------------------------------------------*/
  /* Enable the FMC interface clock */
  //RCC->AHB3ENR |= 0x00000001;
        RCC->AHB3ENR |= RCC_AHB3Periph_FMC;
wu1169668869 回答时间:2015-7-29 00:39:59
还是没能解决
yanhaijian 回答时间:2015-7-29 08:10:26
wu1169668869 发表于 2015-7-28 20:20
现在好像就遇到这种问题
我的sct文件现在是这样的:
; ******************************************** ...

你这个分散加载肯定是有问题的,你要把启动代码部分数据放置在内部RAM中。

所属标签

相似问题

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版