We built a custom board with the IMX6 solo processor. We find an odd behavior in the newly ordered IMX6 processors where the fuse bits are already blown out. We find the value of CFG4 as 0x5860 and CFG5 as 0x0cc00010 but the value which needs to be fused are CFG4 as 0x4050 and CFG5 as 0x10. Kindly, suggest any ways to work around this issue as we need to boot from the eMMC. Do we have any ways to workaround this issue to boot the processor from eMMC.
To make me able to accurately answer your question, please first specify what do
you exactly mean as CFG4 and CFG5. According to the Table 5-8 of the
i.MX6Solo/DualLite Reference Manual document, the BOOT_CFG1, BOOT_CFG2,
BOOT_CFG3 and BOOT_CFG4 fuses that configure the boot media device are the fuse
bytes within the 32-bit fuse word located at the offset of 0x450 from the
beginning of the OCOTP controller address space. So, please specify the fuse
word offset and fuse bits location within it for the fuses you're talking about.
The CFG4 is HW_OCOTP_CFG4 and CFG5 is HW_OCOTP_CFG5 registers. We have the below commands in the MFGTool to fuse the boot config registers for eMMC boot which fails as it has been written with previous specified values. Do we have any way to workaround this?
<!-- Fuse the SOM -->
<CMD state="Updater" type="push" body="$ echo 0x4060 > /sys/fsl_otp/HW_OCOTP_CFG4">fuse prog 0 5 0x4060</CMD>
<CMD state="Updater" type="push" body="$ echo 0x00000010 > /sys/fsl_otp/HW_OCOTP_CFG5">fuse prog 0 6 0x00000010</CMD>
The "fresh" processor parts come from the factory with the HW_OCOTP_CFG4 and
HW_OCOTP_CFG5 fuse registers intact, i.e. all zeros. So, if you've got the parts
with these registers not all zeros, the parts are probably the re-used ones. The
fuse banks are one-time programmable, so, you cannot reprogram them to desired
values. You have to replace the parts with valid "fresh" ones.