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

【原创】【STM32F429开发日志】通过修改.sct文件自动分配SDRAM变量

[复制链接]
wjandsq 提问时间:2014-6-24 16:21 /
 
第一步,打开SDRAM例程,SDRAM的起始地址为: 0xD000000, 分配RAM1大小为4M字节。
编译SDRAM例程,会生成一个.sct文件。
  SDRAM AREAS设置.png
图1 使用Keil存储器分配图设置SDRAM的起始位置和大小
 
第二步, 取消选择Use Memory Layout from Target Dialog,手动编辑FMC_SDRAM.sct文件
不再使用Keil的存储器分配图,而是使用其生成的.sct文件.png
图2  不再使用Keil的存储器设置对话框
 
手动修改.sct文件.png
图3  .sct文件修改前后对比
 
 
第三步,SDRAM变量声明
/* ADDRESS: 0x0D0000000  SIZE: 0x400000  */
#pragma arm section rwdata = "SD_RAM1", zidata = "SD_RAM1"
__IO uint8_t USART1_Rx_Buffer[0x10000]; // 0x10000: 64K
__IO uint16_t USART1_Rx_Count;
#pragma arm section rwdata
 
/* ADDRESS: 0xD0400000  SIZE: 0x400000   */
__IO uint8_t USART1_Rx_Buffer2[0x10000] __attribute__ ((at(0xD0400000))); // 0x10000: 64K
 
第四步,对示例代码进行硬件仿真测试,在观察串口查看变量的位置和内容。
  for (counter = 0x00; counter < IS42S16400J_SIZE; counter++)
  {
    *(__IO uint8_t*) (SDRAM_BANK_ADDR + counter) = (uint8_t)0x0;
  }
 
  for(counter = 0; counter < 0x10000; ++counter){
    USART1_Rx_Buffer[counter] = 0x03;
  }
 
  for (counter = 0x00; counter < IS42S16400J_SIZE; counter++)
  {
    *(__IO uint8_t*) (SDRAM_BANK_ADDR + 0x400000 + counter) = (uint8_t)0x0;
  }
  for(counter = 0; counter < 0x10000; ++counter){
    USART1_Rx_Buffer2[counter] = 0x02;
  }
  
 
 
收藏 1 评论5 发布时间:2014-6-24 16:21

举报

5个回答
ST_W 回答时间:2014-12-4 18:23:01
你好,能上传工程文件看下吗?
wjandsq 回答时间:2014-12-10 10:47:00
有版本限制的,MDK-ARM编译器比较奇怪,有的版本支持某个.sct文件,有的版本就不支持,如果不是做bootlaoder之类的,不建议修改.sct文件,推荐用GCC编译器。
许小锁 回答时间:2015-11-19 14:55:33
你好,能上传工程文件看下吗?
Dylan疾风闪电 回答时间:2015-11-20 08:58:03
又多学到一种手段。
赞,LZ
wofei1314 回答时间:2016-5-17 16:10:52
学习了,收藏下,兴许以后可以用到~
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版