All posts by Sundeep Rau

mm

About Sundeep Rau

Embedded System expert who manages products at SMART Wireless

Open Embedded for Inforce Platforms

Introduction: Product makers would find it hard to pick up off-the-shelf Linux distributions for use in their systems directly owing to the combination of bootloader, kernel, application, and development tool components not being compatible for their peripherals and hardware. Thus, a ‘roll your own’ approach to Linux is preferred and the Open Embedded (OE) build environment provides exactly that through a methodology to reliably build customized Linux distributions for your embedded devices. Open Embedded is not a Linux distro but a build system with which a Linux distro can be created.

Open Embedded for Inforce Platforms

Download High Resolutions Image Continue reading Open Embedded for Inforce Platforms

Enabling RTC on Inforce Platforms

Introduction: The purpose of an RTC or a real-time clock is to provide precise time and date which can be used for various application use-cases. Similar to a watch, it runs on a battery and keeps time for you even when there is a power outage on your system! Using it, you can keep track of long timelines, even if your system is disconnected from the power plug. Continue reading Enabling RTC on Inforce Platforms

Inforce Insights January 2017: Vol.3 Issue 1 – Inforce Computing Newsletter

Inforce Insights January 2017: Vol.3 Issue 1 – Inforce Computing Newsletter

Another fruitful year goes by and we usher in this New Year wishing health, happiness, and success to everyone! We are happy to present our first newsletter of the year! In this issue, we share details on booting up our SBC running Linux entirely from an SD card. Continuing our trust with digital content protection which we had illustrated elaborately through Widevine DRM in our previous newsletter, we now provide a technical article on securing the boot process on our platforms. We hope you enjoy reading our content as much as we love creating it!

Inforce Insights January 2017: Vol.3 Issue 1 - Inforce Computing Newsletter Continue reading Inforce Insights January 2017: Vol.3 Issue 1 – Inforce Computing Newsletter

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

Secure Boot Loader

Qualcomm® Secure boot Prevents malicious software from loading during the system start-up process of Inforce platforms

Hackers keep devising unique new ways to circumvent traditional anti-virus/anti-malware software but with a secure boot process, it becomes extremely difficult if not impossible to gain malicious entry into a system. The bootloader is the first code that is executed after the board is powered up. The bootloader performs initialization of low-level hardware like clocks, memory, communication etc and is therefore highly coupled with the hardware. A boot process is considered vulnerable when bootloader attacks use the boot process itself to load malicious code masquerading as a legitimate operating system, prior to the loading of the real OS. The secure boot process is a way to prevent such attacks to the system before the bootloader is started and to ensure that the bootloader and kernel code are from trusted sources. Continue reading Qualcomm® Secure boot Prevents malicious software from loading during the system start-up process of Inforce platforms

Protecting your premium HD content with Widevine™ Digital rights management (DRM) on Inforce platforms

Multimedia content must be protected against unauthorized access and distribution and thus needs protection. Qualcomm® provides a comprehensive content security through its hardware and firmware which allows users to seamlessly enjoy the latest premium content, at up to 4K Ultra HD resolution. The Content Protection feature on Qualcomm chipsets protects premium HD content based on the Qualcomm’s TrustZone (TZ) solution. TrustZone is a hardware based security system built into Qualcomm chipsets to provide secure end points and roots of trust. The different components involved in content protection are shown below. Continue reading Protecting your premium HD content with Widevine™ Digital rights management (DRM) on Inforce platforms

Enabling SDK for Hexagon™ DSP on Inforce Platforms in order to create an interactive user experience in less time

DSPs are specialized processors dedicated to digital signal processing. Similar to GPUs, DSPs are designed to perform a very specific subset of tasks and also to exploit parallelism. Like CPUs, they often make use of SIMD (single instruction, multiple data) and VLIW processing to boost throughput and total performance per watt. CPUs such as Snapdragon™ can handle these tasks (and sometimes do), but DSPs offer better performance than general processors, and have more flexibility than a traditional ASIC.Hexagon SDK

The Qualcomm® Hexagon™ DSP is designed to accelerate certain workloads at performance efficiencies well above anything a modern CPU can offer. The Hexagon DSP is an advanced variable instruction length, VLIW (Very Long Instruction Word) processor, meaning it’s designed to extract maximum parallelism per clock cycle and to spread workloads across a wide set of execution units. Any digital signal that needs to be processed in a low power environment can thus be assigned to this processor (from voice features to sensors and computer vision applications).

The Hexagon DSP is a cluster of an application, modem and sensor DSPs. The aDSP or the Application DSP, allows the device to process simple sets of data on low power, without having to wake up the Application processor. The aDSP can run custom applications to perform simple tasks, like hotword detection for voice recognition and perhaps low power music playback. The sensor DSP was clubbed with the aDSP in earlier versions of Hexagon but is now a separate DSP.

It is aptly named “low power island” and designed to improve the battery life of always-on use cases, including step or activity counters as well as sensor-assisted positioning (using your platforms’ sensors to provide more accurate location when you don’t have a strong GPS signal). The modem DSP is typically not available on application processor variants of Snapdragon on which Inforce platforms are based on. A simple illustration of the Hexagon DSP processors in Snapdragon products is shown below

 

Using the Hexagon SDK, developers with expertise working in native programming environments can tap into hardware-enabled multimedia features to deliver interactive user experiences in much lesser time as compared to making source code modifications for this kind of functionality. The SDK is designed to help ensure multimedia processing efficiency, which means increased fluidity, low latency, and superior app performance. The Hexagon SDK is also designed to enable high computational burdens on the CPU to be off-loaded into a heterogeneous computing environment with the use of shared remote code objects.More information on the Hexagon DSP and SDK from Qualcomm is available at this link. Inforce’s Android BSP releases enable the use of Hexagon SDK on all its platforms.

Robot’s hearts are beating with Inforce platforms as the main computing device with Robot Operating System (ROS) and the possibilities are now endless

The Robot Operating System (ROS) is a collection of tools, libraries, and conventions that aim to simplify the task of creating complex and robust robot behavior across a wide variety of robotic platforms. ROS encourages collaborative robotics software development. For example, one laboratory might have experts in mapping indoor environments, and could contribute a world-class system for producing maps. Another group might have experts using maps to navigate, and yet another group might have discovered a computer vision approach that works well for recognizing small objects in clutter.

ROS was designed specifically for groups like these to collaborate and build upon each other’s work. With this, the primary goal of ROS becomes to support code reuse in robotics research and development and it is all open source! The Open Source Robotics Foundation® (OSRF) made ROS available to a wider developer community by porting ROS libraries to the ARM® instruction set architecture owing to which Snapdragon™and other ARM-based chipsets have become a lot more interesting. By enabling ROS on platforms based on Snapdragon processors, it becomes possible to have Inforce platforms as the main computing device on a robot.A simple representation of a robot for computer vision purposes is shown below.

Robot’s hearts are beating with Inforce platforms

Central in this image is an Inforce platform which is a computer running Ubuntu Linux operating system. Below the computer, the input and output devices (I/O) are grouped. Some devices can connect as is, or may be part of another computer, while other devices might require some electronics to interface with. Since Inforce platforms support Ethernet and Wi-Fi capabilities, the single computer core could just as well be 10 computers, all running the ROS framework, communicating over a network. The ROS framework would tie it all together, and these ten computers would be supporting a single virtual entity, which is what you would call ‘the robot’. The possibilities are indeed endless!

Inforce makes fully featured Ubuntu/Debian releases for all its platforms and has qualified both ROS Indigo (Ubuntu 14.x) and ROS Jade (Ubuntu 15.x) releases. Since these platforms are not meant to cater only for robotics use-cases, the onboard eMMC would not be always sufficient to run the ginormous amount of code that accompanies ROS. But an external SD card can easily be partitioned and elaborate instructions to do this have been published at this link. The link is in fact a comprehensive tutorial on how to get going with ROS on an Inforce platform based on Snapdragon 600 processor but is also applicable to platforms from Inforce based on Snapdragon 410 or 805 processors.

TurtleBot™ is a low-cost, personal robot kit with open-source software. It is possible to install ROS with TurtleBot support on an Inforce platform and control the teleoperation. Instructions for installation on a Snapdragon 410 processor based Inforce platform are available at this link. A video of the Turtlebot operating with an Inforce platform based on Snapdragon 600is available at this link.