关于eMMC的FFU操作流程详细整理版

FFU操作流程

1、FFU在开始之前,主机首先要检查eMMC设备是否支持FFU兼容性,通过读取EXT_CSD寄存器的SUPPORTED_MODESFW_CONFIG,如果支持FFU功能,即可开始FFU流程。

2、FFU操作的开始,用户需要通过切换EXT_CSD寄存器中的MODE_CONFIG字段的值将emmc切换到FFU模式。

3、在FFU模式中,主机会用CMD17/CMD18/CMD24/CMD25,下载新的firmware并且读取供应商专有数据,在此模式下,主机应该将这些命令的参数设置为与FFU_ARG字段中的一致。如果这些命令有不同的参数,则设备行为没有定义,emmc会有不确定的动作,FFU进程可能会失败。

4、用户需要设置块长度为DATA_SECTOR_SIZE。下载的FW文件包(固件包)必须与DATA_SECTOR_SIZE保持对齐(有必要时可以文件内部填充数据)。

5、一旦进入FFU模式,用户可以使用一次或多次命令向emmc发送固件文件包;可以设置EXT_CSD寄存器中的MODE_CONFIG字段的值将emmc恢复到常规的读写命令功能,并回到正常状态;切出FFU模式会终止固件文件包传输。

6、当改回到FFU模式后,用户必须检查FFU状态,通过读取EXT_CSD寄存器中的NUMBER_OF_FW_SECTORS_CORRECTLY_PROGRAMMED字段获取成功传输的sectors数目,确定是否下载成功。如果得到的扇区数为0,则重新启动下载,如果得到的扇区数不为0,则从下一个扇区继续下载。

7、如果设备支持MODE_OPERATION_CODES,用户可以通过将MODE_OPERATION_CODES设置为FFU_ABORT来终止固件传输,并通知emmc FFU过程停止。emmc应把NUMBER_OF_FW_SECTORS_CORRECTLY_PROGRAMMED设置为0,并准备接受新的固件文件包。

8、作为响应,emmc应把NUMBER_OF_FW_SECTORS_CORRECTLY_PROGRAMMED设置为0,并准备接受新的固件文件包。如果已经成功将固件文件包传输给了emmc,用户可以设置MODE_OPERATION_CODESFFU_INSTALL,emmc会相应设置NUMBER_OF_FW_SECTORS_CORRECTLY_PROGRAMMED为0,然后安装新的固件,设置EXT_CSD寄存器中的MODE_CONFIG为正常模式。

9、如果在执行FFU_INSTALL安装命令之前,用户存在CMD0,HW_Reset,Power Cycle等动作,设备将终止下载进程。

10、如果设备不支持MODE_OPERATION_CODES,用户设置EXT_CSD寄存器中的MODE_CONFIG为正常模式,启动CMD0/HW_Reset/Power Cycle安装新的固件。这种情况设备不需要使用NUMBER_OF_FW_SECTORS_CORRECTLY_PROGRAMMED

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值