Professional Yocto Embedded Development Template with AI IDE Integration
A comprehensive template project demonstrating professional Yocto embedded development workflows with AI IDE integration, optimized for Dynamic Devices ARM64 boards.
This project showcases a complete embedded development workflow that includes:
- Cross-compilation for ARM64 targets (Dynamic Devices boards)
- AI IDE integration (Cursor, VS Code) with full IntelliSense
- Remote debugging with GDB over SSH
- Yocto BitBake recipe for production integration
- Automated deployment and testing workflows
- Professional build system with CMake
- Dynamic Devices Edge EInk (imx93-jaguar-eink) - E-Ink display applications
- Dynamic Devices Edge AI (imx8mm-jaguar-sentai) - AI audio processing
- Generic ARM64 Yocto-based systems
# Install development tools
sudo apt-get update
sudo apt-get install -y \
build-essential cmake git sshpass rsync \
gcc-aarch64-linux-gnu g++-aarch64-linux-gnu \
gdb-multiarch libgpiod-dev
# Install Cursor IDE (recommended for AI features)
# Download from: https://cursor.sh/
# Clone the repository
git clone https://github.com/DynamicDevices/hello-world-yocto-ai-dev.git
cd hello-world-yocto-ai-dev
# Open in Cursor IDE
cursor . # or code . for VS Code
# 1. Open project in Cursor IDE
cursor .
# 2. Build with IntelliSense integration (Ctrl+Shift+B)
./scripts/build_native.sh
# 3. Set breakpoints by clicking in code editor
# 4. Press F5 β "Debug on Target Board" for remote debugging
# 5. Ask Cursor AI: "Explain this debugging output"
# Build and test locally
./scripts/build_native.sh
cd build && ./hello_world_test --quick
./hello_world_app --demo
# Set target board IP (optional - defaults to 62.3.79.162)
export TARGET_IP="your.board.ip.address"
# Deploy to target board
./scripts/deploy_to_target.sh
# Run comprehensive tests on target
./scripts/test_on_target.sh
- Edit code with full IntelliSense support
- Build and test natively:
./scripts/build_native.sh
- Run local tests:
cd build && ./hello_world_test --all
- Deploy and test:
./scripts/test_on_target.sh
- Interactive debugging: Use VS Code/Cursor debug configuration
- Visual debugging: Click to set breakpoints, inspect variables
- One-click workflow: Press F5 β "Debug on Target Board"
- Automatic setup: Builds, deploys, and connects to target automatically
- AI assistance: Ask Cursor to explain debugging output and suggest fixes
- Live debugging: Step through code running on actual ARM64 hardware
hello-world-yocto-ai-dev/
βββ include/ # Header files
β βββ common.h # Common definitions and macros
β βββ hello_lib.h # Main library interface
β βββ system_info.h # System information utilities
βββ src/ # Source code
β βββ hello_lib.c # Main library implementation
β βββ system_info.c # System information functions
β βββ main.c # Main application
β βββ test_main.c # Test suite
β βββ demo_main.c # Interactive demo
βββ scripts/ # Build and deployment scripts
β βββ build_native.sh # Native compilation
β βββ build_for_target.sh # Cross-compilation
β βββ deploy_to_target.sh # Deployment automation
β βββ test_on_target.sh # Remote testing
β βββ *debug*.sh # Debug session management
βββ .vscode/ # VS Code/Cursor configuration
β βββ c_cpp_properties.json # IntelliSense setup
β βββ tasks.json # Build tasks
β βββ launch.json # Debug configurations
β βββ settings.json # Workspace settings
βββ yocto/ # Yocto integration
β βββ recipes-examples/ # BitBake recipe
βββ docs/ # Documentation
βββ CMakeLists.txt # Build system
The project uses CMake with support for:
- Native compilation for development
- Cross-compilation for ARM64 targets
- Debug builds with symbols for remote debugging
- Machine-specific configurations
- Library dependencies (libgpiod, etc.)
Target | Description |
---|---|
hello_world_app |
Main application with CLI interface |
hello_world_test |
Comprehensive test suite |
hello_world_demo |
Interactive feature demonstration |
libhello_world.so |
Shared library |
libhello_world.a |
Static library |
- Quick validation tests for CI/CD
- Comprehensive functionality testing
- GPIO hardware testing (if available)
- System information validation
- Cross-platform compatibility checks
# Local testing
./scripts/build_native.sh
cd build && ./hello_world_test --all --verbose
# Target testing
./scripts/test_on_target.sh
# Specific test categories
./hello_world_test --gpio --verbose
./hello_world_test --system --verbose
One-Click Debugging Workflow:
- Set breakpoints: Click in the gutter next to line numbers
- Press F5: Select "Debug on Target Board"
- Debug visually: Inspect variables, step through code, view call stack
- AI assistance: Ask Cursor to explain values and suggest fixes
Configuration | Purpose | How to Use |
---|---|---|
Debug on Target Board | Remote ARM64 debugging | Press F5 β Select this option |
Debug Native App | Local development debugging | Press F5 β For local testing |
Debug Native Tests | Test suite debugging | Press F5 β Debug test failures |
Attach to Target Process | Attach to running process | For debugging live applications |
- β Breakpoint management: Click to set/remove, conditional breakpoints
- β Variable inspection: Watch window, locals panel, hover values
- β Step-by-step execution: F10 (step over), F11 (step into), Shift+F11 (step out)
- β Call stack navigation: Click through function calls
- β Memory view: Inspect raw memory contents
- β AI code analysis: Ask Cursor to explain complex debugging scenarios
# Manual GDB session (optional - usually use F5 in Cursor)
gdb-multiarch build_debug_target/hello_world_app
(gdb) target remote 62.3.79.162:2345
(gdb) continue
The project includes a complete BitBake recipe for integration with Yocto:
# Copy recipe to meta-dynamicdevices layer
cp yocto/recipes-examples/hello-world-yocto-ai-dev/hello-world-yocto-dev_git.bb \
/path/to/meta-dynamicdevices/recipes-examples/hello-world-yocto-ai-dev/
# Add to image
IMAGE_INSTALL_append = " hello-world-yocto-dev"
- Automatic dependency management
- Machine-specific configurations
- Development tools packaging
- Documentation installation
- Security hardening
- SoC: NXP i.MX93 (ARM Cortex-A55)
- Features: 6-color E-Ink display, low power
- GPIO: libgpiod v2.x support
- Use Case: E-paper applications, IoT displays
- SoC: NXP i.MX8M Mini (ARM Cortex-A53)
- Features: Audio processing, AI acceleration
- Audio: TAS2563 codec with PDM microphones
- Use Case: AI audio processing, voice applications
- π§ AI Code Assistance: Ask Cursor to explain code, suggest fixes, generate functions
- π Intelligent IntelliSense: Cross-compilation aware with ARM64 symbol resolution
- π Visual Remote Debugging: One-click F5 debugging on target hardware
- β‘ Real-time Error Detection: AI-powered error analysis and fix suggestions
- π Automated Workflows: Build, deploy, test, and debug with single commands
- π± Cross-Architecture Navigation: Jump between native and ARM64 code seamlessly
- π― Cursor (Recommended - AI-first development environment)
- π Visual Studio Code with AI extensions (GitHub Copilot, etc.)
- π§ Any LSP-compatible IDE with AI assistance capabilities
- Ask AI: "How do I add GPIO control?" β Get complete code examples
- Debug with AI: "Why is this ARM64 assembly failing?" β Get detailed explanations
- Code Review: "Review this embedded C code" β Get best practice suggestions
- Error Resolution: "Fix this cross-compilation error" β Get specific solutions
- AI IDE Setup Guide - Complete Cursor/VS Code integration setup
- Workspace Development Guide - Professional workflow setup
- Remote Debugging Guide - Advanced GDB debugging
- Hardened compilation flags
- Stack protection enabled
- FORTIFY_SOURCE protection
- RELRO and BIND_NOW linking
This project is licensed under the GNU General Public License v3.0 - see the LICENSE file for details.
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests for new functionality
- Submit a pull request
- Email: [email protected]
- Maintainer: Alex J Lennon [email protected]
- Issues: GitHub Issues
- Website: dynamicdevices.co.uk
Dynamic Devices Ltd specializes in professional embedded Linux solutions for edge computing platforms, providing comprehensive hardware and software solutions for IoT, AI, and industrial applications.
Ready to start embedded development? Clone this repository and follow the Quick Start guide to get up and running in minutes!