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-able SD cardIt 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 bootloaderThe 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. 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 abootimgRun 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 cardTo 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))