原创 ADSP-BF531的SPI FLASH BOOT

2008-8-2 15:20 3374 3 4 分类: 消费电子

http://www.123boke.com/trackback.asp?tbID=7&action=addtb&tbKey=8603d0d3091df8be3ccf906e365adb5d8c6e31a7


 





ADSP-BF531/532/533的SPI Flash Boot





文章来源:MSN博客 EE小站

昨天写这篇文章写的差不多的时候,改了Windows Explorer的文件夹选项,气愤的是IE居然也跟着刷新了,我写的还没有保存……今天重新来。

到昨天为止,我毕设的几个关键技术的研究,包括超声测距、无刷电机驱动、ARM+FPGA控制器和ARM Linux还有FPGA的驱动、嵌入式图像处理、无线通信模块(这个是我师弟做的)基本上都完事了。最麻烦的是图像处理这块,花了我老师1万多块钱,呵呵,我比较能造。板子做了2次,第一次3700元,4层PCB+摄像头的FPC,不好使;第二次6400元,4层PCB+摄像头的软硬结合FPC,终于好使。还有开发板、芯片什么的3000多,好在我们机器人所有钱哈哈。由于花钱太多,ADSP-BF531/532/533+CMOS摄像头嵌入式图像处理这块是不能写在这里了,如果有需要,可以和我们研究室联系(我要毕业了,但是研究室马上会申请专利,0451-86414462-22,李老师)。

今天要写的是嵌入式图像处理部分的最后10cm的工作,将程序写入SPI Flash,并且Boot。其实这个部分挺麻烦的,我看了很多资料,也没有成功Boot。感谢http://bbs.21ic.com上id为yqyte的这位大虾的帖子http://bbs.21ic.com/club/bbs/list.asp?boardid=51&t=2269103,帮助我越过了最后1cm的障碍。

开始正文。SPI Flash Boot是ADSP-BF531/532/533一个很好的功能,这可以大大减小电路板的体积。目前可以使用在BF531/532/533上的SPI Flash至少可以达到2M Bytes,对于一般的Linux系统来说也够了。但是SPI Flash的速度还是比较慢的,启动加载需要比较长的过程,这点需要注意。

要实现SPI Boot,你必须要看的文档有:ADSP-BF533 Blackfin? Processor Hardware Reference(3 OPERATING MODES AND STATES->Booting Methods和18 SYSTEM DESIGN->Booting the Processor),VisualDSP++ Help(Loader and Utilities Manual)。阅读了这些,加上yqyte大虾的帖子,基本上就知道怎么设计硬件和怎么SPI Boot了。但是,SPI Flash烧写驱动还是个问题,一般的开发板如果支持SPI Boot都会带有SPI烧写驱动;如果你和我一样买的是个劣质的便宜货,没有这个驱动也不要紧,我下面会介绍。

从头说起吧:
1. ADSP-BF531/532/533支持如下几种Boot方式:
A. 外部非同步存储器直接启动,启动地址0x20000000,要求管脚BMODE[1:0]为00
B. 外部非同步存储器启动,使用片上Loader,将外部非同步存储器中的程序加载到L1 Cache,启动地址0xFFA08000(BF533为0xFFA00000),要求管脚BMODE[1:0]为01
C. SPI Flash Slave模式启动,即可以使用别的CPU向ADSP-BF531/532/533输入程序,启动地址同B,要求管脚BMODE[1:0]为10
D. SPI Flash Master模式启动,使用片上Loader,将SPI Flash中的程序加载到L1 Cache,启动地址同B,要求管脚BMODE[1:0]为11

着重说下方式D,除了以上要求外,还必须注意的是:芯片0.3版本后可以支持8、16或24位寻址的SPI Flash,0.2及以前只支持8位和16位的;PF2管脚用于SPI_CS,MISO管脚必须上拉,0.2版本及以前需要将FP2管脚上拉;除了通用SPI Flash之外,ADSP-BF531/532/533还支持AT45DB041B、 AT45DB081B和AT45DB161B这些器件。另外,芯片内部的Boot ROM地址是0xEF000000,有兴趣的话可以去反汇编一下,看看它的工作原理。

2. Loader文件的生成
用仿真器调试程序的时候,生成的是可执行程序的映像(*.dxe),如果要进行Boot,就应该生成Loader文件。这需要对工程进行设置。

点击看大图

选择VisualDSP++的菜单Project->Project Options,出现如上图所示的窗口,在Type中选择Loader file。然后点击左边的Load,出现如下图所示的窗口。

点击看大图

选择Boot Mode为SPI,Boot Format为Intel Hex,然后一定要选择一个Initialization File(不选的话不能启动),这个Initialization File是需要编译的,一会儿说。再选择一个Output File即可。

3. Initialization file的编译
我也不知道这个Initialization file用来干什么的,呵呵,只是放上了好使。VisualDSP++提供了这个Initialization file的源代码,默认位置在C:\Program Files\Analog Devices\VisualDSP 4.5\Blackfin\ldr\init_code\ADSP-BF533 INIT CODE,这个Init code是给BF533用的,BF531需要修改。其实修改也很简单,就是2句话。
在Init_code.asm中,修改
#include <defBF533.h>为#include <defBF531.h>
在ADSP-BF533.ldf中,修改
PROGRAM  { TYPE(RAM) START(0xFFA00000) END(0xFFA07fff) WIDTH(8) } //L2为
PROGRAM  { TYPE(RAM) START(0xFFA08000) END(0xFFA0bfff) WIDTH(8) } //L2
然后进入菜单Project->Project Options,修改Processor为ADSP-BF531,重新编译,生成的DXE文件就是需要的Initialization file。

4. SPI Flash的烧写
有了Initialization file之后,重新编译工程,得到的LDR文件就是要烧写的文件。SPI Flash烧写需要:仿真器、VisualDSP++、烧写驱动。很遗憾,我不知道怎么用JTAG下载电缆烧写SPI,前文已经提到,如果你买的是合格的开发板,那么一定会提供SPI烧写的驱动。如果没有也没有关系,我在www.blackfin.org上找到了一个,地址是http://www.blackfin.org/tools.php?id=16。这个驱动是给BF533写的,要给BF531使用,同样需要修改。另外,这个驱动的开发环境是VisualDSP++3.5,其工程文件与4.5版本的似乎不兼容,需要删除SPIFlash.dpj重新建立一个,建立过程如下。

A. 建立一个新的工程
点击看大图

B. 选择处理器类型
点击看大图

C. 加入Startup Code/LDF
点击看大图

D. 选上你需要的支持,其实不选SDRAM支持也可以
点击看大图

E. 一路Next到Finish。
F. 在工程中加入SPIFlash.c、stflash.c。
G. 修改stflash.c
找到
#include <cdefBF533.h>
修改为
#include <cdefBF531.h>

找到
#define CLKIN 27    // CLKIN frequency is 27 MHz on the BF533 EZ-Kit
修改为
#define CLKIN 20    // CLKIN frequency is 20 MHz on the BF531
当然你的晶振是多少就写多少

重新编译,生成的DXE文件就是SPI Flash的驱动。

H. 加载驱动
加载驱动时,仿真器必须连接目标板。选择VisualDSP++的菜单Tools->Flash Programmer。出现以下窗口:

点击看大图

点击Browse选择刚才编译好的驱动文件,然后点击Load Driver。注意,此时SPI Flash必须已经与BF531相连接,否则会提示“Out of memory”。

点击看大图

点选Programming选项卡,就可以进行编程了。

就这些了。

文章评论1条评论)

登录后参与讨论

tengjingshu_112148725 2010-3-31 09:25

中国政府什么时候也跟进行动啊

用户1055165 2009-8-16 10:11

进行 H. 加载驱动 时, 一定要用仿真器吗? 我有个并口的JTAG, 用这个行吗?
相关推荐阅读
用户605797 2010-09-08 18:17
基于DMX512协议的灯光控制信号无线传输设计-下
基于DMX512协议的灯光控制信号无线传输设计时间:2009-08-17 12:34:07 来源:单片机与嵌入式系统 作者:梁艺,周卫星,陈炳锐 华南师范大学3.2 自定义通信数据格式    虽然CC...
用户605797 2010-09-08 18:16
基于DMX512协议的灯光控制信号无线传输设计-中
微控制器单元    本系统的微控制器采用了STC系列单片机STC12C5410。该单片机含有12 KB的Flash存储器、512字节RAM、异步串口(UART)和内部PLL单元等。内置的SPI总线控制...
用户605797 2010-09-08 18:15
基于DMX512协议的灯光控制信号无线传输设计-上
基于DMX512协议的灯光控制信号无线传输设计时间:2009-08-17 12:34:07 来源:单片机与嵌入式系统 作者:梁艺,周卫星,陈炳锐 华南师范大学引 言    随着数字化技术和计算机技术的...
用户605797 2010-09-08 18:12
DMX512协议
DMX512协议DMX512协议最先是由USITT(美国剧院技术协会)发展成为从控制台用标准数字接口控制调光器的方式。DMX512超越了模拟系统,但不能完全代替模拟系统。DMX512的简单性、可靠性(...
用户605797 2010-09-08 18:09
DMX512
DMX512电脑灯控制台使用说明书 <P align=center exactly? mso-line-height-rule: center; TEXT-ALIGN: 30pt; LINE-H...
用户605797 2009-08-09 23:21
CIF、DCIF、D1格式介绍
CIF、DCIF、D1格式介绍<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />CIF...
我要评论
1
3
关闭 站长推荐上一条 /2 下一条