赞
踩
同以前单片机在线升级的做法一样,本质就是通信+Flash操作+跳转。只是FPGA对应的操作与单片机相比稍微复杂一点。
我使用的是UDP有线传输,
规划Flash芯片的区域,一般bootloader放在起始位置,APP放在bootloader之后的空白区域。
以M25P80芯片为例:
使用一个芯片,要仔细拜读官方提供的芯片手册。
基本参数如下:
以下两种SPI模式之一运行:
本驱动采用的方式是CPOL=1,CPHA=1(CPOL=1时钟空闲是高电平,CPHA=1偶数边沿数据采样,奇数边沿数据更新)
使用时要关注各个操作需要的时间:
各操作命令号:
各个扇区的地址如下:
单个扇区擦除流程:
注:扇区擦除指令+扇区内的任意一个地址即可擦除全部扇区内容
我使用的是页编程。
一次写一页(256字节),手册上:超出本页的数据会从本页的起始地址开始写入,先写的数据会被覆盖(例如:本页地址0~255,如果从200地址写入57个字节的数据,那个第56、57个字节的数据会分别被写到地址0、1)
页编程流程:
在ISE14.7的这里,可以找到ICAP原语的代码,原语是赛灵思内置的操作,类似Flash芯片的操作指令一般,使用时直接实例化即可。
起始地址要保证和Flash驱动以及Multboot文件一致:
要注意手册上说了数据需要以下处理:
BIN是纯二进制文件,MCS是ASCII格式的文本文件。
MCS是Intel早期为MCS系列 II ISIS-II 系统 代码固化存储指定的文件格式,成为了普遍遵循的标准,Xilinx 的MCS文件也一样,格式大体如下,文件由行组成,每一行由6部分组成:
MCS文件本质就是hex文件,将后缀名改成hex后用nootpad打开,黑色的数据部分即是要发送给FPGA的程序。
Bit文件相对多一个文件头。可以通过16进制打开的方式,将文件头去除,然后两个文件就会一致。
bit文件去掉开头的109个字节后,与MCS文件一致。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。