forked from mirror/qemu
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
120 lines
3.5 KiB
ReStructuredText
120 lines
3.5 KiB
ReStructuredText
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
|