当前位置:   article > 正文

FPGA BPI FLSAH远程升级Quick boot_xapp1081

xapp1081

实际项目过程中很多时候产品定型之后是不能通过JTAG进行程序升级的,往往只能选择远程升级在线进行程序更新,Xilinx官方推荐的升级方式有multi boot及quick boot,具体可以参考
xapp10812文档,当然如果项目中选择BPI FLASH,可以直接通过借助MCU控制BPI的高位地址,强行将FLASH进行空间划分,通过切换高位地址,从而达到不同片区的效果,但是这种方式需要借助其他的主控MCU芯片才可以完成远程升级。
xilinx介绍的的quick是不借助外界芯片,直接在线更新程序,原理是将FLASH中的数据划分为golden 和update区域,通过关键字进行跳转
在这里插入图片描述
官方例程提供的DEMO只是针对他们特定指定的两款芯片,如果刚好设计硬件是它们 那就直接可以用,当然需要增加上层的数据接口,如果不是指定的芯片,需要将底层读写函数重新实现,我这里选择的是S29GL01GS11DHIV10,所以官方的东西都需要修改,具体可以参考手册说明
最后程序接口

在这里插入代码片
entity BpiFlashProgrammer is
  port
  (
    -- Clock and control signals
    inClk               : in  std_logic;
    clk_osc_100m               : in  std_logic;
    inReset_EnableB     : in  std_logic;
    inCheckIdOnly       : in  std_logic;
    inVerifyOnly        : in  std_logic;

    -- Data
    inData32            : in  std_logic_vector(15 downto 0);
    outFifoRd_en        : out std_logic;
    inFifoData_count    : in std_logic_vector(11 downto 0);
  


    -- Status signals
    outReady_BusyB      : out std_logic;
    outDone             : out std_logic;
    outError            : out std_logic;
    outErrorIdcode      : out std_logic;
    outErrorErase       : out std_logic;
    outErrorProgram     : out std_logic;
    outErrorCrc         : out std_logic;
    outErrorBlockLocked : out std_logic;
    outErrorVPP         : out std_logic;
    outErrorCmdSequence : out std_logic;
    outErrorTimeOut     : out std_logic;
    outStarted          : out std_logic;
    outInitializeOK     : out std_logic;
    outCheckIdOK        : out std_logic;
    outEraseSwitchWordOK: out std_logic;
    outEraseOK          : out std_logic;
    outProgramOK        : out std_logic;
    outVerifyOK         : out std_logic;
    outProgramSwitchWordOK: out std_logic;

    -- Signals for BPI flash
    -- Change outAddress32 width to your BPI flash address width
    outAddress32        : out std_logic_vector(31 downto 0);
    inoutData16         : inout std_logic_vector(15 downto 0);
    outFCSB             : out std_logic;
    outFOEB             : out std_logic;
    outFWEB             : out std_logic;
    outFWPB             : out std_logic
  );
end BpiFlashProgrammer;
`

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51

``通过串口或者网络将MCU文件下发到FPGA进行读写FLASH完成远程更新

调试过程中,为了验证FLASH读写成功与否,可以通过VIVADO直接回读FLASH里的数据进行验证:
![在这里插入图片描述](https://img-blog.csdnimg.cn/b576342570fd47a990f10aa154ac4d0a.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA55-l6Iqv55S15a2Q56eR5oqA,size_20,color_FFFFFF,t_70,g_se,x_16
在这里插入图片描述
在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/木道寻08/article/detail/964356
推荐阅读
相关标签
  

闽ICP备14008679号