Skip to content

Quick Start 03 Development Environment Setup

Alex J Lennon edited this page Oct 10, 2025 · 2 revisions

Development Environment Setup

⏱️ Time Required: 15-30 minutes
Prerequisites: Board validated from Quick-Start-02-First-Boot-Validation

🛠️ Essential Development Tools

1. Host Computer Setup (10 minutes)

Required Tools Installation

# Ubuntu/Debian
sudo apt update
sudo apt install -y git curl wget build-essential python3-pip
sudo apt install -y minicom screen picocom  # Serial terminal tools

# Install kas (Yocto build tool)
pip3 install --user kas

# Install fioctl (Foundries.io CLI)
curl -LO https://github.com/foundriesio/fioctl/releases/latest/download/fioctl-linux-amd64
sudo install fioctl-linux-amd64 /usr/local/bin/fioctl
rm fioctl-linux-amd64

Git Configuration

# Configure git (required for Yocto builds)
git config --global user.name "Your Name"
git config --global user.email "your.email@company.com"

# Generate SSH key for GitHub/Foundries.io access
ssh-keygen -t ed25519 -C "your.email@company.com"
# Press Enter for default location, set passphrase if desired

# Display public key to add to GitHub/Foundries.io
cat ~/.ssh/id_ed25519.pub

2. Board Development Access (5 minutes)

SSH Key Setup for Passwordless Access

# Copy SSH key to board (replace with your board's IP)
ssh-copy-id fio@[BOARD_IP_ADDRESS]

# Test passwordless access
ssh fio@[BOARD_IP_ADDRESS] 'echo "SSH access working!"'

Development User Setup on Board

# SSH to board
ssh fio@[BOARD_IP_ADDRESS]

# Add fio user to sudo group (if not already)
sudo usermod -a -G sudo fio

# Configure sudo without password for development
echo "fio ALL=(ALL) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/fio

# Test sudo access
sudo echo "Sudo access working!"

3. Project Repository Access (10 minutes)

Clone Meta-DynamicDevices Repository

# On your development computer
cd ~/workspace  # or your preferred development directory
git clone https://github.com/DynamicDevices/meta-dynamicdevices.git
cd meta-dynamicdevices

# Initialize submodules
git submodule update --init --recursive

Foundries.io Authentication (if using Foundries.io)

# Login to Foundries.io
fioctl login

# Set default factory (replace with your factory name)
fioctl config set factory [YOUR_FACTORY_NAME]

# Test authentication
fioctl targets list

🔧 Development Workflow Setup

1. Build Environment Validation

# Test kas build environment
cd meta-dynamicdevices
kas shell kas/lmp-dynamicdevices.yml -c "bitbake --version"

# Expected output: BitBake Build Tool Core version X.X.X

2. Board Programming Script Setup

# Make programming script executable
chmod +x scripts/fio-program-board.sh

# Test script (dry run - won't actually program)
./scripts/fio-program-board.sh --help

# Test with your board (replace with your machine type)
./scripts/fio-program-board.sh --machine imx8mm-jaguar-sentai --dry-run

3. Serial Console Automation

# Create convenient serial connection script
cat > ~/connect-board.sh << 'EOF'
#!/bin/bash
# Auto-detect and connect to Dynamic Devices board
DEVICE=$(ls /dev/ttyUSB* 2>/dev/null | head -1)
if [ -n "$DEVICE" ]; then
    echo "Connecting to $DEVICE..."
    screen $DEVICE 115200
else
    echo "No USB serial device found. Check board connection."
fi
EOF

chmod +x ~/connect-board.sh

# Test connection
~/connect-board.sh

🎯 IDE and Editor Setup

VS Code Configuration (Recommended)

# Install VS Code extensions for embedded development
code --install-extension ms-vscode.cpptools
code --install-extension ms-python.python
code --install-extension yzhang.markdown-all-in-one
code --install-extension ms-vscode-remote.remote-ssh

# Open project in VS Code
code meta-dynamicdevices/

Remote Development Setup

# Configure VS Code for remote SSH development
# File -> Preferences -> Settings -> Search "remote ssh"
# Add board IP to SSH config:

cat >> ~/.ssh/config << EOF
Host jaguar-board
    HostName [BOARD_IP_ADDRESS]
    User fio
    IdentityFile ~/.ssh/id_ed25519
EOF

# Now you can connect via: code --remote ssh-remote+jaguar-board /home/fio/

✅ Environment Validation

Quick Test Suite

# 1. Test build environment
cd meta-dynamicdevices
kas shell kas/lmp-dynamicdevices.yml -c "echo 'Build environment OK'"

# 2. Test board connection
ssh fio@[BOARD_IP_ADDRESS] 'uname -a'

# 3. Test Foundries.io access (if applicable)
fioctl targets list | head -5

# 4. Test serial connection
~/connect-board.sh  # Should connect to board console

📋 Development Environment Checklist

Mark complete when verified:

  • Host tools installed - kas, fioctl, git, build tools
  • SSH access working - Passwordless access to board
  • Repository cloned - meta-dynamicdevices with submodules
  • Build environment - kas can initialize build shell
  • Serial console - Automated connection script working
  • IDE configured - VS Code or preferred editor setup
  • Authentication - GitHub/Foundries.io access configured

🚨 Common Setup Issues

Issue Symptoms Solution
kas not found Command not found Add ~/.local/bin to PATH
SSH key rejected Permission denied Check key format, add to GitHub/Foundries.io
Build fails Missing dependencies Install build-essential, check disk space
Serial no permission Permission denied Add user to dialout group: sudo usermod -a -G dialout $USER
fioctl auth fails Invalid credentials Re-run fioctl login, check factory name

🔄 Next Steps

Environment ready? → Start with Development-Workflows-Building-and-Flashing

Want to customize? → See Feature-Guides-Audio-Development for specific functionality

Hardware integration? → Check Hardware-Reference-Edge-EInk-Board for your board


💡 Pro Tip: Save your SSH config and build environment setup - you'll reuse this configuration across multiple projects!

Clone this wiki locally