您的位置: OpenADSP社区论坛 -> Blackfin专区 -> 新手上路 -> BF518自启动问题
本帖共有776个阅读者
发表帖子 发表投票 回复主题
BF518自启动问题
langbeimao(论坛新手)
langbeimao
头衔:社区公民
帮派:无帮无派
帖数:15
金钱:222
积分:18
注册时间:2011/11/25
楼主信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
BF518自启动问题

andy,我自己做的BF518的板子,用16bit的M29W320EB作为程序存储器,自启动,遇到如下问题,特向你请教:

1. 我自己编写对flash进行读写操作的测试程序时,发现地址线直接用+555,+2aa的序列就写进去了,如果修改地址线的话,即改为aaa,554的序列反而连器件ID都读不会来。地址线连接时dsp的A1接flash的A0,dsp的A2接flash的A1,高位用ams做逻辑。而我用flash programming里的驱动来进行烧写时,发现驱动里面的序列都是做了偏移的,即改为aaa,554的序列才能烧进去。有点晕,不晓得why。

2. 烧进flash后,能自举,但是跑过几次后,就起不来了,我发现这时FLASH里的数据都是一个数据,如a817a817a817……如果给flash进行一次初始化,即对EBIU的amc寄存器进行一下配置,数据就立马恢复成烧写进去的数据,我以为是生成ldr的时候,初始化代码的问题,但是看了些帖子,貌似initcode只是对sdram和pll初始化,对flash没啥影响,amc的寄存器默认是最长的时序FFC2。我没加initcode烧写的文件也是这样。xml和initcode有什么区别啊?启动过程中对flash初始化在哪里做?

多谢!



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

1. aaa,554 是以8位模式操作flash的命令字,16位模式要使用555,2aa命令字。因为VDSP的驱动支持8位和16位两种模式,所以你看到他会使用. aaa,554

2. norflash中数据读取,不需要驱动,直接通过指针读取相应地址即可,但要求必须初始化EBIU的配置,才能通过仿真器查看到NofFlash中的数据。没有初始化EBIU,看到错误的数据属于正常。

xml文件是你在仿真时,编译代码时加载的一个初始化文件,当代码生成LDR后,所有的初始化数据都可以放在init_code文件中,不会使用xml中的配置。启动中,flash不需要初始化,当你通过BMODE开关配置为flash启动后,在片上的BootRoom中,会自动加载flash的驱动。

多次启动后板卡不能工作,更多的可能是SDRAM出错造成的,你可以尝试写一个LED点亮的代码,不使用SDRAM,看看是否有出错现象。




这家伙很懒,什么也没有留下!
等级:论坛版主 参考IP地址:*.*.*.*
2013/7/12 21:00:34
langbeimao(论坛新手)
langbeimao
头衔:社区公民
帮派:无帮无派
帖数:15
金钱:222
积分:18
注册时间:2011/11/25
2信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线

多谢andy!我用IO口输出方波,烧入flash,还是存在多次启动后不能工作的现象。SDRAM,确实存在问题,就是我设置cclk/sclk=400/100的时钟,对SDRAM进行遍历,会有些地址报错,数据不对,如果我降低频率,比如降到400/40,就可以跑,没有问题,这时候要是再改回高频率,遍历就正常了,没有错误。这种情况是引脚没有焊接好么?

我的SDRAM设置sclk=100MHZ,刷新0x306,配置0x025,参数设置是0xc0919989,twr=2,trcd=3,trp=3,tras=6,cl=2.   用的芯片是MT48LC32M16A2P, CL=2可以跑到100MHZ。


这家伙很懒,什么也没有留下!
等级:论坛新手 参考IP地址:*.*.*.*
2013/7/16 10:46:07
尊贵身份标志
andy(论坛版主)
andy
头衔:社区公民
帮派:无帮无派
帖数:2287
金钱:11132
积分:2263
注册时间:2011/6/8
3信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
通常高频下出错和制板和布线有关系,如果你的数据线上增加匹配电阻,可以尝试更换不同的阻值看看。
还有就是你的复位,最好采用复位芯片复位。如果是阻容复位,建议电阻47K以上。电容10uF以上

这家伙很懒,什么也没有留下!
等级:论坛版主 参考IP地址:*.*.*.*
2013/7/16 19:30:22
langbeimao(论坛新手)
langbeimao
头衔:社区公民
帮派:无帮无派
帖数:15
金钱:222
积分:18
注册时间:2011/11/25
4信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
多谢andy!

这家伙很懒,什么也没有留下!
等级:论坛新手 参考IP地址:*.*.*.*
2013/7/18 14:36:09
langbeimao(论坛新手)
langbeimao
头衔:社区公民
帮派:无帮无派
帖数:15
金钱:222
积分:18
注册时间:2011/11/25
5信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线

问题解决了,使用VDSP++自带的flash烧写驱动,工作正常了。

总结一下,启动几次就起不来了,很可能是烧写驱动的问题。

我之前设计的flash使用的是TOP boot的类型,烧写代码时发现与自带的驱动不符合,就修改了的flash driver的代码,后来发现启动总有问题,以为是芯片的问题,就改成了现在的bottom boot类型的flash,和adi的开发板上的一致,用修改了driver烧写代码,虽然烧进去了,还是出现启动几次就起不来的情况。在andy的指导下,对initcode代码的作用有了点了解,也查查了论坛里的帖子,修改了一下initcode里对sdram的设置,重新生成了initcode。尝试后,还是会出现启动不了的情况,无意间我找到了原始的flash driver文件,使用后就正常启动了。

现在看来,VDSP自带的烧写驱动虽然针对特定型号,但最好不要轻易修改。我对其代码结构没弄太清除就修改,导致源码丢失,自己写的又不稳定,板子工作不正常。以后还是要多来论坛上学习。

再次向andy表示感谢!



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

这家伙很懒,什么也没有留下!
等级:论坛版主 参考IP地址:*.*.*.*
2013/7/20 19:00:04
Powered by OpenADSP Copyright © 2010 www.Openadsp.com. All rights reserved.159299 Call, 1 Queries, Processed in 0.031250 second(s),