eMMC Firmware Upgrade

来源:互联网 发布:图片文字编辑器软件 编辑:程序博客网 时间:2024/05/18 07:20

问题由来:之前做过的一款Android手机,在系统启动或者运行过程中,会造成死机的问题;经过大量的测试,发现这是eMMC Firmware的一个bug,但是此时,已经有一大批机器出货,所以解决方案也只能通过Offline eMMC firmware更新来解决。

方案选择:Offline eMMC firmware更新,是指eMMC chip已经安装到PCBA板上,这时更新,只有通过SDIO interface来更新;当时考虑在2个地方开始做更新的动作,一是bootloader, 二是Linux Kernel中eMMC初始化的地方。通过比较,最后选择了方案二。

eMMC Firmware更新的主要步骤

1. 向eMMC controller写入eMMC Firmware更新的密码,默认情况下,eMMC Firmware是不允许更新的。

    1.1, make sure it entered transfer state

    1.2 write the "mmc FW update password" to controller

    1.3, read back and check the FW update response

2. 向eMMC controller写入eMMCFirmware内容。

    2.1, program the Toshiba mmc FW

    2.2, read back the Toshiba mmc FW

3. Assert CMD0, 使eMMC进入idle状态。

4. 重启device。

示例代码路径如下,

/drivers/mmc/core/mmc_ops.c

可以在 mmc_init_card()函数内,开始check eMMC Firmware version, 并决定是否进行Firmware更新。

Firmware更新的函数是“toshiba_mmc_fw_update”。

用到的CMD及其含义,


主要示例代码如下,




    

0 0