ADV212图像压缩芯片调试记录一

项目场景:

        最近两个月在调试ADV212芯片,目的是在FPGA平台上采用该芯片实现对图像数据压缩功能。不得不说,这款芯片是我目前遇到的调试起来“较为”复杂的一款芯片了,光芯片手册就有六部分(1. ADV212;2. ADV202_HIPI_mode;3. ADV212_UserGuide;4. ADV212 ProgrammingGuide;5. HIPI_mode_overview;6. TechNote_ADV202_output_format)。。。由于身边同事都没用过这一款芯片,我也算是完全靠自己在调试了。调试过程中,主要参考芯片手册、ADI官网相关资料以及相关论文,目前已经实现基本的压缩功能。期间遇到了几个棘手问题,在这整理一下。


问题描述一

固件加载不成功

        ADV212这款芯片不管是工作在编码模式还是解码模式,都需要加载相应的编/解码固件(一种后缀为sea,大小为32KB的文件)。由于我做的这个项目是完全通过FPGA来操作该芯片,所以我想到的最直接的固件加载方式就是:将sea文件内容全部读出 --> 保存为coe格式文件 --> 通过vivado软件将coe文件配置到FPGA的RAM中 --> 从RAM中逐个将32bits数据读出并写入压缩芯片相关间接存储空间

        想法是完全可行的,但是当我按照芯片手册对ADV212编码模式相关寄存器完成配置,并将固件写入芯片之后,发现固件没有加载成功(读取SWFLAG寄存器,得到的不是0xff82)。。。


原因分析:

  • 对于ADV212编码寄存器的配置虽然比较复杂,但是我的确是按照芯片手册上一步步来的;
  • 固件的写入方式是最有可能出问题的(这是重点)。

解决方案:

        为了解决这一问题,我从两个方面入手:一是检查对所有ADV212寄存器的配置,确保对所有寄存器都正确的完成了配置。二是检查固件是否正确写入到芯片的间接存储空间中。检查方式就是将所有寄存器的值,以及固件存储空间地址下的数据读取出来,确保都写入正确。

        令人绝望的是读取出来以后通过对比发现,都写入正确了!最后实在一筹莫展,去了ADI官网查了一下,还真的有很多人和我一样卡在这个环节。看了一下官方给的答复,发现了这么一个字眼:”大小端存储模式“!!!

        原来ADV212这个芯片的存储是按照大端模式,而我们用的电脑是小端存储模式。按照我的操作方式,固件肯定是无法正确加载的。把固件中每个32bits数据按照大端模式重新写入ADV212存储空间后,果然能够正确加载了~

总结 :

        芯片调试过程中遇到问题之后,最可靠的解决途径还是通过仔细查阅官方给的芯片手册以及官网上搜索相关问题的解决方案,网上搜到的相关论文反而会比较坑。

​"FPGA Zone" 专注 FPGA 知识学习与工程应用,欢迎 FPGA 爱好者关注公众号,领取 200G+ FPGA 相关学习资料!

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值