2026-03-01 19:48:45 +00:00
|
|
|
|
# TQMa6UL Yocto BSP – Mirror & Build Documentation
|
2026-03-01 18:32:44 +00:00
|
|
|
|
|
2026-03-01 19:48:45 +00:00
|
|
|
|
**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
|
2026-03-01 18:39:21 +00:00
|
|
|
|
**Objective:** Create offline mirror for software approval, ensure 2038 compliance
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## Overview
|
|
|
|
|
|
|
2026-03-01 19:48:45 +00:00
|
|
|
|
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.
|
2026-03-01 18:39:21 +00:00
|
|
|
|
|
|
|
|
|
|
### 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
|
|
|
|
|
|
|
2026-03-01 19:48:45 +00:00
|
|
|
|
### Solution: Yocto Scarthgap + musl
|
2026-03-01 18:39:21 +00:00
|
|
|
|
|
2026-03-01 19:48:45 +00:00
|
|
|
|
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
|
2026-03-01 18:39:21 +00:00
|
|
|
|
|
2026-03-01 19:48:45 +00:00
|
|
|
|
## Board Identification
|
2026-03-01 18:39:21 +00:00
|
|
|
|
|
2026-03-01 19:48:45 +00:00
|
|
|
|
| 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`!) |
|
2026-03-01 18:39:21 +00:00
|
|
|
|
|
2026-03-01 19:48:45 +00:00
|
|
|
|
> ⚠️ **Critical:** The TQMa6UL machines are **only** available in the `mainline`
|
|
|
|
|
|
> config template. The `imx` config does NOT include this board.
|
2026-03-01 18:39:21 +00:00
|
|
|
|
|
2026-03-01 19:48:45 +00:00
|
|
|
|
## Verified Build Configuration
|
2026-03-01 18:39:21 +00:00
|
|
|
|
|
2026-03-01 19:48:45 +00:00
|
|
|
|
*Tested 2026-03-01 on Debian 13 (Python 3.13):*
|
2026-03-01 18:39:21 +00:00
|
|
|
|
|
2026-03-01 19:48:45 +00:00
|
|
|
|
```
|
|
|
|
|
|
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
|
|
|
|
|
|
```
|
2026-03-01 18:39:21 +00:00
|
|
|
|
|
2026-03-01 19:48:45 +00:00
|
|
|
|
### 2038 Compliance Status
|
2026-03-01 18:39:21 +00:00
|
|
|
|
|
2026-03-01 19:48:45 +00:00
|
|
|
|
| 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 |
|
2026-03-01 18:39:21 +00:00
|
|
|
|
|
2026-03-01 19:48:45 +00:00
|
|
|
|
> **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).
|
2026-03-01 18:39:21 +00:00
|
|
|
|
|
2026-03-01 19:48:45 +00:00
|
|
|
|
## Documentation
|
2026-03-01 18:39:21 +00:00
|
|
|
|
|
2026-03-01 19:48:45 +00:00
|
|
|
|
| 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 |
|
2026-03-01 18:39:21 +00:00
|
|
|
|
|
2026-03-01 19:48:45 +00:00
|
|
|
|
## Quick Start
|
2026-03-01 18:39:21 +00:00
|
|
|
|
|
2026-03-01 19:48:45 +00:00
|
|
|
|
```bash
|
|
|
|
|
|
# 1. Clone
|
|
|
|
|
|
git clone --recurse-submodules https://github.com/tq-systems/ci-meta-tq.git
|
|
|
|
|
|
cd ci-meta-tq
|
2026-03-01 18:39:21 +00:00
|
|
|
|
|
2026-03-01 19:48:45 +00:00
|
|
|
|
# 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
|
2026-03-01 18:39:21 +00:00
|
|
|
|
|
2026-03-01 19:48:45 +00:00
|
|
|
|
# 3. Fetch (for mirror creation)
|
|
|
|
|
|
bitbake tq-image-small-debug --runall=fetch
|
2026-03-01 18:39:21 +00:00
|
|
|
|
|
2026-03-01 19:48:45 +00:00
|
|
|
|
# 4. Build
|
|
|
|
|
|
bitbake tq-image-small-debug
|
|
|
|
|
|
```
|
2026-03-01 18:39:21 +00:00
|
|
|
|
|
2026-03-01 19:48:45 +00:00
|
|
|
|
## References
|
2026-03-01 18:39:21 +00:00
|
|
|
|
|
2026-03-01 19:48:45 +00:00
|
|
|
|
- [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)
|