xref: /OK3568_Linux_fs/u-boot/board/gateworks/gw_ventana/README (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593SmuzhiyunU-Boot for the Gateworks Ventana Product Family boards
2*4882a593Smuzhiyun
3*4882a593SmuzhiyunThis file contains information for the port of U-Boot to the Gateworks
4*4882a593SmuzhiyunVentana Product family boards.
5*4882a593Smuzhiyun
6*4882a593SmuzhiyunThe entire Ventana product family (http://www.gateworks.com/product#ventana)
7*4882a593Smuzhiyunis supported by a single bootloader build by using a common SPL and U-Boot
8*4882a593Smuzhiyunthat dynamically determines the characterstics of the board at runtime via
9*4882a593Smuzhiyuninformation from an EEPROM on the board programmed at the factory and supports
10*4882a593Smuzhiyunall of the various boot mediums available.
11*4882a593Smuzhiyun
12*4882a593Smuzhiyun1. Secondary Program Loader (SPL)
13*4882a593Smuzhiyun---------------------------------
14*4882a593Smuzhiyun
15*4882a593SmuzhiyunThe i.MX6 has a BOOT ROM PPL (Primary Program Loader) which supports loading
16*4882a593Smuzhiyunan executable image from various boot devices.
17*4882a593Smuzhiyun
18*4882a593SmuzhiyunThe Gateworks Ventana board config uses an SPL build configuration. This
19*4882a593Smuzhiyunwill build the following artifacts from U-Boot source:
20*4882a593Smuzhiyun - SPL - Secondary Program Loader that the i.MX6 BOOT ROM (Primary Program
21*4882a593Smuzhiyun         Loader) boots.  This detects CPU/DRAM configuration, configures
22*4882a593Smuzhiyun         The DRAM controller, loads u-boot.img from the detected boot device,
23*4882a593Smuzhiyun         and jumps to it.  As this is booted from the PPL, it has an IVT/DCD
24*4882a593Smuzhiyun         table.
25*4882a593Smuzhiyun - u-boot.img - The main U-Boot core which is u-boot.bin with a image header.
26*4882a593Smuzhiyun
27*4882a593Smuzhiyun
28*4882a593Smuzhiyun2. Build
29*4882a593Smuzhiyun--------
30*4882a593Smuzhiyun
31*4882a593SmuzhiyunTo build U-Boot for the Gateworks Ventana product family:
32*4882a593Smuzhiyun
33*4882a593SmuzhiyunFor NAND FLASH based boards:
34*4882a593Smuzhiyun make gwventana_nand_config
35*4882a593Smuzhiyun make
36*4882a593Smuzhiyun
37*4882a593SmuzhiyunFor EMMC FLASH based boards:
38*4882a593Smuzhiyun make gwventana_emmc_config
39*4882a593Smuzhiyun make
40*4882a593Smuzhiyun
41*4882a593Smuzhiyun
42*4882a593Smuzhiyun3. Boot source:
43*4882a593Smuzhiyun---------------
44*4882a593Smuzhiyun
45*4882a593SmuzhiyunThe Gateworks Ventana boards support booting from NAND or micro-SD depending
46*4882a593Smuzhiyunon the board model. The IMX6 BOOT ROM will choose a boot media based on eFUSE
47*4882a593Smuzhiyunsettings programmed at the factory.
48*4882a593Smuzhiyun
49*4882a593SmuzhiyunBoards with NAND flash will always boot from NAND, and NAND-less boards will
50*4882a593Smuzhiyunalways boot from micro-SD. However, it is possible to use the U-Boot bmode
51*4882a593Smuzhiyuncommand (or the technique it uses) to essentially bootstrap to another boot
52*4882a593Smuzhiyunmedia at runtime.
53*4882a593Smuzhiyun
54*4882a593Smuzhiyun3.1. boot from NAND
55*4882a593Smuzhiyun-------------------
56*4882a593Smuzhiyun
57*4882a593SmuzhiyunThe i.MX6 BOOT ROM expects some structures that provide details of NAND layout
58*4882a593Smuzhiyunand bad block information (referred to as 'bootstreams') which are replicated
59*4882a593Smuzhiyunmultiple times in NAND. The number of replications and their spacing (referred
60*4882a593Smuzhiyunto as search stride) is configurable through board strapping options and/or
61*4882a593SmuzhiyuneFUSE settings (BOOT_SEARCH_COUNT / Pages in block from BOOT_CFG2). In
62*4882a593Smuzhiyunaddition, the i.MX6 BOOT ROM Flash Configuration Block (FCB) supports two
63*4882a593Smuzhiyuncopies of a bootloader in flash in the case that a bad block has corrupted one.
64*4882a593SmuzhiyunThe Freescale 'kobs-ng' application from the Freescale LTIB BSP, which runs
65*4882a593Smuzhiyununder Linux and operates on an MTD partition, must be used to program the
66*4882a593Smuzhiyunbootstream in order to setup this flash structure correctly.
67*4882a593Smuzhiyun
68*4882a593SmuzhiyunThe Gateworks Ventana boards with NAND flash have been factory programmed
69*4882a593Smuzhiyunsuch that their eFUSE settings expect 2 copies of the boostream (this is
70*4882a593Smuzhiyunspecified by providing kobs-ng with the --search_exponent=1 argument). Once in
71*4882a593SmuzhiyunLinux with MTD support for the NAND on /dev/mtd0 you can program the SPL
72*4882a593Smuzhiyunwith:
73*4882a593Smuzhiyun
74*4882a593Smuzhiyunkobs-ng init -v -x --search_exponent=1 SPL
75*4882a593Smuzhiyun
76*4882a593SmuzhiyunThe kobs-ng application uses an imximage which contains the Image Vector Table
77*4882a593Smuzhiyun(IVT) and Device Configuration Data (DCD) structures that the i.MX6 BOOT ROM
78*4882a593Smuzhiyunrequires to boot.  The kobs-ng adds the Firmware Configuration Block (FCB) and
79*4882a593SmuzhiyunDiscovered Bad Block Table (DBBT).  The SPL build artifact from U-Boot is
80*4882a593Smuzhiyunan imximage.
81*4882a593Smuzhiyun
82*4882a593SmuzhiyunThe u-boot.img, which is the non SPL U-Boot binary appended to a U-Boot image
83*4882a593Smuzhiyunheader must be programmed in the NAND flash boot device at an offset hard
84*4882a593Smuzhiyuncoded in the SPL. For the Ventana boards, this has been chosen to be 14MB.
85*4882a593SmuzhiyunThe image can be programmed from either U-Boot or Linux:
86*4882a593Smuzhiyun
87*4882a593SmuzhiyunU-Boot:
88*4882a593SmuzhiyunVentana > setenv mtdparts mtdparts=nand:14m(spl),2m(uboot),1m(env),-(rootfs)
89*4882a593SmuzhiyunVentana > tftp ${loadaddr} u-boot.img && nand erase.part uboot && \
90*4882a593Smuzhiyun          nand write ${loadaddr} uboot ${filesize}
91*4882a593Smuzhiyun
92*4882a593SmuzhiyunLinux:
93*4882a593Smuzhiyunnandwrite /dev/mtd1 u-boot.img
94*4882a593Smuzhiyun
95*4882a593SmuzhiyunThe above assumes the default Ventana partitioning scheme which is configured
96*4882a593Smuzhiyunvia the mtdparts env var:
97*4882a593Smuzhiyun - spl: 14MB
98*4882a593Smuzhiyun - uboot: 2M
99*4882a593Smuzhiyun - env: 1M
100*4882a593Smuzhiyun - rootfs: the rest
101*4882a593Smuzhiyun
102*4882a593SmuzhiyunThis information is taken from:
103*4882a593Smuzhiyun  http://trac.gateworks.com/wiki/ventana/bootloader#nand
104*4882a593Smuzhiyun
105*4882a593SmuzhiyunMore details about the i.MX6 BOOT ROM can be found in the IMX6 reference manual.
106*4882a593Smuzhiyun
107*4882a593Smuzhiyun3.1. boot from MMC (eMMC/microSD)
108*4882a593Smuzhiyun---------------------------------
109*4882a593Smuzhiyun
110*4882a593SmuzhiyunWhen the IMX6 eFUSE settings have been factory programmed to boot from
111*4882a593SmuzhiyunMMC the SPL will be loaded from offset 0x400 (1KB). Once the SPL is
112*4882a593Smuzhiyunbooted, it will load and execute U-Boot (u-boot.img) from offset 69KB
113*4882a593Smuzhiyunon the micro-SD (defined by CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR).
114*4882a593Smuzhiyun
115*4882a593SmuzhiyunWhile it is technically possible to enable the SPL to be able to load
116*4882a593SmuzhiyunU-Boot from a file on a FAT/EXT filesystem on the micro-SD, we chose to
117*4882a593Smuzhiyunuse raw micro-SD access to keep the code-size and boot time of the SPL down.
118*4882a593Smuzhiyun
119*4882a593SmuzhiyunFor these reasons an MMC device that will be used as an IMX6 primary boot
120*4882a593Smuzhiyundevice must be carefully partitioned and prepared.
121*4882a593Smuzhiyun
122*4882a593SmuzhiyunThe following shell commands are executed on a Linux host (adjust DEV to the
123*4882a593Smuzhiyunblock storage device of your MMC, ie /dev/mmcblk0):
124*4882a593Smuzhiyun
125*4882a593Smuzhiyun DEV=/dev/sdc
126*4882a593Smuzhiyun # zero out 1MB of device
127*4882a593Smuzhiyun sudo dd if=/dev/zero of=$DEV count=1 bs=1M oflag=sync status=none && sync
128*4882a593Smuzhiyun # copy SPL to 1KB offset
129*4882a593Smuzhiyun sudo dd if=SPL of=$DEV bs=1K seek=1 oflag=sync status=none && sync
130*4882a593Smuzhiyun # copy U-Boot to 69KB offset
131*4882a593Smuzhiyun sudo dd if=u-boot.img of=$DEV bs=1K seek=69 oflag=sync status=none && sync
132*4882a593Smuzhiyun # create a partition table with a single rootfs partition starting at 1MB
133*4882a593Smuzhiyun printf "1,,L\n" | sudo sfdisk --in-order --no-reread -L -uM $DEV && sync
134*4882a593Smuzhiyun # format partition
135*4882a593Smuzhiyun sudo mkfs.ext4 -L root ${DEV}1
136*4882a593Smuzhiyun # mount the partition
137*4882a593Smuzhiyun sudo udisks --mount ${DEV}1
138*4882a593Smuzhiyun # extract filesystem
139*4882a593Smuzhiyun sudo tar xvf rootfs.tar.gz -C /media/root
140*4882a593Smuzhiyun # flush and unmount
141*4882a593Smuzhiyun sync && sudo umount /media/root
142*4882a593Smuzhiyun
143*4882a593SmuzhiyunThe above assumes the default Ventana micro-SD partitioning scheme
144*4882a593Smuzhiyun - spl    :   1KB-69KB  (68KB)  required by IMX6 BOOT ROM
145*4882a593Smuzhiyun - uboot  :  69KB-709KB (640KB) defined by
146*4882a593Smuzhiyun                                CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR
147*4882a593Smuzhiyun - env    : 709KB-965KB (256KB) defined by
148*4882a593Smuzhiyun                                CONFIG_ENV_MMC_SIZE
149*4882a593Smuzhiyun                                CONFIG_ENV_MMC_OFFSET_REDUND
150*4882a593Smuzhiyun - rootfs :   1MB-
151*4882a593Smuzhiyun
152*4882a593SmuzhiyunThis information is taken from:
153*4882a593Smuzhiyun  http://trac.gateworks.com/wiki/ventana/bootloader#microsd
154*4882a593Smuzhiyun
155*4882a593SmuzhiyunMore details about the i.MX6 BOOT ROM can be found in the IMX6 reference manual.
156*4882a593Smuzhiyun
157*4882a593Smuzhiyun4. Falcon Mode
158*4882a593Smuzhiyun------------------------------
159*4882a593Smuzhiyun
160*4882a593SmuzhiyunThe Gateworks Ventana board config enables Falcon mode (CONFIG_SPL_OS_BOOT)
161*4882a593Smuzhiyunwhich allows the SPL to boot directly to an OS instead of to U-Boot
162*4882a593Smuzhiyun(u-boot.img) thus acheiving a faster overall boot time. The time savings
163*4882a593Smuzhiyundepends on your boot medium (ie NAND Flash vs micro-SD) and size/storage
164*4882a593Smuzhiyunof the OS. The time savings can be anywhere from 2 seconds (256MB NAND Flash
165*4882a593Smuzhiyunwith ~1MB kernel) to 6 seconds or more (2GB NAND Flash with ~6 kernel)
166*4882a593Smuzhiyun
167*4882a593SmuzhiyunThe Gateworks Ventana board supports Falcon mode for the following boot
168*4882a593Smuzhiyunmedium:
169*4882a593Smuzhiyun - NAND flash
170*4882a593Smuzhiyun - micro-SD
171*4882a593Smuzhiyun
172*4882a593SmuzhiyunFor all boot mediums, raw mode is used. While support of more complex storage
173*4882a593Smuzhiyunsuch as files on top of FAT/EXT filesystem is possible but not practical
174*4882a593Smuzhiyunas the size of the SPL is fairly limitted (to 64KB based on the smallest
175*4882a593Smuzhiyunsize of available IMX6 iRAM) as well as the fact that this would increase
176*4882a593SmuzhiyunOS load time which defeats the purpose of Falcon mode in the first place.
177*4882a593Smuzhiyun
178*4882a593SmuzhiyunThe SPL decides to boot either U-Boot (u-boot.img) or the OS (args + kernel)
179*4882a593Smuzhiyunbased on the return value of the spl_start_uboot() function. While often
180*4882a593Smuzhiyunthis can simply be the state of a GPIO based pushbutton or DIP switch, for
181*4882a593SmuzhiyunGateworks Ventana, we use an EEPROM register on i2c-0 at 0x50:0x00:
182*4882a593Smuzhiyunset to '0' will choose to boot to U-Boot and otherwise it will boot to OS.
183*4882a593Smuzhiyun
184*4882a593SmuzhiyunTo use Falcon mode it is required that you first 'prepare' the 'args' data
185*4882a593Smuzhiyunthat is stored on your boot medium along with the kernel (which can be any
186*4882a593SmuzhiyunOS or bare-metal application). In the case of the Linux kernel the 'args'
187*4882a593Smuzhiyunis the flatenned device-tree which normally gets altered prior to booting linux
188*4882a593Smuzhiyunby U-Boot's 'bootm' command. To achieve this for SPL we use the
189*4882a593Smuzhiyun'spl export fdt' command in U-Boot after loading the kernel and dtb which
190*4882a593Smuzhiyunwill go through the same process of modifying the device-tree for the board
191*4882a593Smuzhiyunbeing executed on but not jump to the kernel. This allows you to save the
192*4882a593Smuzhiyunargs data to the location the SPL expects it and then enable Falcon mode.
193*4882a593Smuzhiyun
194*4882a593SmuzhiyunIt is important to realize that there are certain values in the dtb that
195*4882a593Smuzhiyunare board model specific (IMX6Q vs IMX6DL for example) and board specific
196*4882a593Smuzhiyun(board serial number, MAC addrs) so you do not want to use the 'args'
197*4882a593Smuzhiyundata prepared from one board on another board.
198*4882a593Smuzhiyun
199*4882a593Smuzhiyun4.1. Falcon Mode on NAND flash
200*4882a593Smuzhiyun------------------------------
201*4882a593SmuzhiyunTo prepare a Gateworks Ventana board that boots from NAND flash for Falcon
202*4882a593Smuzhiyunmode you must program your flash such that the 'args' and 'kernel' are
203*4882a593Smuzhiyunlocated where defined at compile time by the following:
204*4882a593Smuzhiyun   CONFIG_CMD_SPL_NAND_OFS         17MB - offset of 'args'
205*4882a593Smuzhiyun   CONFIG_SYS_NAND_SPL_KERNEL_OFFS 18MB - offset of 'kernel'
206*4882a593Smuzhiyun
207*4882a593SmuzhiyunThe location offsets defined above are defaults chosen by Gateworks and are
208*4882a593Smuzhiyunflexible if you want to re-define them.
209*4882a593Smuzhiyun
210*4882a593SmuzhiyunThe following steps executed in U-Boot will configure Falcon mode for NAND
211*4882a593Smuzhiyunusing rootfs (ubi), kernel (uImage), and dtb from the network:
212*4882a593Smuzhiyun
213*4882a593Smuzhiyun # change mtd partitions to the above mapping
214*4882a593Smuzhiyun Ventana > setenv mtdparts 'mtdparts=nand:14m(spl),2m(uboot),1m(env),1m(args),10m(kernel),-(rootfs)'
215*4882a593Smuzhiyun
216*4882a593Smuzhiyun # flash rootfs (at 28MB)
217*4882a593Smuzhiyun Ventana > tftp ${loadaddr} rootfs_${flash_layout}.ubi && \
218*4882a593Smuzhiyun   nand erase.part rootfs && nand write ${loadaddr} rootfs ${filesize}
219*4882a593Smuzhiyun
220*4882a593Smuzhiyun # load the device-tree
221*4882a593Smuzhiyun Ventana > tftp ${fdt_addr} ventana/${fdt_file2}
222*4882a593Smuzhiyun
223*4882a593Smuzhiyun # load the kernel
224*4882a593Smuzhiyun Ventana > tftp ${loadaddr} ventana/uImage
225*4882a593Smuzhiyun
226*4882a593Smuzhiyun # flash kernel (at 18MB)
227*4882a593Smuzhiyun Ventana > nand erase.part kernel && nand write ${loadaddr} kernel ${filesize}
228*4882a593Smuzhiyun
229*4882a593Smuzhiyun # set kernel args for the console and rootfs (used by spl export)
230*4882a593Smuzhiyun Ventana > setenv bootargs 'console=ttymxc1,115200 root=ubi0:rootfs ubi.mtd=5 rootfstype=ubifs quiet'
231*4882a593Smuzhiyun
232*4882a593Smuzhiyun # create args based on env, board, EEPROM, and dtb
233*4882a593Smuzhiyun Ventana > spl export fdt ${loadaddr} - ${fdt_addr}
234*4882a593Smuzhiyun
235*4882a593Smuzhiyun # flash args (at 17MB)
236*4882a593Smuzhiyun Ventana > nand erase.part args && nand write 18000000 args 100000
237*4882a593Smuzhiyun
238*4882a593Smuzhiyun # set i2c register 0x50:0x00=0 to boot to Linux
239*4882a593Smuzhiyun Ventana > i2c dev 0 && i2c mw 0x50 0x00.0 0 1
240*4882a593Smuzhiyun
241*4882a593SmuzhiyunBe sure to adjust 'bootargs' above to your OS needs (this will be different
242*4882a593Smuzhiyunfor various distros such as OpenWrt, Yocto, Android, etc). You can use the
243*4882a593Smuzhiyunvalue obtained from 'cat /proc/cmdline' when booted to Linux.
244*4882a593Smuzhiyun
245*4882a593SmuzhiyunThis information is taken from:
246*4882a593Smuzhiyun  http://trac.gateworks.com/wiki/ventana/bootloader/falcon-mode#nand
247*4882a593Smuzhiyun
248*4882a593Smuzhiyun
249*4882a593Smuzhiyun4.2. Falcon Mode on micro-SD card
250*4882a593Smuzhiyun---------------------------------
251*4882a593Smuzhiyun
252*4882a593SmuzhiyunTo prepare a Gateworks Ventana board with a primary boot device of micro-SD
253*4882a593Smuzhiyunyou first need to make sure you build U-Boot with CONFIG_ENV_IS_IN_MMC
254*4882a593Smuzhiyuninstead of CONFIG_ENV_IS_IN_NAND.
255*4882a593Smuzhiyun
256*4882a593SmuzhiyunFor micro-SD based Falcon mode you must program your micro-SD such that
257*4882a593Smuzhiyunthe 'args' and 'kernel' are located where defined at compile time
258*4882a593Smuzhiyunby the following:
259*4882a593Smuzhiyun   CONFIG_SYS_MMCSD_RAW_MODE_ARGS_SECTOR 0x800 (1MB) - offset of 'args'
260*4882a593Smuzhiyun   CONFIG_SYS_MMCSD_RAW_MODE_KERNEL_SECTOR 0x1000 (2MB) - offset of 'kernel'
261*4882a593Smuzhiyun
262*4882a593SmuzhiyunThe location offsets defined above are defaults chosen by Gateworks and are
263*4882a593Smuzhiyunflexible if you want to re-define them.
264*4882a593Smuzhiyun
265*4882a593SmuzhiyunFirst you must prepare a micro-SD such that the SPL can be loaded by the
266*4882a593SmuzhiyunIMX6 BOOT ROM (fixed offset of 1KB), and U-Boot can be loaded by the SPL
267*4882a593Smuzhiyun(fixed offset of 69KB defined by CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR).
268*4882a593Smuzhiyun
269*4882a593SmuzhiyunThe following shell commands are executed on a Linux host (adjust DEV to the
270*4882a593Smuzhiyunblock storage device of your micro-SD):
271*4882a593Smuzhiyun
272*4882a593Smuzhiyun DEV=/dev/sdc
273*4882a593Smuzhiyun # zero out 1MB of device
274*4882a593Smuzhiyun sudo dd if=/dev/zero of=$DEV count=1 bs=1M oflag=sync status=none && sync
275*4882a593Smuzhiyun # copy SPL to 1KB offset
276*4882a593Smuzhiyun sudo dd if=SPL of=$DEV bs=1K seek=1 oflag=sync status=none && sync
277*4882a593Smuzhiyun # copy U-Boot to 69KB offset
278*4882a593Smuzhiyun sudo dd if=u-boot.img of=$DEV bs=1K seek=69 oflag=sync status=none && sync
279*4882a593Smuzhiyun # create a partition table with a single rootfs partition starting at 10MB
280*4882a593Smuzhiyun printf "10,,L\n" | sudo sfdisk --in-order --no-reread -L -uM $DEV && sync
281*4882a593Smuzhiyun # format partition
282*4882a593Smuzhiyun sudo mkfs.ext4 -L root ${DEV}1
283*4882a593Smuzhiyun # mount the partition
284*4882a593Smuzhiyun sudo udisks --mount ${DEV}1
285*4882a593Smuzhiyun # extract filesystem
286*4882a593Smuzhiyun sudo tar xvf rootfs.tar.gz -C /media/root
287*4882a593Smuzhiyun # flush and unmount
288*4882a593Smuzhiyun sync && sudo umount /media/root
289*4882a593Smuzhiyun
290*4882a593SmuzhiyunNow that your micro-SD partitioning has been adjusted to leave room for the
291*4882a593Smuzhiyunraw 'args' and 'kernel' data boot the board with the prepared micro-SD, break
292*4882a593Smuzhiyunout in U-Boot and use the following to enable Falcon mode:
293*4882a593Smuzhiyun
294*4882a593Smuzhiyun # load device-tree from rootfs
295*4882a593Smuzhiyun Ventana > ext2load mmc 0:1 ${fdt_addr} boot/${fdt_file2}
296*4882a593Smuzhiyun
297*4882a593Smuzhiyun # load kernel from rootfs
298*4882a593Smuzhiyun Ventana > ext2load mmc 0:1 ${loadaddr} boot/uImage
299*4882a593Smuzhiyun
300*4882a593Smuzhiyun # write kernel at 2MB offset
301*4882a593Smuzhiyun Ventana > mmc write ${loadaddr} 0x1000 0x4000
302*4882a593Smuzhiyun
303*4882a593Smuzhiyun # setup kernel bootargs
304*4882a593Smuzhiyun Ventana > setenv bootargs 'console=ttymxc1,115200 root=/dev/mmcblk0p1 rootfstype=ext4 rootwait rw'
305*4882a593Smuzhiyun
306*4882a593Smuzhiyun # prepare args
307*4882a593Smuzhiyun Ventana > spl export fdt ${loadaddr} - ${fdt_addr}
308*4882a593Smuzhiyun
309*4882a593Smuzhiyun # write args 1MB data (0x800 sectors) to 1MB offset (0x800 sectors)
310*4882a593Smuzhiyun Ventana > mmc write 18000000 0x800 0x800
311*4882a593Smuzhiyun
312*4882a593Smuzhiyun # set i2c register 0x50:0x00=0 to boot to Linux
313*4882a593Smuzhiyun Ventana > i2c dev 0 && i2c mw 0x50 0x00.0 0 1
314*4882a593Smuzhiyun
315*4882a593SmuzhiyunBe sure to adjust 'bootargs' above to your OS needs (this will be different
316*4882a593Smuzhiyunfor various distros such as OpenWrt, Yocto, Android, etc). You can use the
317*4882a593Smuzhiyunvalue obtained from 'cat /proc/cmdline' when booted to Linux.
318*4882a593Smuzhiyun
319*4882a593SmuzhiyunThis information is taken from:
320*4882a593Smuzhiyun  http://trac.gateworks.com/wiki/ventana/bootloader/falcon-mode#microsd
321