3.1. Development Host

3.1.1. Overview

The Linux development host is a very important part of the development system. In general, this is the main interface between the software developer and the target system. The development host is used to store, build, and debug target code. This module will assume that the development host is a single Linux PC. However, different development host setups may be better for different use cases. For example, since Linux is relatively large and complex to build, it is not unusual to use a high-powered build server for Linux development.

../_images/Academy_Develop_Host_Sys.png

Component

Description

Linux PC

Used to build Linux. Recommended to be a dedicated machine (no Virtual Machines). Higher performance PCs enable more efficient development. The SDK is validated with Ubuntu 18.04.

TI EVM

Represents the target embedded system.

Serial Console

Provides console interaction between host and target. View debug output.

Micro SD Card

SDK default for storing embedded Linux system. Host writes Linux system to SD Card, and card is placed in the TI EVM to execute. This method can slow down iterative development. SD Card filesystems can be replaced by network/NFS, which allows for faster iteration.

Private Network

Used to quickly and efficiently copy between host and target. Helps protect public network from system under development. Enables NFS, TFTP, and other network functions.

Public Network

Access to downloads, git repos, servers, etc.

3.1.2. Setting Up the Development Host

A dedicated Linux machine with the highest performance possible is recommended. More processors and higher performance help to speed up Linux and Yocto builds in particular. RAM and hard disk space are also important features to consider, since Yocto builds can consume a lot of memory.

Virtual Machines (VMs) can be used instead of dedicated machines, but they are not recommended. VMs can have connectivity issues with the target EVM. The relatively low performance of VMs also causes Linux and Yocto builds to take longer, and the limited disk space can cause problems with Yocto builds.

It is helpful for a development host to have at least two Ethernet interfaces. This connectivity allows simultaneous connection to the outside world and the target system, without having to put the target system directly on the public network.

One thing to consider is how to assign an IP address to the target. An IP address can be assigned to the target a few different ways:

  1. The simplest is using a router with DHCP enabled. Connecting the host and target to the router with the DHCP server will allow each to get an IP address.

  2. Another option is to directly connect the host and target (no router needed) and run a DHCP server on the host. This is pretty easy on Linux using the ISC DHCP Server.

  3. The last option is to use direct connect with static IP addresses.

3.1.3. Basic Setup Steps

Here are the steps to set up a basic Linux Development host:

  1. Obtain a PC to use as the development host.

  2. Add a second network interface if desired.

  3. Install Ubuntu 18.04.

  4. Set up public and private networks.

  5. Download and install the SDK.

  6. Set up and configure the SDK.

Follow the instructions for installing the SDK mentioned above. After Ubuntu is installed per the steps above, please run the following command in an Ubuntu terminal to install additional packages. These packages are required for compiling U-Boot and Kernel as detailed in the following sections.

$ sudo apt update
$ sudo apt install build-essential bison flex libssl-dev libncurses-dev u-boot-tools