Development Environment

This page documents the end-to-end development tooling used across hardware, firmware, mechanical, edge software, and cloud for EsoCore, with rationale and minimum setup.


PCB Design and Schematics

  • Primary toolchain: Altium Designer

  • Why: Professional EDA suite with comprehensive schematic capture, PCB layout, 3D visualization, and manufacturing output generation. Industry-standard tool with extensive component libraries and advanced features.

    High-Speed Design Capabilities

    Altium Designer excels in high-speed routing and signal integrity with industry-leading features:

    • Advanced Length Matching: Intelligent algorithms ensure precise signal timing in high-speed interfaces, critical for reliable communication
    • Comprehensive Signal Integrity: Advanced verification tools for high-speed designs including:
      • Differential pair routing with automatic phase matching
      • Impedance control and verification
      • Crosstalk analysis and mitigation
      • Eye diagram simulation and analysis
    • Real-time Verification: Continuous verification during routing ensures signal integrity throughout the design process
  • Artifacts:

    • Source: .PcbDoc, .SchDoc
    • Manufacturing: Gerbers, drill files, IPC-356 netlist, ODB++ (preferred), Pick-and-Place, BOM (CSV/XLSX)
  • Collaboration: Exported ODB++/Gerbers stored in GitHub Releases for traceability, with schematic/PCB sources versioned in Git.

Enclosures and Mechanical

  • Primary toolchain: Autodesk Fusion 360
  • Why: Professional parametric 3D modeler with strong STEP interoperability, integrated CAM capabilities, generative design, and cloud collaboration for mechanical design.
  • Artifacts:
    • Exchange: .step (AP214/AP242), .stl for 3D printing, drawings as .dxf/.pdf
    • 3D print profiles: PrusaSlicer/Cura project files when applicable
  • Conventions: All mechanical interfaces (mounting holes, clearances, keep-outs) referenced to PCB origin and exported as STEP for ECAD-MCAD sync.

Sensor Firmware (MCUs on Sensor Modules)

  • Reference MCU family: STMicroelectronics STM32 (e.g., STM32G0/G4/F4/H7 as required)
  • IDE/tooling:
    • Standard: STM32CubeIDE (required for official MCU projects)
    • Alternatives (optional): VS Code + Cortex-Debug + CMake with arm-none-eabi-gcc; CLion with embedded plugin
  • Utilities:
    • STM32CubeMX for clock/peripheral init code generation
    • ST-LINK CLI (ST-LINK_CLI or STM32_Programmer_CLI) for flashing/debug
    • Serial console: screen/minicom
    • Live plotting: STM32CubeMonitor (modern replacement for legacy STMStudio)
  • Why: STM32 ecosystem offers robust HAL, long-term availability, and wide community support. The GCC toolchain is open, stable, and reproducible.
  • Build:
    • Compiler: gcc-arm-none-eabi (10+)
    • CMake presets for Debug/Release, -ffunction-sections -fdata-sections -Wl,--gc-sections
    • Unit tests on host where feasible (pure C modules)
  • Debug/flash:
    • ST-LINK V2/V3 over SWD; OpenOCD or STM32CubeProgrammer
  • Artifacts: .elf, .bin, .hex, optional .dfu

Edge Device Software (Gateway)

  • OS target: Zephyr RTOS on STM32 (Cortex-M4/M7)
  • Languages: C/C++ for firmware and services; Python/Node.js optional for host-side tooling
  • Why: Zephyr provides deterministic real-time scheduling, mature drivers, networking (when needed), secure OTA patterns, and an MCU-focused footprint with long-term support. Tooling is standardized around CMake and west for reproducible builds and CI.
  • Tooling:
    • Build system: Zephyr (CMake + west); Ninja as default generator
    • Cross-compile: Zephyr SDK or arm-none-eabi-gcc toolchain; optional Docker for reproducibility
    • Artifacts: firmware images (.elf/.bin/.hex/.dfu) with versioned metadata
  • Debugging: gdb via OpenOCD/J-Link, RTT/SWO logging, semihosting; on-target tracing where applicable

Edge Device Hardware & OS prerequisites

  • STM32-based main board (Cortex-M4/M7) with Ethernet (PoE optional), microSD, RS-485, RTC, and secure boot/OTA pathway.
  • Tooling on dev host: Zephyr SDK, west, CMake/Ninja, OpenOCD or J-Link tools; Python runtime for scripting.

Cloud / Django REST Framework Server + Nuxt.js Portal

  • Stack: Django REST Framework Server (Python) + Nuxt.js Portal (Node.js/Vue.js)
  • Editors: VS Code or Cursor
  • Why: Django REST Framework provides scalable backend with REST APIs, RBAC, and database management. Nuxt.js delivers modern responsive frontend with real-time dashboards, accelerating time-to-market.
  • Local dev requirements:
    • Django: Python 3.10–3.11, PostgreSQL/MySQL, Redis
    • Nuxt.js: Node.js 18 LTS, pnpm
    • Development tools: Poetry for Python, VS Code/Cursor
  • Coding standards:
    • Python: ruff + black; JS/TS: eslint + prettier
    • Type-annotate public APIs; avoid any in TS
  • Artifacts: App packages, migration scripts, REST API specs (kept in docs/), CI pipelines

Editors and Productivity

  • VS Code / Cursor: Shared workspace settings and recommended extensions (C/C++, Python, Docker, Markdown, YAML, GitLens, Cortex-Debug).
  • GitHub: All source is versioned on GitHub; issues and PRs are the canonical workflow. Use feature branches and conventional commits where possible.

Data and Testing

  • Data formats: See the Data Format Specification page for CSV/JSON schemas.
  • Tests:
    • Firmware: on-target tests with assertions; host-side unit tests for libraries
    • Cloud: pytest for Python apps; Playwright for UI if applicable
    • Hardware: bring-up checklists and boundary tests (see Testing & Validation)

Minimum Setup Per Role

  • Hardware engineer:
    • Altium Designer + PCB libraries
    • Fusion 360 for mechanical fit checks
    • GitHub access and LFS for large binaries if required
  • Firmware engineer:
    • STM32CubeIDE (standard), arm-none-eabi-gcc, ST-LINK, CubeMX, STM32CubeProgrammer, STM32CubeMonitor
    • Serial console tools; OpenOCD (optional). VS Code toolchain optional.
  • Edge/platform engineer:
    • Dev host (Linux/macOS/Windows) with Zephyr SDK and cross-compile toolchains
    • west, CMake/Ninja, OpenOCD or J-Link, Python 3.11; optional Docker
  • Cloud engineer:
    • Backend: Python 3.11, Poetry, PostgreSQL/MySQL, Redis; VS Code/Cursor
    • Frontend: Node.js 18 LTS, pnpm, Nuxt.js; VS Code/Cursor

Rationale Summary

  • Altium Designer: professional EDA suite with comprehensive capabilities and industry-standard features.
  • Autodesk Fusion 360: professional parametric 3D modeler with integrated CAM, generative design, and broad vendor compatibility via STEP.
  • STM32 + GCC/CMake: stable, cost-effective, open toolchain with excellent peripherals and community.
  • Zephyr RTOS on MCU: deterministic real-time behavior, small footprint, maintained drivers/networking/filesystem, and established OTA strategies.
  • Django REST Framework Server + Nuxt.js Portal: scalable backend with REST APIs, RBAC, and modern responsive frontend with real-time capabilities.
  • GitHub: unified collaboration, reviews, issues, CI, and releases.

Repositories and Version Control

  • Hosting: GitHub organization repositories. Use branches per feature; PRs with mandatory reviews.
  • Binaries: Release artifacts (firmware .bin, ECAD ODB++, STEP/STL) attached to GitHub Releases for traceability.
  • Versioning: Firmware and software follow SemVer; hardware uses revision codes (A, B, C...).