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