LPC1766的AHB SRAM如何作普通RAM使用
现在用LPC1766做项目,lwip就占用27K RAM,本地32K SRAM已基本用完,还有很多功能未加进来,请问如何将另外的32K AHB SRAM做为普通RAM使用?简单的就是在 编译器里的“目标标工程配置”里勾上IRAM2 ,如图。 hameyou 发表于 2014-3-21 16:37
另外的32K AHB SRAM,是外挂的SRAM chip 吗?
内部的,不知道怎样做普通RAM使用
0x1000 0000- 0x1000 7FFF片上SRAM 本地SRAM-Bank0(32KB)
0x2007 C000- 0x2007 FFFF片上SRAM,通常用于存储外设数据AHB SRAM-Bank0(16KB)
0x2008 0000 - 0x2008 3FFF片上SRAM,通常用于存储外设数据AHB SRAM-Bank1(16KB) menglogic 发表于 2014-3-21 16:56
简单的就是在 编译器里的“目标标工程配置”里勾上IRAM2 ,如图。
我用的IAR,如何操作? 湘雪龙 发表于 2014-3-21 16:59
我用的IAR,如何操作?
参照icf加入内部RAM段定义就好了。 KEIL是编译器打钩,定义变量时,
变量要指定地址。 lusson 发表于 2014-3-21 17:09
参照icf加入内部RAM段定义就好了。
能说一下具体怎么定义吗?谢谢 Excellence 发表于 2014-3-21 17:14
KEIL是编译器打钩,定义变量时,
变量要指定地址。
如何指定地址?加什么样的关键字来指定呢? uint32 SystemRamTest __attribute__((at(0x2007C100)));
uint32 WakeupRamTest __attribute__((at(0x2007C104)));
试试。。。 if ((SystemRamTest == 0x5555aaaa) &&(WakeupRamTest==0xa5a5a5a5)) 我用的,监控开机状态。
你试试吧。 湘雪龙 发表于 2014-3-21 17:18
能说一下具体怎么定义吗?谢谢
icf其实就是定义不同段的地址,然后再定义把哪些数据放到哪些段中,比如你图中的region_RAM_...
对应的就是你现在用的RAM,下面依次定义了起始地址和结束地址
最后再有把哪个段放到这个RAM中:place in....
你参照这个再定义一个region_RAM1....
再设置哪些放到这里就可以了。
你可以参考我这个STM32F4的CCRAM的用法:
http://www.amobbs.com/thread-5570707-1-1.html Excellence 发表于 2014-3-21 17:27
uint32 SystemRamTest __attribute__((at(0x2007C100)));
uint32 WakeupRamTest __attribute__((at(0x2 ...
编译报错
Error: expected a ";"
分散加载就可以了。 参考了lusson在13楼提供的方法在变量前加入#pragma location = ".sram"就可以了,谢谢各位 Excellence 发表于 2014-3-21 17:27
uint32 SystemRamTest __attribute__((at(0x2007C100)));
uint32 WakeupRamTest __attribute__((at(0x2 ...
__attribute__是GCC的关键字吧。觉得GCC实现这个问题要修改ldscript。 在KEIL MDK 中加--GNU就可以了。 mark下! IAR中更简单的方法
define region RAM_region = mem:
| mem:; 直接或RAM的范围。
页:
[1]