Boot Linux OS entirely from a SD card, without modifying the existing eMMC content, on Inforce platforms based on Snapdragon™ 410E

Qualcomm® Snapdragon™ processors provide external memory interfaces either through Secure Digital Controller lines or through UFS lines. Snapdragon based platforms are typically capable of running either Android or Linux based software and OEMs/Product creators would want to switch between these software flavors seamlessly in their development phase. It is thus desirable to devise mechanisms to create a fully bootable image from an external memory source such an SD card that could be plugged-out from one system and plugged-in to another system! The procedure to create a bootable SD card of Debian Linux software is described below for Inforce 6309™ platform based on Qualcomm Snapdragon 410E processor.

Boot Linux OS entirely from a SD card

Boot-able SD card

It is possible to boot the entire OS from the SD card, without modifying the existing eMMC content, assuming you are using a Linux based system. The instructions below are to be used on Inforce 6309 SBC Debian Linux BSP Release version 2.0 available on Inforce Techweb, but would work with minor changes on future releases of Debian Linux from Inforce.

To boot from the SD card, a patched version of the bootloader (LK) will need to be recompiled. You will then need to create an SD card with a suitable GUID Partition Table and correct bootloaders.

Recompile the patched bootloader

# get compiler 
git clone --depth 1 \
git://codeaurora.org/platform/prebuilts/gcc/linux-x86/arm/arm-eabi-4.8.git \
-b LA.BR.1.1.3.c4-01000-8x16.0 lk_gcc
# get LK source code
git clone --depth 1 \
https://git.linaro.org/landing-teams/working/qualcomm/lk.git \
-b release/LA.BR.1.1.2-02210-8x16.0+sdboot lk_sdboot
# build bootloader
cd lk_sdboot
make msm8916 EMMC_BOOT=1 TOOLCHAIN_PREFIX="`pwd`/../lk_gcc/bin/arm-eabi-"

Download the proprietary bootloader

The proprietary bootloaders are available from Qualcomm at this location: https://developer.qualcomm.com/hardware/dragonboard-410c/tools. Find the most recent “Linux Board Support package” and download it. For example: developer.qualcomm.com/download/db410c/linx-board-support-package-v1.3.zip, and extract the ZIP file on your PC. The files get extracted to a folder named ‘linux-board-support-package-v1.3/’. Copy the files boot-ifc6309_v2.0.img and linaro-jessie-alip-qcom-snapdragon-arm64-20160511-85_2.img from Inforce 6309’s Debian Linux Release Version2.0 to the location linux-board-support-package-v1.3/bootloaders-linux/ and rename them to boot.img and rootfs.img respectively. “abootimg” is a tool to read/write/update Android boot partitions, and is available in most standard Linux distributions. If your Ubuntu host machine doesn’t have it, install using the command:

$sudo apt-get install abootimg

Run the command shown below to change the boot image with the specific configuration option:

abootimg -u boot.img -c "cmdline=root=/dev/mmcblk1p10 rwrootwait console=ttyMSM0,115200n8"

Create the SD card

To boot on the APQ8016, the boot media is required to have a very specific GUID Partition Table. The tool below will take care of that. You can inspect the tool to understand the low-level details if required. The SD card will be created with a default partition scheme that includes all the required boot partitions, as well as 2 partitions for the kernel and the rootfs, called ‘boot’ and ‘rootfs’. Once the SD card is created, you can load any valid boot image and root fs image into these partitions.

To create the bootable SD card:

git clone https://git.linaro.org/people/nicolas.dechesne/db-boot-tools.git
cd db-boot-tools
sudo ./mksdcard.sh -o /dev/ -p dragonboard410c/linux/partition.txt \
-i ../lk_sdboot/build-msm8916/ \
-i ../linux-board-support-package-v1.3/bootloaders-linux/
-s $((4*1024*1024))

Notes:

  • /dev/ represents your SD card, plugged to your PC. The SD card will be completely erased during this process.
  • Be very cautious about the SD card device name, or you could seriously damage your PC
  • Use $((4*1024*1024)) for 4Gb root partition and for 8Gb root partition use $((8*1024*1024))

When the command above finishes executing, your SD card shall have the right GUID Partition Table.

On the Inforce 6309 platform, turn ON the Boot configuration switch SW4 (located on the bottom side) to “0-1-1-1-1-1” meaning that positions 2-6 are turned ON. Plug-in the SD card and power up the board. The boot process would complete and the Linux login screen shall come up.

You could now plug-in and plug-out this SD card on multiple Inforce 6309 platforms to run Debian based software though the onboard eMMC has Android software pre-loaded on it.

Copyright ©2017 Inforce Computing, Inc. All rights reserved. Snapdragon is a registered trademark of Qualcomm Technologies, Inc, and used with permission. All other trademarks are the property of their respective owners.

mm

Sundeep Rau

Embedded System expert who manages products at SMART Embedded

More Posts