Boundary Devices SABRE Lite(sabrelite)

Boundary Devices SABRE Lite i.MX6 开发板是一个低成本开发平台,采用性能强劲的 Freescale / NXP Semiconductor i.MX 6 Quad 应用处理器。

支持的设备

SABRE Lite 机器支持以下设备:

  • 最多四个 Cortex-A9 核心

  • 通用中断控制器

  • 一个时钟控制器模块

  • 一个系统复位控制器

  • 五个 UART

  • 两个 EPIC 定时器

  • 一个 GPT 定时器

  • 两个看门狗定时器

  • 一个 FEC 以太网控制器

  • 三个 I2C 控制器

  • 七个 GPIO 控制器

  • 四个 SDHC 存储控制器

  • 四个 USB 2.0 主机控制器

  • 五个 ECSPI 控制器

  • 两个 FlexCAN CAN 控制器

  • 一个 SST 25VF016B 闪存

请注意,上述列表是 QEMU SABRE Lite 机器可支持设备的完整超集。在常规用法中,表示真实 SABRE Lite 板的设备树二进制文件仅向客户机软件提供其中部分设备。

启动选项

SABRE Lite 机器可使用标准 -kernel 功能加载 Linux 内核、U-Boot 引导加载程序或 ELF 可执行文件并启动。

运行 Linux 内核

撰写本文时测试了 Linux 主线 v5.10 发布版。要构建可由 SABRE Lite 机器启动的 Linux 主线内核,只需使用 imx_v6_v7_defconfig 配置内核:

$ export ARCH=arm
$ export CROSS_COMPILE=arm-linux-gnueabihf-
$ make imx_v6_v7_defconfig
$ make

在 QEMU 中使用 SABRE Lite 机器启动新构建的 Linux 内核:

$ 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"

运行 U-Boot

撰写本文时测试了 U-Boot 主线 v2020.10 发布版。要构建可由 SABRE Lite 机器启动的 U-Boot 主线引导加载程序,请使用 mx6qsabrelite_defconfig,命令与上述 Linux 构建命令类似:

$ export CROSS_COMPILE=arm-linux-gnueabihf-
$ make mx6qsabrelite_defconfig

注意,需要通过以下命令调整设置:

$ make menuconfig

然后在 U-Boot 中手动选择以下配置:

Device Tree Control > Provider of DTB for DT Control > Embedded DTB

要使用 SABRE Lite 机器启动 U-Boot,请将 u-boot 二进制文件传给 -kernel 参数,并提供包含根文件系统的 SD 卡镜像:

$ qemu-system-arm -M sabrelite -smp 4 -m 1G \
    -display none -serial null -serial stdio \
    -kernel u-boot

以下示例通过 DHCP 启动 Linux 内核,并使用 SD 卡上的根文件系统。这需要为 QEMU 添加一些命令行参数:

-nic user,tftp=/path/to/kernel/zImage \
-drive file=sdcard.img,id=rootfs -device sd-card,drive=rootfs

内置 TFTP 服务器的目录还应包含 SABRE Lite 板的设备树二进制文件。示例 SD 卡镜像只有一个分区,其中填入了根文件系统。可以据实际情况调整内核的 "root=" 启动参数。

U-Boot 启动后,在其命令 shell 中输入以下命令启动 Linux 内核:

=> 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