Build
=====

First, configure Buildroot for your WarpBoard.
  make warpboard_defconfig

Build all components:
  make

You will find in ./output/images/ the following files:
  - imx6sl-warp.dtb
  - rootfs.ext4
  - rootfs.tar
  - sdcard.img
  - u-boot.imx
  - zImage

Update uboot
============

- Put warpboard in USB download mode by closing the j2 jumper on the
  daugther board

- Load u-boot.imx in the WarpBoard by using the imx-usb-loader host utility:

  $ ./output/host/usr/bin/imx_usb -c output/host/etc/imx-loader.d/ output/images/u-boot.imx

- U-Boot will appear in minicom

- Reset the U-Boot environment to its default:
 => env default -f -a
 => saveenv

- Run the DFU command in U-Boot:
 => dfu 0 mmc 0

- Transfer U-Boot into flash by running this command in host side:

 $ sudo ./output/host/usr/bin/dfu-util -D output/images/u-boot.imx -a boot

- remove power and put the WarpBoard back into normal boot mode by
  opening the j2 jumper.

Update linux & rootfs
=====================

Run the 'ums' command from the U-Boot prompt to mount the eMMC as USB mass
storage:

=> ums 0 mmc 0

And then flash the sdcard.img into the eMMC:

  dd if=output/images/sdcard.img of=/dev/<your-sd-device>

*** WARNING! This will destroy all the eMMC content. Use it with care! ***

Using bluetooth
================

Enable the bluez_utils or bluez5_utils package, and then run:

$ hciattach /dev/ttymxc4 any
$ hciconfig hci0 up

Using Wifi
==========

# modprobe brcmfmac
# iwconfig wlan0 essid ACCESSPOINTNAME
# wpa_passphrase ACCESSPOINTNAME > /etc/wpa.conf
(enter the wifi password and press enter)
# wpa_supplicant -Dwext -iwlan0 -c /etc/wpa.conf &
# udhcpc -i wlan0
# ping buildroot.org

Enjoy!
