# TQMa6UL Yocto BSP – Mirror & Build Documentation **Project ID:** TQMA6-YOCTO-2038 **Date:** 2026-03-01 **Target Hardware:** TQMa6UL-AB (i.MX6 UltraLite) on MBa6ULx Carrier **Yocto Version:** Scarthgap (5.0.11) LTS **Objective:** Create offline mirror for software approval, ensure 2038 compliance --- ## Overview This project addresses the requirement to migrate from legacy PTXdist-based BSP to Yocto Project for TQMa6UL hardware. The primary driver is Year 2038 compliance for military/long-term deployments. ### 2038 Problem Context The Year 2038 Problem (Y2K38) affects 32-bit systems using signed 32-bit time_t: - Maximum representable time: 03:14:07 UTC on 19 January 2038 - Systems will overflow and behave unpredictably after this date - Critical for military/aerospace systems with 15+ year service life ### Solution: Yocto Scarthgap + musl Yocto Scarthgap (5.0 LTS) with musl libc provides: - 64-bit time_t by default on 32-bit ARM (musl 1.2+) - Long-term support until April 2028+ - Comprehensive license manifests for approval ## Board Identification | Field | Value | |-------|-------| | **SoM** | TQMa6UL (sticker: `TQMA6U-AB`) | | **SoC** | NXP i.MX6 UltraLite (Cortex-A7, single core) | | **Carrier** | MBa6ULx | | **Machine** | `tqma6ul-multi-mba6ulx` | | **BSP Config** | `mainline` (**not** `imx`!) | > ⚠️ **Critical:** The TQMa6UL machines are **only** available in the `mainline` > config template. The `imx` config does NOT include this board. ## Verified Build Configuration *Tested 2026-03-01 on Debian 13 (Python 3.13):* ``` BB_VERSION = 2.8.0 BUILD_SYS = x86_64-linux NATIVELSBSTRING = universal TARGET_SYS = arm-tq-linux-musleabi MACHINE = tqma6ul-multi-mba6ulx DISTRO = spaetzle DISTRO_VERSION = 5.0.11 TUNE_FEATURES = arm vfp cortexa7 neon thumb callconvention-hard TARGET_FPU = hard ``` ### 2038 Compliance Status | Component | Version | 2038-safe? | Notes | |-----------|---------|-----------|-------| | **Kernel** | Mainline 6.x | ✅ | 64-bit time syscalls | | **musl libc** | 1.2+ | ✅ | 64-bit `time_t` since 1.2.0 | | **Userspace** | Scarthgap | ✅ | Rebuilt against 64-bit `time_t` | | **U-Boot** | Mainline | ✅ | No time_t issues in bootloader | > **Note:** This BSP uses **musl libc** (`arm-tq-linux-musleabi`), NOT glibc. > musl has provided 64-bit `time_t` unconditionally on all 32-bit architectures > since version 1.2.0 (February 2020). ## Documentation | Document | Description | |----------|-------------| | [2038 Compliance Analysis](docs/01-analysis/2038-problem-analysis.md) | Detailed 2038 risk assessment | | [Mirror Creation Guide](docs/02-mirror-creation/step-by-step-mirror-creation.md) | Step-by-step build instructions | | [License Summary](docs/03-license-analysis/license-summary.md) | License overview and compliance | | [License Table](docs/03-license-analysis/UT-license-table.csv) | CSV format for import | | [Air-Gapped Deployment](docs/04-deployment/corporate-network-deployment.md) | Offline build setup | ## Quick Start ```bash # 1. Clone git clone --recurse-submodules https://github.com/tq-systems/ci-meta-tq.git cd ci-meta-tq # 2. Setup export ACCEPT_FSL_EULA=1 export MACHINE=tqma6ul-multi-mba6ulx . ./setup-environment build_ut mainline echo 'ACCEPT_FSL_EULA = "1"' >> build_ut/conf/local.conf # 3. Fetch (for mirror creation) bitbake tq-image-small-debug --runall=fetch # 4. Build bitbake tq-image-small-debug ``` ## References - [TQ-Systems ci-meta-tq](https://github.com/tq-systems/ci-meta-tq) - [TQMa6UL Product Page](https://www.tq-group.com/en/products/tq-embedded/arm-architecture/tqma6ul/) - [Yocto Scarthgap Docs](https://docs.yoctoproject.org/5.0/) - [musl 64-bit time_t](https://musl.libc.org/time64.html)