Firmware update procedure for SkyHigh eMMC
Introduction
This article explains the procedure to update the SkyHigh eMMC's firmware, due to a problem that affects modules with this eMMC, in which the durability of the chip is reduced while using pSLC mode.
So, for customers using pSLC mode and expecting an increase of the module and memory's endurance with constant writing to the eMMC, it's recommended to follow this article steps and update the firmware.
This article complies with the typographic conventions.
Requirements
- Affected module with SkyHigh eMMC;
- Serial (exclusive) connection to Linux and bootloader terminal;
- USB stick, SD card or ethernet connection.
Affected modules
The next table shows the relation of the affected modules and PID8.
PID8 | Module |
---|---|
00271102 | Apalis iMX6Q 1GB V1.1C |
00271103 | Apalis iMX6Q 1GB V1.1D |
00271124 | Apalis iMX6Q 1GB V1.1Y |
00291102 | Apalis iMX6D 512MB V1.1C |
00391101 | Colibri iMX7D 1GB V1.1B |
00141101 | Colibri iMX6S 256MB V1.1B |
00141124 | Colibri iMX6S 256MB V1.1Y |
00151101 | Colibri iMX6DL 512MB V1.1B |
00151124 | Colibri iMX6DL 512MB V1.1Y |
Instructions
This firmware should only be applied to SkyHigh S40FC004C1B1C00010 and S40FC004C1B1C00310 eMMC devices featured on Toradex SoMs. Applying this firmware to any other device may cause issues, and is not supported neither by Toradex nor by SkyHigh.
In order to run the check tool, the module needs to be running linux kernel >= 5.4. If your build runs an older kernel, you can use the Toradex Easy Installer serial console. For instructions see Loading Toradex Easy Installer.
- Firmware update package downloaded from Toradex. Please contact us to get it.
- Extract the package and copy the contents to the module to be checked.
- Go to the folder where the tool was copied and run:
# ./checkandupdfware.sh
The script will check the current version of the firmware and update it if necessary. If the firmware needs to be updated, it will output:
Firmware needs to be updated
Updating Firmware
Single ioctl - pre-define Multiple block write
Start, chunk size 4096
PROGRAMMED 0 sectors==============
FFU status 0x0, 0x0
Programmed 4096/524288 bytes
PROGRAMMED 8 sectors==============
FFU status 0x0, 0x0
Programmed 8192/524288 bytes
PROGRAMMED 16 sectors==============
FFU status 0x0, 0x0
...
Programmed 507904/524288 bytes
PROGRAMMED 992 sectors==============
FFU status 0x0, 0x0
Programmed 512000/524288 bytes
PROGRAMMED 1000 sectors==============
FFU status 0x0, 0x0
Programmed 516096/524288 bytes
PROGRAMMED 1008 sectors==============
FFU status 0x0, 0x0
Programmed 520192/524288 bytes
PROGRAMMED 1016 sectors==============
FFU status 0x0, 0x0
Programmed 524288/524288 bytes
Programmed 524288/524288 bytes
Programming finished with status 0
FFU finished successfully, please reboot system
=================================================================================
= Power Cycle is needed after Firmware update, Software Reboot will not work =
= Run the script again after power cycle to check if the update was successful =
=================================================================================
After the power cycle or if the module is already updated, the script will output:
Checking Firmare before update
The firmware version is correct, no action required.