Blame view

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