如何将变量定义到外部RAM

2019-07-21 00:32发布

本帖最后由 chuangong 于 2015-12-26 10:33 编辑

如何将变量定义到外部RAM
正点原子探索者的STM32F407开发板,配置有1M的外部SRAM
本想基于例程的ucos+LWIP实验“网络实验8 NETCONN_TCP 客户端.rar”,加上老项目任务就OK,但多次编译编译失败;
查找问题:居然是ucos+LWIP例程中用来外部RAM和内存管理,使原本很充裕的192k的ram(老项目用一半不到),一下所

剩无几,稍加变量就编译出错。
做了个实验,定义一个全局变量test[6000]就能编译OK,test[7000]就出错.
由于旧工程都是采用这种定义方式,而且很多不同类型的变量,
该怎么实现将这些变量定义到外部ram里面,简化移植难度呢?谢谢各位!!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
10条回答
chuangong
1楼-- · 2019-07-21 15:14
正点原子 发表于 2015-12-26 20:02
是的,必须一个个指定。

如果真的是这样,对stm32有点无语,
之前做好的项目代码,全局变量上数千个,而且有些还很复杂的结构体等,如果每个变量都要手工指定,这样移植的风险,和工作量可想而知。
没有其他办法了吗??
夜猫煮茶
2楼-- · 2019-07-21 16:11
可以使用分散加载,把OS的堆栈放到CCM和其它大内存的数据放到CCM
xuande
3楼-- · 2019-07-21 21:03
 精彩回答 2  元偷偷看……
chuangong
4楼-- · 2019-07-21 21:13
xuande 发表于 2015-12-27 12:23
难道要把所有变量都移到外部ram吗?那就修改icf文件吧。
我只定位必要的变量,其他变量让编译器自己分 ...

好的,谢谢!!
我明白你的意思了!!调些过大的变量,
这样用他们例程的内存管理函数也行了!!

一周热门 更多>