您的位置: OpenADSP社区论坛 -> Blackfin专区 -> 技术讨论区 -> 关于BF532板子外挂SDRAM的时候,用仿真器进... 
本帖共有2378个阅读者
发表帖子 发表投票 回复主题
关于BF532板子外挂SDRAM的时候,用仿真器进行仿真的时候可以运行,但是生成LDR文件,下载到FLASH中,再上电就运行不了
piliyouke88(论坛新手)
piliyouke88
头衔:社区公民
帮派:无帮无派
帖数:8
金钱:216
积分:12
注册时间:2015/8/14
楼主信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
关于BF532板子外挂SDRAM的时候,用仿真器进行仿真的时候可以运行,但是生成LDR文件,下载到FLASH中,再上电就运行不了
1.我用的是BF532的芯片,我现在还原到最简单的工程,也就是我自己新建一个最小的工程,然后选择加入LDF文件,32M的SDRAM,在代码里面写一个最简单的LED点灯的程序,编译通过之后,用仿真器,仿真F5全速跑的时候,程序可以正常运行,然后我再编译成LDR文件,下载到FLASH的地址0x20000000地址中,再上电,程序就运行不起来了。我也将initialization文件加进去了,就是DIMA32M_CB_Initiliztioncode.dxe.文件。这个文件时OP昨天刚发给我的。   这个问题也困扰我好多天了。一直没解决,现在跪求大神帮忙呀。
增加DIMA32M_CB_Initiliztioncode.dxe.编译报这个错误:如下,
----------------Configuration: startup - Debug----------------
Creating loader file...
Error: no section in the code memory space
Tool failed with exit/exception code: 4294967295.
Build was unsuccessful.

2.我还有个疑问就是dxe文件是用来初始化SDRAM的。换句话说,我假如在汇编文件里面加上初始化SDRAM的代码之后,那我是不是就不需要直观dxe文件了?

3.疑问3:如果我不初始化SDRAM是不是程序就肯定不能运行呢?我看有section(“sdram0”)这个语句,也就是我的变量和函数如果没有调用这个语句定位到外部的SDRAM运行的话,应该不会出现程序不能运行的情况。所以我有疑惑。


这家伙很懒,什么也没有留下!
等级:论坛新手 参考IP地址:*.*.*.*
2015/8/14 9:10:42
piliyouke88(论坛新手)
piliyouke88
头衔:社区公民
帮派:无帮无派
帖数:8
金钱:216
积分:12
注册时间:2015/8/14
1信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
我用的是visual DSP 5.0 开发环境。

这家伙很懒,什么也没有留下!
等级:论坛新手 参考IP地址:*.*.*.*
2015/8/14 10:25:31
尊贵身份标志
OpenADSP(管理员)
OpenADSP
头衔:社区公民
帮派:无帮无派
帖数:5187
金钱:34761
积分:6369
注册时间:2011/6/7
2信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
等级:管理员 参考IP地址:*.*.*.*
2015/8/14 10:27:49
piliyouke88(论坛新手)
piliyouke88
头衔:社区公民
帮派:无帮无派
帖数:8
金钱:216
积分:12
注册时间:2015/8/14
3信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
在0XFA00000这个位置加一句jump.s0.这个是在哪里加啊?而且我的硬件芯片是BF532在session的时候,只有533没有532

这家伙很懒,什么也没有留下!
等级:论坛新手 参考IP地址:*.*.*.*
2015/8/14 10:48:38
kaye_zerone(论坛新手)
kaye_zerone
头衔:社区公民
帮派:无帮无派
帖数:14
金钱:181
积分:13
注册时间:2015/7/23
4信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
同样的疑问,为什么用仿真器调试的时候不需要初始化SDRAM?
我现在也因为片外SDRAM的问题折腾了很久,用的开发环境是CCES,给ADI这边的FAE写了邮件也没回,
这个芯片用得有点恶心。

世上无难事,只要肯攀登
等级:论坛新手 参考IP地址:*.*.*.*
2015/8/14 11:39:25
尊贵身份标志
andy(论坛版主)
andy
头衔:社区公民
帮派:无帮无派
帖数:2287
金钱:11132
积分:2263
注册时间:2011/6/8
5信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
1. BF532 ADI早就停产了,OP给你的文件建立的section是在BF533下的,所以你增加后会报 section的错误。
一种简单的解决方法,把你的工程section改为BF533,你再按照你之前的方法生成LDR试试。
BF533和BF532内核完全一样,指令兼容,唯有L1大小不同,只要你不把L1用满,把内存多分配到SDRAM中,不会出现报错异常,你可以试试。
2. 汇编里或者C里面的SDRAM初始化文件,是代码运行后才能被加载的。当板卡上电后,flash的代码会根据LDR文件格式加载到指定的内存中,可能是L1,可能是SDRAM,这个在生成LDR时已经固定了,在代码加载执行SDRAM初始化之前,SDRAM是不可用的,这就导致了你的代码加载失败,所以不能启动。唯一初始化SDRAM的做法,就是加载init_code .dxe文件。这个文件会固定在L1中执行,并初始化SDRAM,以确保SDRAM可用。
3. 不初始化SDRAM,可以执行不使用SDRAM 的代码。


「该帖子被 andy 在 2015-08-14 21:05:29 编辑过」

这家伙很懒,什么也没有留下!
等级:论坛版主 参考IP地址:*.*.*.*
2015/8/14 21:01:04
尊贵身份标志
OpenADSP(管理员)
OpenADSP
头衔:社区公民
帮派:无帮无派
帖数:5187
金钱:34761
积分:6369
注册时间:2011/6/7
6信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
纠正一下楼上的,532并没有停产。

我是OP...
等级:管理员 参考IP地址:*.*.*.*
2015/8/14 21:03:06
尊贵身份标志
OpenADSP(管理员)
OpenADSP
头衔:社区公民
帮派:无帮无派
帖数:5187
金钱:34761
积分:6369
注册时间:2011/6/7
7信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
不过andy倒是提醒了我,你难道工程建的不是533的?我这约定俗成了,感觉大家不管是用531,532还是533,工程都会直接建成533的,反正都一样。

我是OP...
等级:管理员 参考IP地址:*.*.*.*
2015/8/14 21:04:59
尊贵身份标志
andy(论坛版主)
andy
头衔:社区公民
帮派:无帮无派
帖数:2287
金钱:11132
积分:2263
注册时间:2011/6/8
8信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
在0XFA00000这个位置加一句jump.s0.这个是在哪里加啊?而且我的硬件芯片是BF532在session的时候,只有533没有532。

答:工程里都会有一个.s文件,需要通过工程选项才能生成,忘记是哪个了,不常用这个,这句应该是跳转这个.s文件的。
没有BF532,可以安装新的VDSP版本看看,现在最高版本是VDSP5.1

这家伙很懒,什么也没有留下!
等级:论坛版主 参考IP地址:*.*.*.*
2015/8/14 21:07:36
尊贵身份标志
andy(论坛版主)
andy
头衔:社区公民
帮派:无帮无派
帖数:2287
金钱:11132
积分:2263
注册时间:2011/6/8
9信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
同样的疑问,为什么用仿真器调试的时候不需要初始化SDRAM?
我现在也因为片外SDRAM的问题折腾了很久,用的开发环境是CCES,给ADI这边的FAE写了邮件也没回,
这个芯片用得有点恶心。

答:
用仿真器的时候,VDSP会调用一个叫做 *-proc.xml的文件,这个文件中有的已经默认了初始化SDRAM的代码。所以不需要。
另外 仿真时,代码会在L1中执行,执行一句加载一句,在执行到SDRAM初始化后,会对SDRAM初始化。不会出现执行代码直接导入到还没有初始化的SDRAM中的情况。而LDR文件在生成时,已经决定了代码块的执行位置,所以若SDRAM不初始化,将导致加载的代码出错。

这家伙很懒,什么也没有留下!
等级:论坛版主 参考IP地址:*.*.*.*
2015/8/14 21:11:38
11
1
1/2
Powered by OpenADSP Copyright © 2010 www.Openadsp.com. All rights reserved.153929 Call, 1 Queries, Processed in 0.015625 second(s),