| Boundary Devices SABRE Lite (``sabrelite``) | 
 | =========================================== | 
 |  | 
 | Boundary Devices SABRE Lite i.MX6 Development Board is a low-cost development | 
 | platform featuring the powerful Freescale / NXP Semiconductor's i.MX 6 Quad | 
 | Applications Processor. | 
 |  | 
 | Supported devices | 
 | ----------------- | 
 |  | 
 | The SABRE Lite machine supports the following devices: | 
 |  | 
 |  * Up to 4 Cortex-A9 cores | 
 |  * Generic Interrupt Controller | 
 |  * 1 Clock Controller Module | 
 |  * 1 System Reset Controller | 
 |  * 5 UARTs | 
 |  * 2 EPIC timers | 
 |  * 1 GPT timer | 
 |  * 2 Watchdog timers | 
 |  * 1 FEC Ethernet controller | 
 |  * 3 I2C controllers | 
 |  * 7 GPIO controllers | 
 |  * 4 SDHC storage controllers | 
 |  * 4 USB 2.0 host controllers | 
 |  * 5 ECSPI controllers | 
 |  * 1 SST 25VF016B flash | 
 |  | 
 | Please note above list is a complete superset the QEMU SABRE Lite machine can | 
 | support. For a normal use case, a device tree blob that represents a real world | 
 | SABRE Lite board, only exposes a subset of devices to the guest software. | 
 |  | 
 | Boot options | 
 | ------------ | 
 |  | 
 | The SABRE Lite machine can start using the standard -kernel functionality | 
 | for loading a Linux kernel, U-Boot bootloader or ELF executable. | 
 |  | 
 | Running Linux kernel | 
 | -------------------- | 
 |  | 
 | Linux mainline v5.10 release is tested at the time of writing. To build a Linux | 
 | mainline kernel that can be booted by the SABRE Lite machine, simply configure | 
 | the kernel using the imx_v6_v7_defconfig configuration: | 
 |  | 
 | .. code-block:: bash | 
 |  | 
 |   $ export ARCH=arm | 
 |   $ export CROSS_COMPILE=arm-linux-gnueabihf- | 
 |   $ make imx_v6_v7_defconfig | 
 |   $ make | 
 |  | 
 | To boot the newly built Linux kernel in QEMU with the SABRE Lite machine, use: | 
 |  | 
 | .. code-block:: bash | 
 |  | 
 |   $ qemu-system-arm -M sabrelite -smp 4 -m 1G \ | 
 |       -display none -serial null -serial stdio \ | 
 |       -kernel arch/arm/boot/zImage \ | 
 |       -dtb arch/arm/boot/dts/imx6q-sabrelite.dtb \ | 
 |       -initrd /path/to/rootfs.ext4 \ | 
 |       -append "root=/dev/ram" | 
 |  | 
 | Running U-Boot | 
 | -------------- | 
 |  | 
 | U-Boot mainline v2020.10 release is tested at the time of writing. To build a | 
 | U-Boot mainline bootloader that can be booted by the SABRE Lite machine, use | 
 | the mx6qsabrelite_defconfig with similar commands as described above for Linux: | 
 |  | 
 | .. code-block:: bash | 
 |  | 
 |   $ export CROSS_COMPILE=arm-linux-gnueabihf- | 
 |   $ make mx6qsabrelite_defconfig | 
 |  | 
 | Note we need to adjust settings by: | 
 |  | 
 | .. code-block:: bash | 
 |  | 
 |   $ make menuconfig | 
 |  | 
 | then manually select the following configuration in U-Boot: | 
 |  | 
 |   Device Tree Control > Provider of DTB for DT Control > Embedded DTB | 
 |  | 
 | To start U-Boot using the SABRE Lite machine, provide the u-boot binary to | 
 | the -kernel argument, along with an SD card image with rootfs: | 
 |  | 
 | .. code-block:: bash | 
 |  | 
 |   $ qemu-system-arm -M sabrelite -smp 4 -m 1G \ | 
 |       -display none -serial null -serial stdio \ | 
 |       -kernel u-boot | 
 |  | 
 | The following example shows booting Linux kernel from dhcp, and uses the | 
 | rootfs on an SD card. This requires some additional command line parameters | 
 | for QEMU: | 
 |  | 
 | .. code-block:: none | 
 |  | 
 |   -nic user,tftp=/path/to/kernel/zImage \ | 
 |   -drive file=sdcard.img,id=rootfs -device sd-card,drive=rootfs | 
 |  | 
 | The directory for the built-in TFTP server should also contain the device tree | 
 | blob of the SABRE Lite board. The sample SD card image was populated with the | 
 | root file system with one single partition. You may adjust the kernel "root=" | 
 | boot parameter accordingly. | 
 |  | 
 | After U-Boot boots, type the following commands in the U-Boot command shell to | 
 | boot the Linux kernel: | 
 |  | 
 | .. code-block:: none | 
 |  | 
 |   => setenv ethaddr 00:11:22:33:44:55 | 
 |   => setenv bootfile zImage | 
 |   => dhcp | 
 |   => tftpboot 14000000 imx6q-sabrelite.dtb | 
 |   => setenv bootargs root=/dev/mmcblk3p1 | 
 |   => bootz 12000000 - 14000000 |