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

弱弱的问一下,SRAM怎么用

[复制链接]
日月当空-2044542 提问时间:2014-1-9 16:23 /
不太清楚SRAM是如何工作的,是cpu自己将我们定义的buf、变量直接分配到这里面,还是需要使用什么函数来手动分配,记得有一个malloc函数,这是做什么的啊,堆和栈有什么区别啊
收藏 评论7 发布时间:2014-1-9 16:23

举报

7个回答
有缘于你 回答时间:2014-1-9 19:36:54

RE:弱弱的问一下,SRAM怎么用

最简单就是用 __attribute__((at(????)))
日月当空-2044542 回答时间:2014-1-9 23:10:16

回复:弱弱的问一下,SRAM怎么用

回复第 2 楼 于2014-01-09 19:36:54发表:

最简单就是用 __attribute__((at(????))) 

愿闻其详
wkuang 回答时间:2014-1-10 00:00:38

RE:弱弱的问一下,SRAM怎么用

st使用SRAM首先用一个分散加载文件,告诉编译你有哪些存储空气,包括ram 和ROM。然后malloc就从ram中分配内存。分散加载文件时arm 构架规定的
给你举个IAR 5.4的官方历程给你举个例子
1、iar工程打开后,从project-》option-》link看到link文件来自$PROJ_DIR$\STM32F10x_FLASH.icf,对应安装目录的D:\Program Files\IAR Systems\Embedded Workbench 5.4\arm\examples\ST\STM32F10x\stm32f10x_stdperiph_lib\Project\STM32F10x_StdPeriph_Examples\FSMC\SRAM\stm32f10x_flash.icf
这个文件下定义了几个预编译命令,告诉编译器ROM/RAM起始和终止地址在哪。
define symbol __ICFEDIT_intvec_start__ = 0x08000000;
/*-Memory Regions-*/
define symbol __ICFEDIT_region_ROM_start__   = 0x08000000 ;
define symbol __ICFEDIT_region_ROM_end__     = 0x0807FFFF;
define symbol __ICFEDIT_region_RAM_start__   = 0x20000000;
define symbol __ICFEDIT_region_RAM_end__     = 0x2000FFFF;

/*-Sizes-*/__ICFEDIT_size_cstack__
define symbol    = 0x400;
define symbol __ICFEDIT_size_heap__     = 0x200;
/**** End of ICF editor section. ###ICF###*/
2、同时在这个文件
D:\Program Files\IAR Systems\Embedded Workbench 5.4\arm\config\ide\IcfEditor\cortex_v1_0.xml文件里规定了堆栈和RAM ROM的位置是哪个地址。其中ROM是程序存放地址,RAM是分配内存的地址。


Start:
End:


__ICFEDIT_region_ROM_start__
__ICFEDIT_region_ROM_end__
The start address of the ROM region
The end address of the ROM region


__ICFEDIT_region_RAM_start__
__ICFEDIT_region_RAM_end__
The start address of the RAM region
The end address of the RAM region


3、以上几个文件综合起来生成一个分散加载文件,达到合理分配内存的目的。给你一个IAR工程例子D:\Program Files\IAR Systems\Embedded Workbench 5.4\arm\examples\ST\STM32F10x\stm32f10x_stdperiph_lib\Project\STM32F10x_StdPeriph_Examples\FSMC\SRAM
4、建议多看看arm分散加载,你还可以自己定义分散加载,规定每个文件编译好放在哪个地址, 哪个文件/变量分配在哪个地址。
5、DSP和ARM都可以使用这种方法,具体使用查看编译器手册。
6、在MDK中直接直接指定片外片内内存的。或者自己写一个分散加载文件,编译使用那个分散加载来编译。
wkuang 回答时间:2014-1-10 00:06:19

RE:弱弱的问一下,SRAM怎么用

呵呵,干脆开个帖子,专业解答ARM基础知识
看起来很黑 回答时间:2014-1-10 09:32:03

回复:弱弱的问一下,SRAM怎么用

回复第 4 楼 于2014-01-10 00:00:38发表:
st使用SRAM首先用一个分散加载文件,告诉编译你有哪些存储空气,包括ram 和ROM。然后malloc就从ram中分配内存。分散加载文件时arm 构架规定的
给你举个IAR 5.4的官方历程给你举个例子
1、iar工程打开后,从project-》option-》link看到link文件来自$PROJ_DIR$\STM32F10x_FLASH.icf,对应安装目录的D:\Program Files\IAR Systems\Embedded Workbench 5.4\arm\examples\ST\STM32F10x\stm32f10x_stdperiph_lib\Project\STM32F10x_StdPeriph_Examples\FSMC\SRAM\stm32f10x_flash.icf
这个文件下定义了几个预编译命令,告诉编译器ROM/RAM起始和终止地址在哪。
define symbol __ICFEDIT_intvec_start__ = 0x08000000;
/*-Memory Regions-*/
define symbol __ICFEDIT_region_ROM_start__   = 0x08000000 ;
define symbol __ICFEDIT_region_ROM_end__     = 0x0807FFFF;
define symbol __ICFEDIT_region_RAM_start__   = 0x20000000;
define symbol __ICFEDIT_region_RAM_end__     = 0x2000FFFF;

/*-Sizes-*/__ICFEDIT_size_cstack__
define symbol    = 0x400;
define symbol __ICFEDIT_size_heap__     = 0x200;
/**** End of ICF editor section. ###ICF###*/
2、同时在这个文件
D:\Program Files\IAR Systems\Embedded Workbench 5.4\arm\config\ide\IcfEditor\cortex_v1_0.xml文件里规定了堆栈和RAM ROM的位置是哪个地址。其中ROM是程序存放地址,RAM是分配内存的地址。



Start:
End:


__ICFEDIT_region_ROM_start__
__ICFEDIT_region_ROM_end__
The start address of the ROM region
The end address of the ROM region


__ICFEDIT_region_RAM_start__
__ICFEDIT_region_RAM_end__
The start address of the RAM region
The end address of the RAM region


3、以上几个文件综合起来生成一个分散加载文件,达到合理分配内存的目的。给你一个IAR工程例子D:\Program Files\IAR Systems\Embedded Workbench 5.4\arm\examples\ST\STM32F10x\stm32f10x_stdperiph_lib\Project\STM32F10x_StdPeriph_Examples\FSMC\SRAM
4、建议多看看arm分散加载,你还可以自己定义分散加载,规定每个文件编译好放在哪个地址, 哪个文件/变量分配在哪个地址。
5、DSP和ARM都可以使用这种方法,具体使用查看编译器手册。
6、在MDK中直接直接指定片外片内内存的。或者自己写一个分散加载文件,编译使用那个分散加载来编译。
还是不明白
 
 
勒布朗 回答时间:2014-1-10 16:22:30

RE:弱弱的问一下,SRAM怎么用

先把SRAM驱动起来。再把数据存到里面
dzc2001 回答时间:2014-1-11 00:31:04

回复:弱弱的问一下,SRAM怎么用

 你可以参考一下现成的代码,网上一大把

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版