访问绑定于处理器的SPI 总线Flash存储器
NanoBoard NB2和3000系列开发板都具有基于SPI总线的FLASH存储器,它能把你的设计编程进去用于导入目的---当板子上电的时候把保存的设计下载到用户 FPGA中。把你的设计放进FLASH存储器是小事一桩,因为Altium Designer为存储器的擦除、编程和下载验证提供了一个直观的接口。
在NanoBoard开发板上使用基于SPI的 FLASH存储器并不困难,因为在板子的适当位置具有SPI通讯(线路),这使得它能够很容易的"看到"并且和主控制器FPGA(NanoTalk 控制器)上的器件进行"交互"。然而,当我们面对你自己的开发/生产板上面的原始硬件系统的时候,它上面并没有NanoTalk控制器来"铺就"一条通往 SPI FLASH存储器件的道路。因此,当你不必在自己的板子上永久建立一个类似于NanoTalk系统的情况下,你如何到达这些FLASH器件呢?
Altium Designer已经支持在设计中向一块隶属于处理器的并行FLASH存储器写入的功能。对于Release 10,这个特别的功能被延伸到也可以对一个基于SPI总线的FLASH 存储器进行编程了。这就使得你的硬件系统具有boot导入的能力,并保证这种能力以一种最新的和直观的方式来完成---所有这些都通过Altium Designer一体化环境。
这个功能目前仅支持TSK 3000 和Nios Ⅱ 32位处理器。
FLASH 存储器访问控制在和你设计中隶属于处理器的FLASH存储器件进行通讯之前,请确保FPGA设计已经被下载到你板子上的目标FPGA物理器件中,并且嵌入式代码正在处理器之中运行。
右键点击处理器按钮并且选择"Write To Flash"命令就可以实现和FLASH存储器件的交互。这个命令可以访问FLASH存储控制器对话框,里面提供了所有必须的控制来擦除和编程FLASH存储器。
FLASH 信息
对话框的这个区域用于指定你希望写入的FLASH存储器件。信息基于处理器的地址空间里与之相连的外围设备而自动显示。如果有超过一个的SPIFLASH 存储器件与处理器相连,或者既有SPIFLASH 也有并行FLASH器件与之相连,则使用下拉区域选择相应的器件。
编程器目前只支持M25Px0系列FLASH 存储器件。如果嵌入式软件工程的软件平台文件包含一个SPI 控制器(bootloader)的话,只有这种串行FLASH 存储器件才会出现在对话框中。并且SPI bootloader元件应该在OpenBus/原理图文件中进行配置,选项Enable SPI Controller for processor application 应使能,选项Connectto SPI Memory via NanoBoard multiplexer不 被使能。如果存储器是通过NanoBoard 的SPI多路复用器连接的,它就可以通过NanoBoard控制器上的嵌入式FLASH按钮工具来非常快速的编程写入。在Device View界面中,右键点击NanoBoard就可以打开工具栏并选择Instrument……
擦除FLASH存储器
装载必须的程序文件、嵌入式软件文件、或者*.bin文件进FLASH存储器之前,存储器必须首先被清空。擦除整个FLASH存储器,请在对话框的Erase Flash区域按下Erase Entire Device按钮。
控制器也可以擦除一个存储器的特定的扇区或者地址区间。使用有效区域来指定一个范围的开始和结束点,然后点击相应的Erase Sector Range或者Erase Address Range按钮即可。
当擦除FLASH存储器的专用地址空间时,你也可以选择保存相应数据。
在每个案例中,都要进行擦除,其进度条显示在对话框的底部区域。
为了验证存储器是否被成功擦除,请点击对话框中Utility区域的Blank Check按钮。你可以随意的指定一个扇区来检查。
下载到FLASH 存储器
当把一个事先构建过的设计装载到你板子上的目标FPGA的时候,SPI FLASH 存储器用于容纳FPGA程序文件。对于一个不包含保存在外部存储器的代码的简单设计来说,这个文件就是所有即将被写进FLASH存储器的程序。一旦上 电,FPGA程序文件将自动下载到目标FPGA(芯片),同时嵌入式代码伴随着该文件一起下载并放置进FPGA的RAM块中。
对于一个应用了保存在外部存储器的代码的设计来说,相应的嵌入式应用代码(Hex文件--*.hex)必须也被编程写进FLASH存储器中。这种情况下,二进制文件和Hex文件将被合并成一个.bin文件。一旦上电,FPGA程序文件 将被自动下载到目标FPGA(芯片)。嵌入式应用代码将会怎样(运行)取决于你的设计中处理器所使用的存储器的类型和 位置。
- 内部存储器使用---代码作为二进制文件的一部分下载到目标FPGA(被放置在内部RAM块中)。
- 外部存储器使用---代码需要被装载进目标FPGA可以访问的独立的SRAM中。
在后者的情况下,你的设计中需要有一个FLASHSPI Bootloader元件(WB_BOOTLOADER_V2)来完成。这个元件在FLASH存储器和SRAM之间提供了一个接口。假如这个器件的导入操 作被使能(设置它的ENABLE引脚高电平),一旦设计被装载进目标FPGA(或者在已经装载的情况下触发一个外部复位),嵌入式应用代码--保存在FLASH存储器的Hex文件--将被拷贝进SRAM。
设计中使用的处理器必须至少有4kB的内部存储器。
一旦FLASH存储器被擦除,FPGA程序文件和/或嵌入式软件文件,(或者.bin文件)就可以下载进去。下载控制均可以在对话框的WriteFlash区域完成。
从本质上来说,有两种下载方法:
- 下载当前工程---这将下载当前嵌入式工程的代码文件。二进制文件流将从FLASH器件的基础地址开始编程写入。
- 下载文件--浏览,并且指定一个具体文件,比如一个嵌入式代码文件(Hex文件-*.hex)。你可以指定目标存储器从哪里开始写入。
完成后欲手工验证下载,请点击Verify against Flash按钮。
学习了哈~~~~