你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。
chrome
firefox
safari
ie8及以上
ST
意法半导体官网
STM32
中文官网
ST
全球论坛
登录/注册
首页
技术问答
话题
资源
创客秀
视频
标签
积分商城
每日签到
弱弱的问一下,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管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号
手机版
快速回复
返回顶部
返回列表
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怎么用