您的位置: OpenADSP社区论坛 -> Blackfin专区 -> 新手上路 -> BF53x技术支持专区 -> 【已解决】bf53x如何将数据分配到SDRAM的固... 
本帖共有1133个阅读者
发表帖子 发表投票 回复主题
【已解决】bf53x如何将数据分配到SDRAM的固定位置
blackfin(论坛游民)
blackfin
头衔:社区公民
帮派:无帮无派
帖数:114
金钱:1105
积分:153
注册时间:2011/6/10
楼主信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
精华主题 精华帖子
【已解决】bf53x如何将数据分配到SDRAM的固定位置
如题,程序中有一个1M的数组,在程序中定义数组section ("MY_DATA") short data[1024*1024],在程序中指定段MY_DATA。这时自动生成的LDF文件会在SDRAM中分自动分配空间给这个大数组,但是地址会随程序变动后重新编译而变化,请问要怎么修改LDF文档才可以固定这个数据在SDRAM中的位置呢?



「该帖子被 OpenADSP 在 2011-06-17 09:59:04 编辑过」

这家伙很懒,什么也没有留下!
等级:论坛游民 参考IP地址:*.*.*.*
2011/6/15 14:03:22
尊贵身份标志
andy(论坛版主)
andy
头衔:社区公民
帮派:无帮无派
帖数:2287
金钱:11132
积分:2263
注册时间:2011/6/8
1信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线

你可以用代码方式打开LDF文件,在代码中开辟一个叫MY_DATA的内存区域,该内存区域要略大于你分配的1M空间,,然后再代码中调用,这样你调用的MY_DATA内存因为已指定了区域,所以不会再由系统随即分配而变化,附件是按你的要求分配好的,你可以参考。


上传的附件
   201161522233415.rar [ 356.95 KB ]


这家伙很懒,什么也没有留下!
等级:论坛版主 参考IP地址:*.*.*.*
2011/6/15 22:26:36
DA高(论坛新手)
DA高
头衔:社区公民
帮派:无帮无派
帖数:8
金钱:140
积分:8
注册时间:2011/6/8
2信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
强烈要求版主做一个LDF配置的教程。

这家伙很懒,什么也没有留下!
等级:论坛新手 参考IP地址:*.*.*.*
2011/6/16 10:36:31
blackfin(论坛游民)
blackfin
头衔:社区公民
帮派:无帮无派
帖数:114
金钱:1105
积分:153
注册时间:2011/6/10
3信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线

多谢指点,用你的方法可以固定有指定的位置。但是“在代码中开辟一个叫MY_DATA的内存区域,该内存区域要略大于你分配的1M空间”。为什么要略大于1M呢?多出的空间是用来做什么的呢?


这家伙很懒,什么也没有留下!
等级:论坛游民 参考IP地址:*.*.*.*
2011/6/16 19:37:47
雨月狂澜(论坛新手)
雨月狂澜
头衔:社区公民
帮派:无帮无派
帖数:3
金钱:124
积分:4
注册时间:2011/6/8
4信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线

我觉得应该开一个两兆的空间,楼主定义的是short 型数组,而LDF文件的定义是按字节定义的,所以占用的是2M空间。不知道说得对不对!

section ("MY_DATA") short data[1024*1024]


这家伙很懒,什么也没有留下!
等级:论坛新手 参考IP地址:*.*.*.*
2011/6/16 20:36:32
尊贵身份标志
andy(论坛版主)
andy
头衔:社区公民
帮派:无帮无派
帖数:2287
金钱:11132
积分:2263
注册时间:2011/6/8
5信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线

楼上说得没错,我当时没有注意到是short型,在LDF开1MB空间后编译代码,发现有错误提示,提示空间小了,我以为可能其他地方的代码占用了这个地址段,就随手改成了两兆,刚才注意了一下,是short类型造成的,所以空间必须开2MB。

另外上传一个中文的LDF文档给大家学习:


上传的附件
   201161621424230.pdf [ 426.31 KB ]


这家伙很懒,什么也没有留下!
等级:论坛版主 参考IP地址:*.*.*.*
2011/6/16 21:42:47
xiaoyu(论坛新手)
xiaoyu
头衔:社区公民
帮派:无帮无派
帖数:2
金钱:110
积分:2
注册时间:2011/6/8
6信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
代码和资料都很有用,谢谢!

这家伙很懒,什么也没有留下!
等级:论坛新手 参考IP地址:*.*.*.*
2011/6/16 21:59:58
blackfin(论坛游民)
blackfin
头衔:社区公民
帮派:无帮无派
帖数:114
金钱:1105
积分:153
注册时间:2011/6/10
7信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
对了,还有一个疑问。外接的SDRAM在自动生成的LDF文件中被平均分配成4个大小一样的空间。是不是这样的分配最合理,最快。还有当一段代码的执行处两个大数组时,是不是把它们分配到不同的区时,会加快执行的速度呢?

这家伙很懒,什么也没有留下!
等级:论坛游民 参考IP地址:*.*.*.*
2011/6/16 22:08:09
蓝枫(论坛新手)
蓝枫
头衔:社区公民
帮派:无帮无派
帖数:3
金钱:115
积分:3
注册时间:2011/6/8
8信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
一般SDRAM有4个BANK控制器,每个BNAK控制器负责一段区域,所以LDF默认分配的是4个BANK,在进行大数据操作时,尤其是用到Pingpang Buffer 连续操作数据时,要把数据放在两个不同的BANK,这样操作数据速度会快一点。如果自己在LDF定义很多空间片段,在使用时,也要注意不要让连续使用的buffer位于同一个SDRAM的BANK中,

这家伙很懒,什么也没有留下!
等级:论坛新手 参考IP地址:*.*.*.*
2011/6/17 9:18:02
blackfin(论坛游民)
blackfin
头衔:社区公民
帮派:无帮无派
帖数:114
金钱:1105
积分:153
注册时间:2011/6/10
9信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
多谢各位指点!

这家伙很懒,什么也没有留下!
等级:论坛游民 参考IP地址:*.*.*.*
2011/6/18 9:31:32
Powered by OpenADSP Copyright © 2010 www.Openadsp.com. All rights reserved.154387 Call, 1 Queries, Processed in 0.031250 second(s),