首页 > 其他 > 详细

flash学习笔记

时间:2017-09-30 15:48:27      阅读:231      评论:0      收藏:0      [点我收藏+]

        最近升级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学习笔记

原文:http://www.cnblogs.com/asery/p/7615121.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!