Hello, i want burn efuse on imx8mini for emmc boot, emmc connected exactly like EVK board (SD3 8 bit on NAND pins), can you tell me arguments of uboot like:
fuse prog [-y] <bank> <word> <hexval> [<hexval>...]
The way that you are going to program the efuses depends on several things. Principally by the specs of your memory. However, to make boot from the eMMC you need to make sure that the BOOT_CFG[14:12] registers are configured as below to boot from MMC/eMMC:
BOOT_CFG[14:12] = 010
The other configurations like I said before, depends on your memory configuration. You can find the description of the register description of the efuses on chapter 6.2 of the reference manual.
Hope this information can help you.
Hello Diego Adrian Cuevas.
According to this patch and processor manual
"The i.MX8MM is similar to i.MX6 processors in terms of addressing and clock
i.MX 8M Mini Applications Processor Reference Manual, Rev. 1, 03/2019
Table 6-49. Fusemap Descriptions, page 823
eFuse burning manual for i.mx6
(0x470 - 0x400) / 0x10 = 7 7 / 8 = 0 and the remainder is 7 Bank = 0 Word = 7
it is correct for i.MX8MM BOOT_CFG?
It seems to me that both articles are not suitable for i.MX8M Mini.
We used the Bank and Word values from the processor manual.
What we wanted to burn:
0x470 [14-12] 010 - MMC / eMMC
0x470 [11-10] 10 - SD3
i.MX 8M Mini Applications Processor Reference Manual, Rev. 2, 08/2019
184.108.40.206 Value of OTP Bank1 Word3 (Boot Configuration Info.)
Shadowed memory mapped access to OTP Bank 1, word 3.
Address: 3035_0000h base + 470h offset = 3035_0470h
Therefore, we used this command in u-boot:
u-boot=> fuse prog 1 3 0x00002800
rogramming bank 1 word 0x00000003 to 0x00002800...
Warning: Programming fuses is an irreversible operation!
This may brick your system.
Use this command only if you are sure of what you are doing!
To understand how to calculate the bank and word, using address: look at OCOTP memory map in
section 6.3.4 (OCOTP Memory Map/Register Definition) of i.MX 8M Mini Reference Manual,
Rev. 2, 08/2019 :
3035_0400 - Bank 0 Word 0
3035_0410 - Bank 0 Word 1
3035_0440 - Bank 1 Word 0
So, formula is as following:
Bank = (address - 0x400) / 0x40 ;
Word = [(address - 0x400) % 0x40] / 0x10 ;
I see this chapter, in this chpater desctibe BOOT_CFG, BOOT_CFG1 etc
But uboot requre "<bank> <word>", i need to figure out the accordance between "<bank> <word>" and BOOT_CFG registers.