There are some differences between uBoot versions. In older uBoot, you need to use command "imxotp" in the other one, it is command "fuse". On this page, we will be speaking about "fuse" command, more info about "imxotp" can be found here:
Programming eFuses on very fresh board
Setting up eFuses by "fuse" command
We use eFuses for two reasons:
- to tell CPU to boot up OpenRex from SPI memory
- to set Ethernet MAC address
OpenRex fuses are already programmed. In case you need to work with eFuses, here is some info how to read & flash them.
To read fuses, go to uBoot and run:
fuse read 0 5
fuse read 0 6
fuse read 4 3 //high bits of MAC address
fuse read 4 2 //low bits of MAC address
Write fuses - Booting from SPI:
//!!BEAWARE: Once you blow a bit to 1, it can NOT be changed back to 0!!
//BE SURE YOU ARE DOING IT RIGHT - THIS IS THE CORRECT SETTING FOR OPENREX SPI BOOT
//THE OPENREX SPI IS CONNECTED TO ECSPI3 and CS2
//for OPENREX, YOU MUST DO IT EXACTLY THIS WAY:
fuse prog 0 5 0x2A000030
fuse prog 0 6 0x00000010
Write fuses - Setting up MAC address:
//!!BEAWARE: Once you blow a bit to 1, it can NOT be changed back to 0!!
//USE YOUR MAC ADDRESS!!!!, this is just an example
// example MAC Address: 00:0d:15:00:bc:4a
fuse prog 4 3 0x000d
fuse prog 4 2 0x1500bc4a
*Note 1: You have to reset the board to use fuse read and get the proper value
*Note 2: fuses are arranged in banks of 8 words so for example, 0x22 = 34 = bank 4 word 2