| 
									
										
										
										
											2021-01-06 14:35:04 +08:00
										 |  |  | 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:
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-05-27 10:51:52 +01:00
										 |  |  |  * Up to 4 Cortex-A9 cores
 | 
					
						
							| 
									
										
										
										
											2021-01-06 14:35:04 +08:00
										 |  |  |  * 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
 |