你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。
chrome
firefox
safari
ie8及以上
ST
意法半导体官网
STM32
中文官网
ST
全球论坛
登录/注册
首页
技术问答
话题
资源
创客秀
视频
标签
每日签到
STM32团队2
论坛吐槽优化专区
升级测试
弱弱的问一下,SRAM怎么用
[复制链接]
日月当空-2044542
提问时间:2014-1-9 16:23 /
问答
是否解决:
不太清楚SRAM是如何工作的,是cpu自己将我们定义的buf、变量直接分配到这里面,还是需要使用什么函数来手动分配,记得有一个malloc函数,这是做什么的啊,堆和栈有什么区别啊
赞
0
收藏
0
评论
7
分享
发布时间:2014-1-9 16:23
举报
请先
登录
后回复
7个回答
有缘于你
回答时间:2014-1-9 19:36:54
a0a.1 0b0c
RE:弱弱的问一下,SRAM怎么用
最简单就是用 __attribute__((at(????)))
赞
0
评论
回复
支持
反对
日月当空-2044542
回答时间:2014-1-9 23:10:16
a0a.1 0b0c
回复:弱弱的问一下,SRAM怎么用
回复第 2 楼 于2014-01-09 19:36:54发表:
最简单就是用 __attribute__((at(????)))
愿闻其详
赞
0
评论
回复
支持
反对
wkuang
回答时间:2014-1-10 00:00:38
a0a.1 0b0c
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中直接直接指定片外片内内存的。或者自己写一个分散加载文件,编译使用那个分散加载来编译。
赞
0
评论
回复
支持
反对
wkuang
回答时间:2014-1-10 00:06:19
a0a.1 0b0c
RE:弱弱的问一下,SRAM怎么用
呵呵,干脆开个帖子,专业解答ARM基础知识
赞
0
评论
回复
支持
反对
看起来很黑
回答时间:2014-1-10 09:32:03
a0a.1 0b0c
回复:弱弱的问一下,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中直接直接指定片外片内内存的。或者自己写一个分散加载文件,编译使用那个分散加载来编译。
还是不明白
赞
0
评论
回复
支持
反对
勒布朗
回答时间:2014-1-10 16:22:30
a0a.1 0b0c
RE:弱弱的问一下,SRAM怎么用
先把SRAM驱动起来。再把数据存到里面
赞
0
评论
回复
支持
反对
dzc2001
回答时间:2014-1-11 00:31:04
a0a.1 0b0c
回复:弱弱的问一下,SRAM怎么用
你可以参考一下现成的代码,网上一大把
赞
0
评论
回复
支持
反对
所属标签
相似问题
关于
意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
13245底部标题123相同标题
12底部标题123相同标题
33333底部标题123相同序号
3435底部标题-无链接
关注我们
微信公众号
手机版
快速回复
返回顶部
返回列表
RE:弱弱的问一下,SRAM怎么用
回复:弱弱的问一下,SRAM怎么用
最简单就是用 __attribute__((at(????)))
愿闻其详
RE:弱弱的问一下,SRAM怎么用
给你举个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中直接直接指定片外片内内存的。或者自己写一个分散加载文件,编译使用那个分散加载来编译。
RE:弱弱的问一下,SRAM怎么用
回复:弱弱的问一下,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中直接直接指定片外片内内存的。或者自己写一个分散加载文件,编译使用那个分散加载来编译。
还是不明白
RE:弱弱的问一下,SRAM怎么用
回复:弱弱的问一下,SRAM怎么用