U-Boot port for Texas Instruments XTCIEVMK2X
============================================

Author: Murali Karicheri <m-karicheri2@ti.com>

This README has information on the u-boot port for XTCIEVMK2X EVM board.
Documentation for this board can be found at
  http://www.advantech.com/Support/TI-EVM/EVMK2HX_sd.aspx

The board is based on Texas Instruments Keystone2 family of SoCs : K2H, K2K.
More details on these SoCs are available at company websites
 K2K: http://www.ti.com/product/tci6638k2k
 K2H: http://www.ti.com/product/tci6638k2h

Board configuration:
====================

Some of the peripherals that are configured by u-boot are:-

1. 2GB DDR3 (can support 8GB SO DIMM as well)
2. 512M NAND (over ti emif16 bus)
3. 6MB MSM SRAM (part of the SoC)
4. two 1GBit Ethernet ports (SoC supports upto 4)
5. two UART ports
6. three i2c interfaces
7. three spi interfaces (only 1 interface supported in driver)

There are seperate PLLs to drive clocks to Tetris ARM and Peripherals.
To bring up SMP Linux on this board, there is a boot monitor
code that will be installed in MSMC SRAM. There is command available
to install this image from u-boot.

The port related files can be found at following folders
 keystone2 SoC related files: arch/arm/cpu/armv7/keystone/
 K2HK evm board files: board/ti/k2hk_evm/

board configuration file: include/configs/k2hk_evm.h

Supported boot modes:
 - SPI NOR boot

Supported image formats:-
 - u-boot.bin: for loading and running u-boot.bin through Texas instruments
               code composure studio (CCS)
 - u-boot-spi.gph: gpimage for programming SPI NOR flash for SPI NOR boot

Build instructions:
===================

To build u-boot.bin
  >make k2hk_evm_config
  >make u-boot-spi.gph

To build u-boot-spi.gph
  >make k2hk_evm_config
  >make u-boot-spi.gph

Load and Run U-Boot on K2HK EVM using CCS
=========================================

Need Code Composer Studio (CCS) installed on a PC to load and run u-boot.bin
on EVM. See instructions at below link for installing CCS on a Windows PC.
http://processors.wiki.ti.com/index.php/MCSDK_UG_Chapter_Getting_Started#
Installing_Code_Composer_Studio
Use u-boot.bin from the build folder for loading annd running u-boot binary
on EVM. Follow instructions at
http://processors.wiki.ti.com/index.php/EVMK2H_Hardware_Setup
to configure SW1 dip switch to use "No Boot/JTAG DSP Little Endian Boot Mode"
and Power ON the EVM.  Follow instructions to connect serial port of EVM to
PC and start TeraTerm or Hyper Terminal.

Start CCS on a Windows machine and Launch Target
configuration as instructed at http://processors.wiki.ti.com/index.php/
MCSDK_UG_Chapter_Exploring#Loading_and_Running_U-Boot_on_EVM_through_CCS.
The instructions provided in the above link uses a script for
loading the u-boot binary on the target EVM. Instead do the following:-

1. Right click to "Texas Instruments XDS2xx USB Emulator_0/CortexA15_1 core (D
   isconnected: Unknown)" at the debug window (This is created once Target
   configuration is launched) and select "Connect Target".
2. Once target connect is successful, choose Tools->Load Memory option from the
   top level menu. At the Load Memory window, choose the file u-boot.bin
   through "Browse" button and click "next >" button. In the next window, enter
   Start address as 0xc001000, choose Type-size "32 bits" and click "Finish"
   button.
3. Click View -> Registers from the top level menu to view registers window.
4. From Registers, window expand "Core Registers" to view PC. Edit PC value
   to be 0xc001000. From the "Run" top level menu, select "Free Run"
5. The U-Boot prompt is shown at the Tera Term/ Hyper terminal console as
   below and type any key to stop autoboot as instructed :=

U-Boot 2014.04-rc1-00201-gc215b5a (Mar 21 2014 - 12:47:59)

I2C:   ready
Detected SO-DIMM [SQR-SD3T-2G1333SED]
DRAM:  1.1 GiB
NAND:  512 MiB
Net:   K2HK_EMAC
Warning: K2HK_EMAC using MAC address from net device
, K2HK_EMAC1, K2HK_EMAC2, K2HK_EMAC3
Hit any key to stop autoboot:  0

SPI NOR Flash programming instructions
======================================
U-Boot image can be flashed to first 512KB of the NOR flash using following
instructions:-

1. Start CCS and run U-boot as described above.
2. Suspend Target. Select Run -> Suspend from top level menu
   CortexA15_1 (Free Running)"
3. Load u-boot-spi.gph binary from build folder on to DDR address 0x87000000
   through CCS as described in step 2 of "Load and Run U-Boot on K2HK EVM
   using CCS", but using address 0x87000000.
4. Free Run the target as desribed earlier (step 4) to get u-boot prompt
5. At the U-Boot console type following to setup u-boot environment variables.
   setenv addr_uboot 0x87000000
   setenv filesize <size in hex of u-boot-spi.gph rounded to hex 0x10000>
   run burn_uboot
   Once u-boot prompt is available, Power OFF the EVM. Set the SW1 dip switch
   to "SPI Little Endian Boot mode" as per instruction at
   http://processors.wiki.ti.com/index.php/EVMK2H_Hardware_Setup.
6. Power ON the EVM. The EVM now boots with u-boot image on the NOR flash.
