问题描述:
个人在用fpga主控板使用verliog写完flash驱动后,且经过时序验证是正确的符合flash手册要求的,接下来要进行flash内容验证结果是否正确。验证过程使用了淘宝买的一个flash读写器来通过flash引脚读取内容。在fpga中烧写驱动程序,完成擦除写入操作,且给板子重新上电后,发现我写入flash地址为首地址24'h0开始,写入数据为16'h24时,flash读出的数据却为下图所示:
其数据存储位置明显不对,且数据并非理想写入数据,细节发现其8'h48(0100_1000)与8'h24(0010_0100)的关系是被偏移了一位,也就是说整体写入数据被偏移了一位。当我以为这是偶然现象要重新读取时,惊讶的发现,其数据存储位置两次读取不一致,读取内容为下图:
经过多次读取发现,基本上地址都会变动,但其校验和并没有变化,当我以为是flash驱动时序出现问题的时候,回头重新验证检查了一遍驱动程序,发现时序并没有问题,并符合芯片手册标准,当我实验通过自己写的驱动程序,自己写自己读发现,其数据是对的!且很稳定。这让我深感疑惑,怀疑到底是驱动程序写入地址有误,还是某个时序过程出现错误,甚至怀疑是否是flash烧写器损坏,其中某个原因导致了这个现象,还是其他原因。
经过不断的各种方面测试,在一次偶然间的测试中出现了正确的读取结果,发现了导致该现象的最终答案。
关键字: flash驱动
;flash读写器
;内容错误
;地址错误
;
解决方案:
在一次flash读写器读取测试中,给板子断电后,忘了给它重新上电了,于是在flash搭载的主控板断电的情况下,对flash芯片进行了读取操作,惊讶的发现其数据对了!且地址正确,数据正确。一看该测试与之前的主要区别是主控板未上电,于是突然想到,在硬件工作原理上,flash读写器对flash芯片的每个引脚都给予了规定的电平,而主控板在设计上默认为flash芯片给予了部分引脚的上拉和接地,当主控板上电时,进行flash读写器读取操作会导致flash芯片的部分引脚接受了两个方向的电平驱动与干扰,从而导致flash读写器读出的数据会出现数据错乱、地址错乱、部分指令可能无法正常运行等现象。
结果验证:
在这种想法下,又经过了几轮测试发现,都完全正确!当写入地址为首地址24'h0,数据为16'h24时,其读取内容如下(以上测试均为页写页读):
问题反思:
果然,当硬件操作手法或者是硬件出现错误的时候,让软件部分无论怎么改,都很难找出正确解决方案(因为无论怎么看输出时序和逻辑都没有任何问题)。所以后面考虑问题时当同时具有软硬件两方面操作使用的时候,要多多考虑问题出现角度,从硬件角度和软件角度两方面出发。
真棒!
暂无点赞
真好呢
暂无点赞
真好呢
暂无点赞
《好好聊聊》大陆综艺高清在线免费观看:https://www.jgz518.com/xingkong/130858.html
暂无点赞
《灵魂停留》恐怖片高清在线免费观看:https://www.jgz518.com/xingkong/31234.html
暂无点赞
《音乐永不停歇》剧情片高清在线免费观看:https://www.jgz518.com/xingkong/58290.html
暂无点赞
《黑暗中的十个女人》日本剧高清在线免费观看:https://www.jgz518.com/xingkong/156137.html
暂无点赞
哈哈哈,写的太好了https://www.lawjida.com/
暂无点赞
作者的布局谋篇匠心独运,让读者在阅读中享受到了思维的乐趣。
暂无点赞
全球视野与本土实践结合恰到好处。
暂无点赞
作者以非凡的视角解读平凡,让文字焕发出别样的光彩。
暂无点赞
部分语句稍显冗长,可精简以增强节奏感。
暂无点赞
这篇文章如同一幅色彩斑斓的画卷,每一笔都充满了独特的创意。
暂无点赞