1U-Boot for Freescale i.MX6 2 3This file contains information for the port of U-Boot to the Freescale i.MX6 4SoC. 5 61. CONVENTIONS FOR FUSE ASSIGNMENTS 7----------------------------------- 8 91.1 MAC Address: It is stored in fuse bank 4, with the 32 lsbs in word 2 and the 10 16 msbs in word 3. 11 12Example: 13 14For reading the MAC address fuses on a MX6Q: 15 16- The MAC address is stored in two fuse addresses (the fuse addresses are 17described in the Fusemap Descriptions table from the mx6q Reference Manual): 18 190x620[31:0] - MAC_ADDR[31:0] 200x630[15:0] - MAC_ADDR[47:32] 21 22In order to use the fuse API, we need to pass the bank and word values, which 23are calculated as below: 24 25Fuse address for the lower MAC address: 0x620 26Base address for the fuses: 0x400 27 28(0x620 - 0x400)/0x10 = 0x22 = 34 decimal 29 30As the fuses are arranged in banks of 8 words: 31 3234 / 8 = 4 and the remainder is 2, so in this case: 33 34bank = 4 35word = 2 36 37And the U-boot command would be: 38 39=> fuse read 4 2 40Reading bank 4: 41 42Word 0x00000002: 9f027772 43 44Doing the same for the upper MAC address: 45 46Fuse address for the upper MAC address: 0x630 47Base address for the fuses: 0x400 48 49(0x630 - 0x400)/0x10 = 0x23 = 35 decimal 50 51As the fuses are arranged in banks of 8 words: 52 5335 / 8 = 4 and the remainder is 3, so in this case: 54 55bank = 4 56word = 3 57 58And the U-boot command would be: 59 60=> fuse read 4 3 61Reading bank 4: 62 63Word 0x00000003: 00000004 64 65,which matches the ethaddr value: 66=> echo ${ethaddr} 6700:04:9f:02:77:72 68 69Some other useful hints: 70 71- The 'bank' and 'word' numbers can be easily obtained from the mx6 Reference 72Manual. For the mx6quad case, please check the "46.5 OCOTP Memory Map/Register 73Definition" from the "i.MX 6Dual/6Quad Applications Processor Reference Manual, 74Rev. 1, 04/2013" document. For example, for the MAC fuses we have: 75 76Address: 7721B_C620 Value of OTP Bank4 Word2 (MAC Address)(OCOTP_MAC0) 78 7921B_C630 Value of OTP Bank4 Word3 (MAC Address)(OCOTP_MAC1) 80 81- The command '=> fuse read 4 2 2' reads the whole MAC addresses at once: 82 83=> fuse read 4 2 2 84Reading bank 4: 85 86Word 0x00000002: 9f027772 00000004 87 882. Using imx_usb_loader for first install with SPL 89-------------------------------------------------- 90 91imx_usb_loader is a very nice tool by BoundaryDevice that 92allow to install U-Boot without a JTAG debugger, using 93the USB boot mode as described in the manual. It is 94a replacement for Freescale's MFGTOOLS. 95 96The sources can be found here: 97 98 https://github.com/boundarydevices/imx_usb_loader.git 99 100Booting in USB mode, the i.MX6 announces itself to the Linux Host as: 101 102Bus 001 Device 111: ID 15a2:0061 Freescale Semiconductor, Inc. 103 104imx_usb_loader is able to download a single file (u-boot.imx) 105to the board. For boards without SPL support, it is enough to 106issue the command: 107 108 sudo ../imx_usb_loader/imx_usb -v u-boot.imx 109 110Getting U-Boot when SPL support is active, it requires 111two downloads. imx_usb_loader downloads the SPL into 112OCRAM and starts it. SPL will check for a valid u-boot.img, and 113because it is not found, it will wait for it using the y-modem 114protocol via the console. 115 116A first install is then possible by combining imx_usb_loader with 117another tool such as kermit. 118 119sudo ../imx_usb_loader/imx_usb -v SPL 120kermit kermit_uboot 121 122and kermit_uboot contains something like this (set line should be adjusted): 123 124set line /dev/ttyUSB1 125set speed 115200 126SET CARRIER-WATCH OFF 127set flow-control none 128set handshake none 129set prefixing all 130set file type bin 131set protocol ymodem 132send u-boot.img 133c 134 135The last "c" command tells kermit (from ckermit package in most distros) 136to switch from command line mode to communication mode, and when the 137script is finished, the U-Boot prompt is shown in the same shell. 138