1U-Boot for the Gateworks Ventana Product Family boards 2 3This file contains information for the port of U-Boot to the Gateworks 4Ventana Product family boards. 5 61. Secondary Program Loader (SPL) 7--------------------------------- 8 9The i.MX6 has a BOOT ROM PPL (Primary Program Loader) which supports loading 10an executable image from various boot devices. 11 12The Gateworks Ventana board config uses an SPL build configuration. This 13will build the following artifacts from u-boot source: 14 - SPL - Secondary Program Loader that the i.MX6 BOOT ROM (Primary Program 15 Loader) boots. This detects CPU/DRAM configuration, configures 16 The DRAM controller, loads u-boot.img from the detected boot device, 17 and jumps to it. As this is booted from the PPL, it has an IVT/DCD 18 table. 19 - u-boot.img - The main u-boot core which is u-boot.bin with a image header. 20 21 222. Build 23-------- 24 25To build U-Boot for the Gateworks Ventana product family: 26 27 make gwventana_config 28 make 29 30 313. Boot source, boot from NAND 32------------------------------ 33 34The i.MX6 BOOT ROM expects some structures that provide details of NAND layout 35and bad block information (referred to as 'bootstreams') which are replicated 36multiple times in NAND. The number of replications and their spacing (referred 37to as search stride) is configurable through board strapping options and/or 38eFUSE settings (BOOT_SEARCH_COUNT / Pages in block from BOOT_CFG2). In 39addition, the i.MX6 BOOT ROM Flash Configuration Block (FCB) supports two 40copies of a bootloader in flash in the case that a bad block has corrupted one. 41The Freescale 'kobs-ng' application from the Freescale LTIB BSP, which runs 42under Linux and operates on an MTD partition, must be used to program the 43bootstream in order to setup this flash structure correctly. 44 45The Gateworks Ventana boards with NAND flash have been factory programmed 46such that their eFUSE settings expect 2 copies of the boostream (this is 47specified by providing kobs-ng with the --search_exponent=1 argument). Once in 48Linux with MTD support for the NAND on /dev/mtd0 you can program the SPL 49with: 50 51kobs-ng init -v -x --search_exponent=1 SPL 52 53The kobs-ng application uses an imximage which contains the Image Vector Table 54(IVT) and Device Configuration Data (DCD) structures that the i.MX6 BOOT ROM 55requires to boot. The kobs-ng adds the Firmware Configuration Block (FCB) and 56Discovered Bad Block Table (DBBT). The SPL build artifact from u-boot is 57an imximage. 58 59The u-boot.img, which is the non SPL u-boot binary appended to a u-boot image 60header must be programmed in the NAND flash boot device at an offset hard 61coded in the SPL. For the Ventana boards, this has been chosen to be 14MB. 62The image can be programmed from either u-boot or Linux: 63 64u-boot: 65Ventana > setenv mtdparts mtdparts=nand:14m(spl),2m(uboot),1m(env),-(rootfs) 66Ventana > tftp ${loadaddr} u-boot.img && nand erase.part uboot && \ 67 nand write ${loadaddr} uboot ${filesize} 68 69Linux: 70nandwrite /dev/mtd1 u-boot.img 71 72The above assumes the default Ventana partitioning scheme which is configured 73via the mtdparts env var: 74 - spl: 14MB 75 - uboot: 2M 76 - env: 1M 77 - rootfs: the rest 78 79This information is taken from: 80 http://trac.gateworks.com/wiki/ventana/bootloader#NANDFLASH 81 82More details about the i.MX6 BOOT ROM can be found in the IMX6 reference manual. 83 84