908 | | * Gateworks standard product Venice boards with a manufacturing date of 2023-11-06 or more recent now have boot firmware that is programmed onto the eMMC boot0 hardware partition instead of the eMMC user hardware partition used prior to this date. The operating system is still programmed into the eMMC user hardware partition. Please contact Gateworks support with any questions. |
| 908 | * Gateworks standard product Venice boards with a manufacturing date of 2023-11-06 or more recent now have boot firmware that is programmed onto the eMMC boot0 hardware partition instead of the eMMC user hardware partition used prior to this date. The operating system is still programmed into the eMMC user hardware partition. |
| 909 | |
| 910 | eMMC FLASH devices have multiple 'hardware partitions' per the JEDEC specification. The 'boot0' and 'boot1' hardware partitions are smaller than the 'user' hardware partition and are intended to be used for boot firmware. Often, depending on the FLASH manufacturer specific details of the device, the boot0 and boot1 hardware partitions will also use single-bit memory cells vs multi-bit memory cells used on user and thus be more robust. The boot0 and boot1 hardware partitions are always fairly small in size compared to the 'user' hardware partition. |
| 911 | |
| 912 | Putting boot firmware on the boot0 or boot1 hardware partition provides the advantage of greater separation between your boot firmware and your OS. The IMX8M based Venice product family supports IMX8MM (mini), IMX8MP (plus), and IMX8MN (nano) SoC's which each require different binary incompatible boot firmware. By not having the boot firmware on the user hardware partition it allows distributing binary-compatible OS software (not including boot firmware) via a compressed disk image. |
| 913 | |
| 914 | For these reasons Gateworks Venice boards with a manufacturing date of 2023-11-06 or more recent have boot firmware that is programmed onto the eMMC boot0 hardware partition instead of the eMMC user hardware partition used prior to this date. This involves both programming the OS and boot firmware on the respective hardware partitions (user and boot0 respectively) as well as setting the partition config register such that the eMMC has boot0 active on power-up to boot from it. |
| 915 | |
| 916 | While Gateworks recommends using boot0 for boot firmware is is ultimately up to the user to decide but note that where you put the boot firmware depends both on the SoC as well as the hardware partition: |
| 917 | imx8mm user/boot0/boot1: 33K |
| 918 | imx8mp/imx8mn user: 32K |
| 919 | imx8mp/imx8mn boot0/boot1: 0K |
| 920 | |
| 921 | Modern Gatework boot firmware will determine what hardware partition the device booted from and set some env variables (bootpart and bootblk) that are used in the U-Boot ‘update_firmware’ boot script to make the firmware update process from U-Boot handle this. |
| 922 | |
| 923 | If you want to ‘change’ what hardware partition your board is booting from you need to program the boot firmware into the correct SoC-specific and partition-specific offset (above) as well as set the eMMC partition config register specifying what partition is active on power-up. This is easiest done by using the Gateworks JTAG adapter and programming method with a JTAG image as the image contains details such as what partition and offset to program the image to as well as how to configure the partition configuration. So if you run into trouble by setting the partition configuration register wrong or by putting the boot firmware in the wrong place the easiest recovery is to flash the latest Gateworks boot firmware (see https://dev.gateworks.com/venice/images/). |
| 924 | |
| 925 | The implications of this change are that it could change the firmware image you provide to Gateworks if you have a Gateworks special or custom build where we flash your custom firmware onto the boards. When providing Gateworks with firmware images for custom and special builds where we program on customer firmware it is important to provide one of the following to us: |
| 926 | - A compressed disk image intended for the eMMC user hardware partition that has both your boot firmware as well as your OS firmware indicating the eMMC will boot from user. In this case the test fixture will configure the eMMC to boot from user |
| 927 | - A JTAG binary image containing your boot firmware, the boot partition configuration (the –partconf argument to mkimage_jtag), and OS firmware |
| 928 | - A JTAG binary image containing your boot firmware and partition config as well as a compressed disk image to be installed on user |
| 929 | |
| 930 | Modern versions of the Venice U-Boot bootloader will tell you what hardware partition the board is booting from via the ‘Trying to boot from eMMC boot0’ message displayed early in boot by the SPL (in this case indicating boot0 is used). |
| 931 | |
| 932 | For details on determining the boot partition and changing it please see: |
| 933 | https://trac.gateworks.com/wiki/venice/boot#eMMCbootpartition |
| 934 | |
| 935 | |
| 936 | For more information on eMMC and hardware partitions see: |
| 937 | https://trac.gateworks.com/wiki/MMC#emmc |
| 938 | |
| 939 | |
| 940 | Please contact Gateworks support with any questions. |