eMMC的FFU机制详细解释

本文详细描述了如何在eMMC设备上通过FFU机制更新固件,涉及EXT_CSD寄存器的检查、FFU模式的切换、命令参数设置以及MODE_OPERATION_CODES的角色。主机通过发送特定命令下载并安装新固件,确保流程的正确执行和中断处理。
摘要由CSDN通过智能技术生成

现场固件更新(FFU)

使用此机制,主机将新版本的固件下载到eMMC设备,并在成功下载后指示eMMC设备将新下载的固件安装到设备中。为了启动FFU进程,主机首先通过读取EXT_CSD中的SUPPORTED_MODES和FW_CONFIG字段来检查eMMC设备是否支持FFU功能。如果eMMC设备支持FFU功能,则主机可以启动FFU进程。FFU进程从切换到EXT_CSD中的MODE_CONFIG字段中的FFU模式开始。在FFU模式下,主机应使用封闭式或开放式命令(CMD17/CMD18/CMD24/CMD25)来下载新的固件并读取供应商的专有数据。在这种模式下,主机应该将这些命令的参数设置为在FFU_ARG字段中定义的参数。如果这些命令有不同的参数,则没有定义设备行为,并且FFU进程可能会失败。主机应该将块长度设置为DATA_SECTOR_SIZE。下载的固件包必须与DATA_SECTOR_SIZE大小对齐(可能需要该包的内部填充)

一旦进入FFU模式,主机就可以使用一个或多个写命令将新的固件包发送到设备。

主机可以通过将EXT_CSD中的MODE_CONFIG字段设置为正常状态,来恢复常规的写和读命令功能。退出FFU模式可能会中止固件下载操作。当切换到FFU模式时,主机应该检查FFU状态,通过读取扩展CSD中的NUMBER_OF_FW_SECTORS_CORRECTLY_PROGRAMMED来获得成功下载的扇区数量的指示。如果成功下载的扇区数为零,则主机应该从其第一个扇区重新开始下载新的固件捆绑包。如果成功下载的扇区数为正,则主机应继续从下一个扇区进行下载,这将恢复固件下载操作

如果设备支持MODE_OPERATION_CODES字段(在扩展CSD中的FFU_FEATURES字段中以SUPPORTED_MODE_OPERATION_CODES位定义),主机可以通过将MODE_OPERATION_CODES设置为FFU_ABORT来通知设备,FFU操作已中止固件下载过程。作为响应,设备应将NUMBER_OF_FW_SECTORS_CORRECTLY_PROGRAMMED字段设置为零,并准备好接收一个新的固件包。如果主机成功完成固件包下载到设备,它可以将MODE_OPERATION_CODES设置为FFU_INSTALL,设备应将NUMBER_OF_FW_SECTORS_CORRECTLY_PROGRAMMED字段设置为零,安装新的固件,并将MODE_CONFIG设置为正常状态,以重新获得读写命令的正常操作。主机应该将MODE_OPERATION_CODES设置为FFU_INSTALL。如果主机通过FFU进程执行CMD0/HW_Reset/Power循环,则在成功执行FFU_INSTALL命令之前,设备可能会中止下载进程。

如果设备不支持MODE_OPERATION_CODES字段,则主机将设置为正常状态,并启动CMD0/HW_Reset/Power循环来安装新的固件。在这种情况下,该设备不需要使用NUMBER_OF_FW_SECTORS_CORRECTLY_PROGRAMMED。在这两种情况下,在主机成功将新固件包下载到设备之前发生CMD0/HW_Reset/Power循环可能会导致固件下载过程中止。当在FFU_MODE中,主机发送其他不属于推荐流的命令时,设备行为可能未定义。

在eMMC(嵌入式多媒体卡)设备上启用固件字段更新(FFU,Firmware Field Update)功能时,主机可以通过读取EXT_CSD寄存器中的SUPPORTED_MODESFW_CONFIG字段来检查eMMC设备是否支持FFU功能。

为了读取EXT_CSD寄存器,主机通常发送一个标准的eMMC命令(SEND_EXT_CSD,即命令号8)来收集卡的扩展CSD寄存器信息。EXT_CSD寄存器是一个512字节的数据块,其中包含了大量关于卡性能和特性的信息。

通过这个命令,主机接收到的512字节的数据块会包括SUPPORTED_MODESFW_CONFIG两个字段,这些字段在EXT_CSD的具体位置依据 eMMC 规范的版本可能有所不同(通常在EXT_CSD的版本 4.5 或更高版本中引入了FFU支持)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值