在线升级之ICAP,ISP,BIN,HEX,MCS

这篇具有很好参考价值的文章主要介绍了在线升级之ICAP,ISP,BIN,HEX,MCS。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

       学到了ICAP,做做笔记。

        具体可参考:FPGA中ICAP原语的使用——Multiboot功能的实现_朽月的博客-CSDN博客

        ICAP是管理内部配置访问端口的原语,于是我学习的第一个原语。对于原语的概念简而言之就是类似IP核的存在,是既成的电路结构,但是不需要通过IP窗格来调用。


// ICAP_SPARTAN6 : In order to incorporate this function into the design,
//    Verilog    : the following instance declaration needs to be placed
//   instance    : in the body of the design code.  The instance name
//  declaration  : (ICAP_SPARTAN6_inst) and/or the port declarations within the
//     code      : parenthesis may be changed to properly reference and
//               : connect this function to the design.  All inputs
//               : and outputs must be connected.

//  <-----Cut code below this line---->

   // ICAP_SPARTAN6: Internal Configuration Access Port
   //                Spartan-6
   // Xilinx HDL Language Template, version 14.7

   ICAP_SPARTAN6 #(
      .DEVICE_ID(0'h4000093),     // Specifies the pre-programmed Device ID value
      .SIM_CFG_FILE_NAME("NONE")  // Specifies the Raw Bitstream (RBT) file to be parsed by the simulation
                                  // model
   )
   ICAP_SPARTAN6_inst (
      .BUSY(BUSY),   // 1-bit output: Busy/Ready output
      .O(O),         // 16-bit output: Configuartion data output bus
      .CE(CE),       // 1-bit input: Active-Low ICAP Enable input
      .CLK(CLK),     // 1-bit input: Clock input
      .I(I),         // 16-bit input: Configuration data input bus
      .WRITE(WRITE)  // 1-bit input: Read/Write control input
   );

   // End of ICAP_SPARTAN6_inst instantiation

        对于ICAP我们需要关注的几点有:

        DEVICE_ID设备ID,这和核心芯片的型号有关,翻找UG380可以取得对应信息;

        I:环境配置输入,写个状态机按顺序输入即可。

        WRITE:读写控制信号。

        其余的都有注释,输出信号也不用太关心,CE是使能,肯定要使能的吧。

其中配置需求如下:

在线升级之ICAP,ISP,BIN,HEX,MCS,FPGA学习,fpga

        FPGA上电时,自00_0000H地址加载BIOS程序,加载完成以后跳转自“自己设置的地址”。

*一般而言上电读取的便是BIOS程序,跳转地址则是产品工作的程序。

        上电BIOS程序需要具备对Flash的读写功能,以便对区域2的程序进行升级。

        若是均分地址,则跳转至01_0000H地址(Multboot start address)。

        若跳转不成功或读取BIN失败,则跳转至(Fallback start address)地址,如果设置为00_0000H也就是BIOS程序地址的话,类似于一次重启。

        Multboot start address:FPGA Flash配置完成后的跳转地址

        Fallback start address:读取BIN文件失败或跳转失败的时候的跳转地址。

        (结合我在网络升级与FLASH-CSDN博客)中的笔记:

        FPGA产品总是需要一个出厂程序的,也需要一个升级失败以后的选择,否则升级失败就没法继续升级,甚至变砖,岂不是非常不方便?Fallback start address便是提供了一个返回出厂程序或者重新进行升级的可能性。

        Fallback start address的具体填写需要仰仗Flash的容量决定,例如16MB的内存意味着2^4*2^20bit = 2^21byte=10_0000_0000_0000_0000_0000b=2_0_0_0_0_0h个地址,

        若是分为一半便是0~0_FFFFF和100000~1FFFFF两个区域。

        其中写入两个程序,则程序1的启动地址是00_0000,程序1的启动地址则是10_0000。

所以OPCODE+ADDR =

        (命令:例如读的0011B也就是03H)+(地址的高八位0000_0010B也就是01H)。

        0301 H = 0000_0010_0000_0001 B。

BIN文件和MCS文件

Xilinx Bit文件格式详解-腾讯云开发者社区-腾讯云 (tencent.com)

利用上位机程序结合已经通过JTAG烧入的BIT文件程序写进Flash中的是BIN文件。

整体Flash升级操作步骤:

        FPGA可以通过XILINX自带的工具烧写MCS到Flash里,也可以通过第三方软件烧写BIN进Flash里,当然XILINX工具也有这个功能,因为BIN是二进制文件,其内容是程序本身,而MCS文件则包含了其每一行在内存中的地址,HEX也包含了其的地址,所以在单片机中烧写的通常都是HEX文件,毕竟BIN文件没有包含的话就需要自行制定,依赖于工具支持。(烧写的时候也可以指定地址,工具一般会提供端口)。

        上电以后,如果我们需要通过工具向Flash里读写数据,首先我们需要通过JTAG的方式烧入Flash读写擦除程序,这是为FPGA提供一个能与第三方软件交互的桥梁。

        烧写完成,通过第三方软件将BIN文件烧入Flash中指定好的地址即可。

        这里为了模拟产品的运作,可以先行将“Flash读写擦除程序”的BIN格式烧入地址00_0000中,这样上电以后自动运作的便是这个“Flash读写擦除程序”,我们便可以通过串口的方式,将其他的程序通过这个程序来写入到Flash的其他地址,实现一个在线升级的工作。

        “Flash读写擦除程序”主要承担了一个什么角色呢?

        其需要能完成Flash操作的大部分必要指令,并且通过例化ICAP来完成一个地址跳转的操作。通过把这个程序的BIN烧入到FPGA内部,FPGA就能完成对Flash其他区域程序的更改等一系列功能了,断电以后也不会取消,并且通过这个程序,能够完成从这个Flash区域的程序到其他Flash区域的程序的一个切换,

        即“正常工作”情况下,FPGA会先加载这个程序在区域0,如果没有其他需求就跳转到正常工作的区域1,如果有其他需求就在满足要求的情况下对其他区域的程序进行修改,读失败或跳转失败就再跳回这个区域0,类似于把这个程序作为BIOS程序使用。

        上位机第三方软件又有什么用?

        为Flash读写擦除程序提供了一个写入地址,并且将本地的bin文件按照串口的方式发送;从而使Flash读写擦除程序能把这些数据写在合适的位置。

总结:网络升级需要:

        一个FLASH控制器,其需要完成FLASH读写擦除的功能,能够接收地址和数据包头,并且对指定的地址进行读写擦除。

        一个向FPGA发送相应指令和地址信息,并且把代码包打包发送的第三方程序。

        实际上,FLASH控制器会存储在FLASH中的地址1,通常是00_0000区域(根据FLASH的大小会有变化),在FPGA上电后,其会加载这部分程序,并且通过ICAP配置好的应用地址,跳转到作为产品的代码所存储的地址上,并且运行那部分代码。

        如果需要升级,则在满足FLASH控制器控制条件的情况下,通过其对指定的FLASH地址的数据进行读写擦除,第三方程序需要满足发送相应指令和地址信息,并且把代码包打包发送的功能,最好还要有读取FLASH信息,检查升级是否正确的功能。文章来源地址https://www.toymoban.com/news/detail-709225.html

到了这里,关于在线升级之ICAP,ISP,BIN,HEX,MCS的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 通过生成mcs、bin文件将程序固化到FPGA

    通过将程序固化到FPGA,可以做到断电不丢失程序,上电之后就自动启动程序的作用,整个固化步骤主要分为3步,一是修改约束文件,二是生成mcs或bin文件,三是将程序固化到开发板flash 生成固化文件之前,首先需要在约束文件内添加一段原语,添加这段原语的目的主要是为

    2024年01月17日
    浏览(41)
  • linux基础60——在线升级gcc

    1)安装scl源。SCL是Software Collections的缩写,收录了许多程序的新版本,例如gcc, PHP, git, python等。安装的软件可与旧版共存,包名多以rh-为前缀。 2)安装devtoolset。devtoolset是按照 Software Collections 的规范打出来的一套 rpm 包 3)devtoolset激活。 4)设置全局生效。

    2024年02月12日
    浏览(58)
  • STM32单片机实现固件在线升级(IAP)

    单片机的固件升级方式有很多种, 1、ICP:In Circuit Programing,简单说就是在单片机开发时使用烧录器升级程序,比如使用J-Link烧录单片机程序。 2、ISP:In System Programing,在单片机内部实现了基于通信接口(如串口、I2C、SPI等等)的FLASH引导程序,配合厂家提供的烧录软件工具

    2024年02月13日
    浏览(52)
  • stm32 在线升级程序 bost IAP程序 + app程序

    机器内 bootloader程序 启动默认程序 默认程序有 串口判断 是否收到 升级命令 收到升级命令后 接受串口发送过来的 更新程序 接受完成后 跳转到新程序位置开始执行 https://www.zhihu.com/people/lian-zhu-50 首先arm单片机控制程序运行是通过PC指针完成的,PC指到哪里,程序就运行到哪里

    2024年02月10日
    浏览(45)
  • 联想Newifi mini旗舰版v2.0小云固件怎么在线升级?

    智能路由器需要更多的软件支持才会变得智能,Newifi初期的应用软件确实太少了,一直没有感觉到有多智能。今天打开路由器看到有新版本更新,就进行了在线更新,注意若你的版本很低的话,需要一个版本一个版本更新,最终更新到最新版本,若需要一步到位,直接从最低

    2024年02月08日
    浏览(45)
  • ModStartCMS v6.3.0 电脑端在线充值,前端库升级

    ModStart 是一个基于 Laravel 模块化极速开发框架。模块市场拥有丰富的功能应用,支持后台一键快速安装,让开发者能快的实现业务功能开发。 系统完全开源,基于 Apache 2.0 开源协议,免费且不限制商业使用。 丰富的模块市场,后台一键快速安装 会员模块通用且完整,支持完

    2024年02月03日
    浏览(51)
  • 长虹智能电视ZLH66Gi机芯,强制刷机和在线升级刷机多种方法,附刷机升级数据

    1、USB强制刷机升级 第1步,将升级程序压缩包解压,将刷机文件upgrade ZLH66Gi V1.00xxx.bin拷贝到U盘根目录 第2步,在关机情况下,将U盘插入电视USB2.0 接口 第3步,用遥控器开机,连续按按键POWER键 (五轴中心),直到屏上显示升级界面 第4步,升级完成后电视会自动重启,等待完全

    2024年01月25日
    浏览(49)
  • STM32F1 IAP在线升级功能实现(使用串口)及心得

    公司产品要求,需要做一个能远程升级程序的功能,找了很多例程,大多都是需要按键来完成操作的,而我需要的是通过串口发送指令来完成,于是东拼西凑最后还是用了四天的时间勉强做出来 整个功能需要的程序是两个部分。一个是IAP程序,一个是APP程序。对于IAP程序和

    2024年02月10日
    浏览(57)
  • centos7 或者麒麟V10在线升级SSH为最新的9.2p1版本

    目录 1 升级原因 2 升级步骤 (以下所有步骤都以麒麟V10作为演示) 2.1 查看当前SSH版本 2.2  升级yum 源

    2024年02月05日
    浏览(71)
  • office365在win7上使用订阅+win7在线升级win10就用它(亲测有效)

    前言: 作为office365的重度使用用户,最近两天订阅到期,续订之后一直显示无法验证此订阅(仅查看),office365未经授权,大多数功能已停用,狂晕!!! 在微软官网上获知2020年1月14日起已不再提供office365对Windows7计算机的支持. 好吧,官方下载win10工具准备升级,下载地址

    2024年02月06日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包