ADSP-BF531的SPI FLASH BOOT

 昨天写这篇文章写的差不多的时候,改了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选项卡,就可以进行编程了。
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
ADSP-BF531是一款由安富利(Analog Devices)公司生产的数字信号处理器(DSP)。要烧录ADSP-BF531,您需要以下步骤: 1. 准备烧录工具:您需要一个支持ADSP-BF531的烧录器。常见的烧录器包括ICE-1000、ICE-2000和USB-ICE等。 2. 准备烧录软件:您需要安装并配置适用于ADSP-BF531的烧录软件。安富利公司提供了VisualDSP++软件套件,其中包含了用于烧录和调试ADSP-BF531的工具。 3. 连接烧录器:将烧录器通过USB或JTAG接口连接到您的计算机。 4. 连接目标板:将烧录器通过JTAG接口连接到ADSP-BF531所在的目标板上。 5. 配置烧录软件:打开烧录软件,并根据软件的指导配置连接方式、目标板和目标设备等参数。 6. 选择程序文件:选择您要烧录到ADSP-BF531上的程序文件。这可以是编译后生成的可执行文件或者其他格式的固件文件。 7. 开始烧录:在烧录软件中点击开始烧录按钮,开始将程序文件烧录到ADSP-BF531芯片中。 8. 等待烧录完成:等待烧录过程完成,通常会有进度条或提示信息显示烧录进度。 9. 验证烧录结果:烧录完成后,您可以使用烧录软件提供的调试功能来验证程序是否正确烧录到了ADSP-BF531芯片中。 请注意,具体的烧录步骤可能会因为使用的烧录器和烧录软件而有所不同。建议您参考安富利公司提供的相关文档和指南,以确保正确地进行ADSP-BF531的烧录。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值