diff --git a/Makefile b/Makefile
index a7dce06..2801ba2 100644
--- a/Makefile
+++ b/Makefile
@@ -1006,6 +1006,12 @@ u-boot-nand.gph: u-boot.bin FORCE
 	$(call if_changed,mkimage)
 	@dd if=/dev/zero bs=8 count=1 2>/dev/null >> $@
 
+u-boot.uart.pad:
+	@dd if=/dev/zero bs=4 count=1024 2>/dev/null > $@
+
+u-boot.uart: u-boot.uart.pad u-boot.bin FORCE
+	$(call if_changed,cat)
+
 # x86 uses a large ROM. We fill it with 0xff, put the 16-bit stuff (including
 # reset vector) at the top, Intel ME descriptor at the bottom, and U-Boot in
 # the middle.
diff --git a/board/ti/ks2_evm/README b/board/ti/ks2_evm/README
index 9ee90a4..7e2e096 100644
--- a/board/ti/ks2_evm/README
+++ b/board/ti/ks2_evm/README
@@ -81,6 +81,21 @@ To build u-boot-nand.gph
   >make k2hk_evm_defconfig
   >make u-boot-nand.gph
 
+To build u-boot.uart
+  >make k2hk_evm_defconfig
+  >make u-boot.uart
+
+Load and Run U-Boot on keystone EVMs using UART download
+========================================================
+
+Open BMC and regular UART terminals.
+
+1. On the regular UART port start xmodem transfer of the u-boot.uart
+2. Using BMC terminal set the ARM-UART bootmode and reboot the EVM
+   BMC> bootmode #4
+   MBC> reboot
+3. When xmodem is complete you should see the u-boot starts on the UART port
+
 Load and Run U-Boot on keystone EVMs using CCS
 =========================================