dtcms 模板下载 npm安装 作用域 makefile reactjs joomla linktosql axios GMU pmp培训视频 seo计费系统 js获取月份 java解析json数组 hash怎么下载 mysql重启 python正则提取字符串 python安装mysql python中items python开发环境 python环境安装教程 python简易教程 python字符串匹配 python中集合 java时间类 java方法调用 python视频教程 怪物猎人ol捏脸数据 java程序设计基础 键盘模拟器 海妖花粉哪里多 stretchcolumns 电子商城系统 一键隐藏 蜘蛛皮肤 dos系统下载 虚拟声卡驱动 网络电子书 保卫萝卜沙漠7攻略 qq制作网页 ps平面广告设计教程
当前位置: 首页 > 学习教程  > 编程语言

Firmware Update Process

2020/12/28 19:04:47 文章标签:

目录通过reset 激活firmware 更新的过程不通过reset 激活firmware更新的过程通过reset 激活firmware 更新的过程 host发Firmware Image Download命令来将固件映像下载至控制器。固件映像(firmware image)可能有多个部分要下载,所以&#xff…

目录

        • 通过reset 激活firmware 更新的过程
        • 不通过reset 激活firmware更新的过程

通过reset 激活firmware 更新的过程

  1. host发Firmware Image Download命令来将固件映像下载至控制器。固件映像(firmware image)可能有多个部分要下载,所以,要下载的固件映像的每一个部分的Offset 都应在Firmware Image Download中指定,Firmware Image Download命令里提供的数据需要符合Identify Controller 数据结构中指定的Firmware Update Granularity,否则,更新可能失败。
  2. 在固件下载到控制器之后,下一步是host提交Firmware Commit 命令。Firmware Commit会验证上次Download的固件映像是否有效,并将该映像提交到指定的Firm Slot以便后面使用。Offset 不是从0开始,含有空隙或者重叠Offset的固件映像视为无效。控制器可以额外采用其他vendor指定的方式(如校验和,CRC,密码哈希或数字签名)来确定固件映像的有效性:
    a. Firmware Commit命令还可以用于激活与先前提交的Firmware Slot关联的固件映像。
  3. 最后一步是reset,然后激活”Firmware Commit”命令中”特定Firm Slot”字段里的固件映像。Reset 可以是The reset may be an NVM Subsystem Reset, Conventional Reset, Function Level Reset, or Controller Reset (CC.EN 从 ‘1’ 置为 ‘0’):
    a. 在某些情况下,需要Conventional Reset 或 NVM Subsystem Reset才能激活固件映像。这种会在”Firmware Commit“中特定状态指示(NVME1.4 5.11.1)。
  4. Reset 完成后,host软件将重新初始化控制器。这包括重新分配I/O Submission Queues和Completion Queues. NVME1.4 7.6.1

不通过reset 激活firmware更新的过程

  1. host发Firmware Image Download命令来将固件映像下载至控制器。固件映像可能有多个部分要下载,所以,要下载的固件映像的每一个部分的Offset 都应在Firmware Image Download中指定,Firmware Image Download命令里提供的数据需要符合Identify Controller 数据结构中指定的Firmware Update Granularity,否则,更新可能失败。
  2. host 通过CA(Commit Action) = 011b提交Firmware Commit命令,这样就会立即激活映像而无需reset。Download的映像应替换原firmware slot中的映像。如果自上次reset或firmware commit命令以后(即跳过第一步)没有下载映像,那么控制器会验证并激活指定slot中有的映像。如果控制器开始激活固件,在启用 Firmware Activation Notices情况下,收新固件影响的任何控制器都会向host发送Firmware Activation Starting异步事件(参照NVME1.4 Figure 287):
    a. Firmware Commit命令还可以用于激活与先前提交的Firmware Slot关联的固件映像。
  3. 控制器完成Firmware Commit命令。在某些错误情况下,将采取以下措施:
    a. 如果固件映像无效,那么控制器报告适当的错误(如:Invalid Firmware Image);
    b. 如果由于需要Controller Level Reset 来激活导致固件激活失败,那么控制器会报Firmware Activation Requires Controller Level Reset的错误,并且映像会在下次Controller Level Reset时应用。
    c. 如果由于需要NVM Subsystem Reset来激活导致固件激活失败,则控制器会报Firmware Activation Requires NVM Subsystem Reset的错误,并且映像将在下一次NVM Subsystem Reset时应用;
    d. 如果由于需要Conventional Reset来激活导致固件激活失败,则控制器会报Firmware Activation Requires Conventional Reset的错误,并且映像将在下一次Conventional Reset时应用;
    e. 如果由于固件激活时间超过“Identify Controller”数据结构中的MTFA值而导致固件激活失败,则控制器将报Firmware Activation Requires Maximum Time Violation的错误。在这种情况下,要激活固件,需要重新发出“Firmware Commit”命令,并使用reset来激活。

如果在提交Firmware Commit命令之后且在该命令完成之前,控制器转到D3cold状态(参阅PCI Express Base Specification4.0),若Firmware Commit命令已经提交,或该固件映像已经被激活,控制器可以继续固件激活操作。

如果无法成功加载固件,则控制器应恢复到最近激活的firmware slot中存在的固件映像或基准只读固件映像(如果有),并将失败记录为一个异步事件:Firmware Image Load Error。

如果host覆盖(即更新)已激活的firmware slot中的固件,则先前激活的固件映像可能不再可用。结果是,需要使用该firmware slot的任何动作(如,控制器重启)都可以使用该firmware slot中当前的固件映像。

host软件不应同时更新多个固件映像。下载映像后,host软件会发出Firmware Commit命令,然后再下载其他固件映像。 上一次做了FW download + commit (FW1), 这次再执行FW download (FW2), 那么FW2会覆盖FW1, 等接下来发 commit命令的时候,激活的是FW2而不是FW1. 在download和commit之间来了reset,控制器会清理掉之前download进来的映像。


本文链接: http://www.dtmao.cc/news_show_550144.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?