flash学习笔记
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了flash学习笔记相关的知识,希望对你有一定的参考价值。
最近升级FPGA程序遇到校验失败的问题,进一步接触了flash,升级的过程是上位机软件将hex文件通过usb发到RK3188,RK3188通过串口一帧一帧(每帧1kb的数据)地将数据发到fpga,由fpga最终将程序通过SPI写到flash中。升级失败,任何一个环节都可能出现问题,作为底层的fpga,承担起了查找问题的重担。
我们用到的fpga是ECP3-70,依据datasheet配备的是64M的flash,64KB一个扇区(block),64KB=64*1024=65536=10000。
擦除flash只能一个扇区一个扇区地进行,程序区所占用的内存大小是22.5M, 于是22.5M*1024*1024/8/1024/64=2D, 即flash里的程序区需要预留2E个扇区的空间,
上位机软件往下写参数到flash的时候,需要避开程序区,即偏移地址是2e0000+10000=2f0000.才不会将原有的程序区写坏。CRC校验的过程是将程序区里的数据都拿出来用CRC算法做校验。抓信号发现校验长度是2E0000, Flash里的起始地址是10000都没有问题。最终对比了2个版本的fpga程序,发现是升级时程序并没有写到flash里。换回以前的上位机软件和嵌入式程序,fpga就能够升级了,基本能够排除是FPGA的原因,问题还在进一步查找中。
以上是关于flash学习笔记的主要内容,如果未能解决你的问题,请参考以下文章