Skip to content

Professional Yocto BSP Layer for Dynamic Devices Edge Computing Platforms - AI Audio Processing, E-Ink Displays, Power Management, Wireless Connectivity, i.MX8MM/i.MX93 Support

License

Notifications You must be signed in to change notification settings

DynamicDevices/meta-dynamicdevices

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

meta-dynamicdevices

Professional Yocto Application Layer for Dynamic Devices Edge Computing Platforms

License: GPL v3 License: Commercial Yocto Compatible Foundries.io LMP

Yocto Layer Validation KAS Build CI GitHub Issues GitHub Pull Requests Latest Release YP Compliance Ready Security Scanning

This application layer provides comprehensive middleware and applications for Dynamic Devices Edge Computing platforms, featuring advanced audio processing, environmental sensing, wireless connectivity, and power management capabilities.

Note: This layer depends on separate submodules:

πŸ” Enterprise-Grade Security & Device Management

Dynamic Devices board platforms, in partnership with Foundries.io, deliver a comprehensive security-first approach to edge computing with professional-grade device lifecycle management.

πŸ›‘οΈ Secure Boot Foundation

  • Hardware Root of Trust: i.MX8MM/i.MX93 High Assurance Boot (HAB) with secure key storage
  • Verified Boot Chain: U-Boot β†’ Linux kernel β†’ Root filesystem integrity validation
  • Anti-Rollback Protection: Prevents downgrade attacks through secure version control
  • Encrypted Storage: LUKS disk encryption for sensitive data protection

🌐 Remote Device Management

  • Zero-Touch Provisioning: Automated device registration and configuration
  • Secure Remote Access: VPN-less device connectivity through Foundries.io gateway
  • Fleet Monitoring: Real-time device health, performance metrics, and diagnostics
  • Role-Based Access Control: Fine-grained permissions for development teams

πŸ“¦ Container-First Architecture

  • Docker Integration: Native container runtime with hardware-accelerated features
  • Application Isolation: Secure sandboxing for customer applications
  • Resource Management: CPU, memory, and GPU allocation controls
  • Multi-Tenant Support: Run multiple isolated customer workloads safely

πŸš€ Over-the-Air (OTA) Updates

  • Atomic Updates: All-or-nothing deployment prevents bricked devices
  • Rollback Capability: Automatic recovery from failed updates
  • Delta Updates: Bandwidth-efficient incremental deployments
  • Staged Rollouts: Controlled deployment to device groups with A/B testing
  • Continuous Delivery: Direct integration with CI/CD pipelines

πŸ“Š Production-Ready Benefits

  • πŸ“ˆ Scalability: Manage thousands of devices from a single dashboard
  • πŸ” Observability: Comprehensive logging, metrics, and alerting
  • πŸ› οΈ DevOps Integration: GitOps workflow for configuration and application deployment
  • 🏒 Enterprise Support: Professional SLA with Foundries.io partnership
  • 🌍 Global Infrastructure: Edge-optimized content delivery network

πŸ’Ό Customer Application Deployment

# Deploy containerized applications securely
fioctl targets update --apps myapp:v1.2.3 production-fleet

# Monitor deployment across device fleet
fioctl devices list --factory mycompany

# Secure remote debugging (development only)
fioctl devices access mydevice-001

Learn More: Foundries.io Platform Overview | Security Whitepaper | Getting Started Guide

πŸ“‹ Quick Start - Get Running in Minutes

πŸš€ Ready to Go: All boards come with pre-built production images and comprehensive programming packages for immediate deployment.

⚑ Zero to Running Board in 4 Steps

Step 1: Download Programming Package πŸ“¦

# πŸš€ EASIEST: One-time setup, then ultra-simple usage
./scripts/fio-program-board.sh --configure  # Set factory & machine defaults (auto-installs fioctl if needed)
echo 'factory: dynamic-devices' >> ~/.config/fioctl.yaml  # Set fioctl default
./scripts/fio-program-board.sh --machine imx93-jaguar-eink --program  # Download + program!

# πŸ“¦ Download only (manual programming)
./scripts/fio-program-board.sh --machine imx93-jaguar-eink  # Uses latest target automatically

# 🎯 Explicit control (all options)
./scripts/fio-program-board.sh --factory dynamic-devices --machine imx93-jaguar-eink 1975 --force

# πŸͺŸ Windows users: Use the batch file version (Work in Progress)
scripts\fio-program-board.bat /configure  # Basic features available, latest target detection needs fixing

# Alternative: Manual download from GitHub CI
# Visit: https://github.com/DynamicDevices/meta-dynamicdevices/actions/workflows/kas-build-ci.yml
# Download: programming-package-[your-board-name].zip

Step 2: Setup Board for Programming πŸ”Œ

# 1. Power OFF your board
# 2. Set DIP switches to download/recovery mode (see board manual)
# 3. Connect USB cable between board and your computer
# 4. Power ON your board

Step 3: Program Your Board ⚑

# πŸš€ AUTOMATIC: If you used --program flag in Step 1, programming starts immediately!
# No waiting - just make sure board is in download mode before running

# πŸ”„ CONTINUOUS: For multiple boards, use --continuous flag
# Programs boards in sequence with tracking: Board #1, #2, #3...

# πŸ“‹ MANUAL: If you downloaded only, program manually:
cd downloads/target-*-imx93-jaguar-eink/  # (or your board)
sudo ./program-imx93-jaguar-eink.sh --flash

# πŸ“¦ MANUAL DOWNLOAD: Using GitHub CI packages
unzip programming-package-imx8mm-jaguar-sentai.zip  # (or your board)
cd programming-package-imx8mm-jaguar-sentai/
sudo ./program-imx8mm-jaguar-sentai.sh --flash

# βš™οΈ BOOTLOADER ONLY: For development/recovery
sudo ./program-[your-board-name].sh --bootloader-only

# πŸ“Š PERFORMANCE: Programming takes ~1-3 minutes with timing display
# πŸ”§ COMPATIBILITY: Uses included UUU tool version for reliability

Step 4: First Boot πŸŽ‰

# 1. Set DIP switches back to normal boot mode
# 2. Power cycle the board
# 3. Board boots to login prompt (user: root, no password)
# 4. Connect Ethernet or setup WiFi
# 5. Start developing immediately!

# Verify everything works
docker --version      # Docker ready for containers
iwconfig              # WiFi available  
systemctl status       # All services running

🎯 What You Get Out-of-the-Box

  • Full Linux System: Yocto-based embedded Linux with all drivers
  • Container Runtime: Docker pre-installed for application deployment
  • Networking: WiFi, Bluetooth, Ethernet configured and ready
  • Development Tools: SSH, package managers, debugging utilities
  • Security: Secure boot chain and encrypted storage support
  • Remote Management: Foundries.io integration for fleet management

Supported Boards

Board Machine Platform Description
Edge AI imx8mm-jaguar-sentai i.MX8MM AI audio STT/TTS platform
Edge EInk imx93-jaguar-eink i.MX93 Low-power e-ink controller
Edge EV imx8mm-jaguar-phasora i.MX8MM Energy management
Edge GW imx8mm-jaguar-inst i.MX8MM Communications gateway

Build & Flash

# Set target machine
export KAS_MACHINE=imx8mm-jaguar-sentai

# Build image
./scripts/kas-build-base.sh

# Program board
./scripts/program.sh

πŸ“š Documentation

Hardware Documentation

πŸš€ Key Features of fio-program-board.sh

Feature Description Example
🎯 Auto-Latest Target Uses latest build automatically --machine imx93-jaguar-eink
🏭 Default Factory Uses fioctl's default factory No --factory needed
πŸ“¦ Auto-Install fioctl Installs fioctl if not found Homebrew/snap/manual
⚑ Auto-Programming Download + program in one command --program flag
πŸ”„ Continuous Mode Program multiple boards in sequence --continuous flag
πŸ’Ύ Smart Caching Skips re-downloading existing files Instant re-runs
⏱️ Performance Timing Shows download + programming time Real-time feedback
πŸ”§ i.MX93 Optimized Uses correct bootloader size No "image too large" errors
πŸͺŸ Windows Support Native batch file version (WIP) fio-program-board.bat
πŸ“ Auto-Organization Creates downloads/target-X-machine/ Clean file management

Programming Documentation

Development Guides

Developer Resources

⚑ Prerequisites

  • KAS - Use kas-container for reproducible builds
  • Docker - Container runtime for isolated build environment
  • USB-C Power - Required for proper board operation
  • UUU Tool - For board programming and recovery

πŸ”’ Licensing

This BSP layer is available under dual licensing:

πŸ”„ Continuous Integration

Our automated CI/CD pipeline builds and validates all board variants on every commit:

  • πŸš€ Automated Builds: Active board variants built in parallel using self-hosted runners
  • πŸ“¦ Programming Packages: Complete board programming artifacts generated automatically
  • πŸ§ͺ Multi-Layer Quality: Comprehensive validation across all code layers
  • 🎯 Multi-Board Matrix: Simultaneous builds for imx8mm and imx93 platforms
  • ⚑ Optimized Performance: Persistent cache and CPU-optimized parallel builds

πŸ” Comprehensive Quality & Security Validation

Our CI pipeline includes enterprise-grade validation across all layers:

Layer Checks Tools
Shell Scripts Syntax, best practices, security shellcheck via Docker
Yocto Recipes BB syntax, style, SRC_URI validation Custom validators
Layer Config Dependencies, priorities, collections BitBake compatibility
Yocto Compatible Official Yocto Project layer compatibility yocto-check-layer script
Device Trees DTS syntax, naming, indentation Custom DT checkers
Build System KAS configs, machine definitions Multi-environment testing
CVE Security Vulnerable packages, hardcoded secrets Security scanners
SBOM Generation Software Bill of Materials SPDX-compliant SBOM

πŸ”’ Security & CVE Validation

Vulnerability Scanning

  • 30+ Critical Packages: OpenSSL, glibc, BusyBox, SSH, curl, systemd, kernel, U-Boot
  • Version Analysis: Detection of pinned versions that may contain known vulnerabilities
  • Security Configuration: Validation of FORTIFY_SOURCE, security CFLAGS/LDFLAGS
  • Network Security: Detection of insecure HTTP/FTP downloads and configurations

Secret & Credential Detection

  • Hardcoded Secrets: Scans for passwords, API keys, tokens, certificates in recipes
  • Configuration Security: Identifies disabled security features and insecure settings
  • License Compliance: Validates LICENSE declarations and identifies proprietary components
  • Technical Debt: Tracks security-related TODOs and FIXMEs requiring attention

Build Security & Reproducibility

  • Reproducible Builds: Validates SOURCE_DATE_EPOCH configuration
  • Security Features: Checks for PAM, systemd, SELinux, SMACK, IMA integration
  • Debug Features: Warns about debug-tweaks and development features in production
  • Host Contamination: Prevents host system contamination in builds

πŸ“‹ SBOM & Supply Chain Transparency

SPDX-Compliant Documentation

  • SPDX 2.3 Standard: Industry-standard Software Bill of Materials format
  • Complete Inventory: All recipes, versions, licenses, and dependencies tracked
  • Package Manifests: Runtime package information from Yocto builds
  • Build Metadata: Machine type, configuration, commit hash, timestamps

Supply Chain Security

  • Artifact Inclusion: SBOM included in every programming package
  • Long-term Retention: 90-day artifact retention for compliance auditing
  • Multi-Build Coverage: Separate SBOMs for base and manufacturing tool builds
  • Traceability: Complete source-to-deployment component tracking

Compliance & Auditing

  • Regulatory Compliance: Supports software supply chain regulations
  • Vendor Management: Clear component sourcing and licensing information
  • Security Audits: Detailed vulnerability and component analysis
  • Risk Assessment: Enables comprehensive security risk evaluation

View Latest Builds β†’

πŸ›  Development

Professional Standards

  • Semantic versioning with detailed changelog
  • Comprehensive documentation in wiki
  • Professional recipe templates and best practices
  • Clear maintainer ownership and contact information

Contributing

  1. Review best practices guide
  2. Use recipe template for new components
  3. Update documentation and changelog
  4. Follow professional development standards

πŸ… Yocto Project Layer Information

Layer Details

Layer Origin & Purpose

This layer was created by Dynamic Devices Ltd to provide comprehensive board support for our Edge Computing platform family. The layer includes:

  • BSP Components: Device trees, kernel configurations, bootloader support
  • Hardware Drivers: Audio (TAS2563), power management (STUSB4500), sensors
  • Software Stack: Audio processing, connectivity, system services
  • Integration: Foundries.io LMP integration for secure OTA updates

Dependencies

Required Layers:

  • openembedded-core (meta)
  • meta-lmp-base (Foundries.io Linux microPlatform)
  • meta-lmp-bsp (Foundries.io BSP layer)
  • meta-openembedded/meta-oe
  • meta-openembedded/meta-networking
  • meta-openembedded/meta-python
  • meta-openembedded/meta-multimedia

Optional Layers:

  • meta-rust-bin (for Rust-based utilities)
  • meta-security (enhanced security features)

Version Requirements

  • Yocto Project: 5.0+ (Scarthgap) or 4.0+ (Kirkstone)
  • BitBake: 2.0+
  • Python: 3.8+
  • KAS: 3.0+ (recommended build tool)

Submitting Changes

  1. Fork the repository on GitHub
  2. Create a feature branch from main
  3. Follow coding standards and use provided templates
  4. Test changes with yocto-check-layer validation
  5. Submit pull request with detailed description
  6. Address review feedback promptly

Bug Reports & Issues

Layer Compatibility

This layer is designed to be compatible with other Yocto Project layers:

  • No QA Bypasses: All standard QA checks are enabled
  • Network Access: Only during do_fetch using BitBake fetcher APIs
  • Non-Invasive: Does not change system behavior without explicit configuration
  • Separation: Hardware, distro, and software components are properly separated
  • OpenEmbedded Registered: Official layer index entry

πŸ“ž Support


For detailed hardware specifications, software features, and development guides, please refer to the comprehensive wiki documentation.

About

Professional Yocto BSP Layer for Dynamic Devices Edge Computing Platforms - AI Audio Processing, E-Ink Displays, Power Management, Wireless Connectivity, i.MX8MM/i.MX93 Support

Topics

Resources

License

Contributing

Security policy

Stars

Watchers

Forks

Packages

No packages published

Contributors 3

  •  
  •  
  •