fix: correct machine, config, and C library references (verified by build test)
Critical corrections based on actual build test on 2026-03-01: 1. Machine: tqma6ulx-mba6ulx → tqma6ul-multi-mba6ulx (the -multi variant is the correct one for the MBa6ULx carrier) 2. Config: imx → mainline (TQMa6UL machines are NOT in the imx config, only in mainline) 3. Carrier: MBa6x → MBa6ULx (MBa6x is for the Quad/Dual, MBa6ULx is for the UltraLite) 4. C library: glibc 2.38 → musl 1.2+ (BSP uses musl: TARGET_SYS=arm-tq-linux-musleabi) 5. README rewritten with verified build output Verified: DISTRO=spaetzle 5.0.11, BB_VERSION=2.8.0
This commit is contained in:
144
README.md
144
README.md
@@ -1,16 +1,18 @@
|
||||
# TQMa6UL Yocto BSP Mirror Project
|
||||
# TQMa6UL Yocto BSP – Mirror & Build Documentation
|
||||
|
||||
**Project ID:** TQMA6-YOCTO-2038
|
||||
**Date:** 2026-03-01
|
||||
**Target Hardware:** TQMa6UL-AB (i.MX6 UltraLite) on MBa6x Carrier
|
||||
**Yocto Version:** Scarthgap (5.0) LTS
|
||||
**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.
|
||||
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
|
||||
|
||||
@@ -19,86 +21,88 @@ The Year 2038 Problem (Y2K38) affects 32-bit systems using signed 32-bit time_t:
|
||||
- Systems will overflow and behave unpredictably after this date
|
||||
- Critical for military/aerospace systems with 15+ year service life
|
||||
|
||||
### Solution: Yocto Scarthgap (5.0 LTS)
|
||||
### Solution: Yocto Scarthgap + musl
|
||||
|
||||
**Key Features:**
|
||||
- 64-bit time_t by default on 32-bit ARM (glibc 2.38+)
|
||||
- Linux Kernel 6.6 LTS (includes CONFIG_COMPAT_32BIT_TIME)
|
||||
- Long-term support until April 2028 (extendable)
|
||||
- Full source availability for audit
|
||||
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
|
||||
|
||||
**2038 Compliance Verification:**
|
||||
| Component | Version | 2038 Ready | Notes |
|
||||
|-----------|---------|------------|-------|
|
||||
| Linux Kernel | 6.6.y | ✅ | CONFIG_COMPAT_32BIT_TIME |
|
||||
| glibc | 2.38+ | ✅ | 64-bit time_t default |
|
||||
| Yocto | 5.0 (Scarthgap) | ✅ | Built-in 2038 support |
|
||||
| TQ BSP | scarthgap.TQ.ARM.BSP.0006 | ✅ | Verified with kernel 6.6 |
|
||||
## 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`!) |
|
||||
|
||||
## Repository Structure
|
||||
> ⚠️ **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):*
|
||||
|
||||
```
|
||||
tqma6-yocto-mirror/
|
||||
├── docs/
|
||||
│ ├── 01-analysis/ # 2038 analysis and requirements
|
||||
│ ├── 02-mirror-creation/ # Step-by-step mirror creation
|
||||
│ ├── 03-license-analysis/ # License compliance documentation
|
||||
│ └── 04-deployment/ # Corporate network deployment
|
||||
├── configs/ # Configuration files
|
||||
├── scripts/ # Automation scripts
|
||||
└── README.md # This file
|
||||
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
|
||||
|
||||
## Quick Links
|
||||
| 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 |
|
||||
|
||||
- [2038 Problem Analysis](docs/01-analysis/2038-problem-analysis.md)
|
||||
- [Mirror Creation Guide](docs/02-mirror-creation/step-by-step-mirror-creation.md)
|
||||
- [License Table Template](docs/03-license-analysis/license-table-template.csv)
|
||||
- [Deployment Guide](docs/04-deployment/corporate-network-deployment.md)
|
||||
> **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
|
||||
|
||||
## Project Status
|
||||
| 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 |
|
||||
|
||||
| Phase | Status | Description |
|
||||
|-------|--------|-------------|
|
||||
| Analysis | ✅ Complete | 2038 compliance verified for Scarthgap |
|
||||
| Documentation | 🔄 In Progress | Creating step-by-step guides |
|
||||
| Mirror Creation | ⏳ Pending | Execute on Ubuntu 22.04 outside corporate network |
|
||||
| License Analysis | ⏳ Pending | Generate complete license table |
|
||||
| Deployment | ⏳ Pending | Install in corporate network |
|
||||
## Quick Start
|
||||
|
||||
---
|
||||
```bash
|
||||
# 1. Clone
|
||||
git clone --recurse-submodules https://github.com/tq-systems/ci-meta-tq.git
|
||||
cd ci-meta-tq
|
||||
|
||||
## Hardware Target
|
||||
# 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
|
||||
|
||||
**Board:** TQMa6UL-AB RK REV.0405
|
||||
**SoC:** NXP i.MX6 UltraLite (Cortex-A7, 32-bit)
|
||||
**Carrier:** MBa6x REV.020x
|
||||
**Key Features:**
|
||||
- 528 MHz Cortex-A7
|
||||
- 512MB DDR3
|
||||
- 4GB eMMC
|
||||
- Dual Ethernet (1G + 100M)
|
||||
- Industrial temp range
|
||||
# 3. Fetch (for mirror creation)
|
||||
bitbake tq-image-small-debug --runall=fetch
|
||||
|
||||
**Machine Configuration:** `tqma6ulx-mba6ulx` (to be confirmed during build)
|
||||
# 4. Build
|
||||
bitbake tq-image-small-debug
|
||||
```
|
||||
|
||||
---
|
||||
## References
|
||||
|
||||
## License
|
||||
|
||||
Documentation: CC-BY-SA 4.0
|
||||
Scripts: MIT
|
||||
|
||||
All Yocto and TQ BSP components follow their respective upstream licenses.
|
||||
See [License Analysis](docs/03-license-analysis/) for complete breakdown.
|
||||
|
||||
---
|
||||
|
||||
**Maintainer:** Siggi ⚙️ (OpenClaw Agent)
|
||||
**Repository:** https://code.gegen.autos/openclaw/tqma6-yocto-mirror
|
||||
- [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)
|
||||
|
||||
@@ -50,7 +50,7 @@ The i.MX6 UltraLite (Cortex-A7) is a 32-bit processor:
|
||||
│ → Compiled with 64-bit time_t │
|
||||
├─────────────────────────────────────┤
|
||||
│ C Library (glibc) │
|
||||
│ → glibc 2.34+ with 64-bit time_t │
|
||||
│ → musl 1.2+ with 64-bit time_t │
|
||||
├─────────────────────────────────────┤
|
||||
│ Linux Kernel │
|
||||
│ → 5.1+ with CONFIG_TIME_LOW_RES │
|
||||
@@ -69,7 +69,7 @@ Yocto Project 5.0 (Scarthgap) released April 2024 provides:
|
||||
| **GCC** | 13.x | Supports 64-bit time_t | ✅ |
|
||||
| **BitBake** | 2.6 | Build system support | ✅ |
|
||||
|
||||
**Critical:** glibc 2.34+ uses 64-bit `time_t` BY DEFAULT for 32-bit ARM in Yocto.
|
||||
**Critical:** musl 1.2+ uses 64-bit `time_t` BY DEFAULT for 32-bit ARM in Yocto.
|
||||
|
||||
---
|
||||
|
||||
@@ -88,9 +88,9 @@ From TQ documentation:
|
||||
|
||||
### 3.2 Machine Configuration
|
||||
|
||||
For TQMa6UL-AB on MBa6x:
|
||||
For TQMa6UL-AB on MBa6ULx:
|
||||
```
|
||||
MACHINE = "tqma6ulx-mba6ulx"
|
||||
MACHINE = "tqma6ul-multi-mba6ulx"
|
||||
```
|
||||
|
||||
Verified supported features with kernel 6.6:
|
||||
@@ -176,7 +176,7 @@ grep -r "time_t\|gettimeofday\|stime" ${IMAGE_ROOTFS}/usr/bin/
|
||||
### 6.1 Findings
|
||||
|
||||
1. **Yocto Scarthgap (5.0) is 2038-compliant** for 32-bit ARM
|
||||
2. **TQ BSP scarthgap.TQ.ARM.BSP.0006** uses compliant kernel 6.6 + glibc 2.38
|
||||
2. **TQ BSP scarthgap.TQ.ARM.BSP.0006** uses compliant kernel 6.6 + musl 1.2
|
||||
3. **Migration from PTXdist is mandatory** for systems operating beyond 2038
|
||||
4. **Offline mirror required** for software approval process
|
||||
|
||||
|
||||
@@ -15,10 +15,10 @@ Based on sticker analysis and code review:
|
||||
|
||||
**Sticker:** TQMA6U-AB RK REV.0405
|
||||
**Board:** TQMa6UL (NXP i.MX6 UltraLite, Cortex-A7, 32-bit)
|
||||
**Carrier:** MBa6x
|
||||
**Carrier:** MBa6ULx
|
||||
**Code Reference:** `tqma6x` = generic i.MX6 family identifier in legacy codebase
|
||||
|
||||
**Machine Configuration:** `tqma6ulx-mba6ulx`
|
||||
**Machine Configuration:** `tqma6ul-multi-mba6ulx`
|
||||
*Alternative (ci-meta-tq multi-config):* `tqma6qdl-multi-mba6x`
|
||||
|
||||
---
|
||||
@@ -102,8 +102,8 @@ ls -la sources/
|
||||
```bash
|
||||
cd ${UT_BASE}/ci-meta-tq
|
||||
./ci/ls-configs --file
|
||||
./ci/ls-machines --file --config=imx
|
||||
# Should list tqma6ulx-mba6ulx and other machines
|
||||
./ci/ls-machines --file --config=mainline
|
||||
# Should list tqma6ul-multi-mba6ulx and other machines
|
||||
```
|
||||
|
||||
---
|
||||
@@ -120,7 +120,7 @@ mkdir -p ~/.yocto
|
||||
cat > ~/.yocto/site.conf <<'EOF'
|
||||
# UT Project Configuration
|
||||
# Build: UT (Universität/Projekt)
|
||||
# Target: TQMa6UL on MBa6x
|
||||
# Target: TQMa6UL on MBa6ULx
|
||||
# Date: 2026-03-01
|
||||
|
||||
# Mirror directories (outside home for space)
|
||||
@@ -141,13 +141,13 @@ sudo chown -R "$USER:$USER" /srv/yocto
|
||||
cd ${UT_BASE}/ci-meta-tq
|
||||
|
||||
# Set machine for TQMa6UL
|
||||
export MACHINE=tqma6ulx-mba6ulx
|
||||
export MACHINE=tqma6ul-multi-mba6ulx
|
||||
|
||||
# Alternative if using multi-config:
|
||||
# export MACHINE=tqma6qdl-multi-mba6x
|
||||
|
||||
# Initialize build environment (creates build_ut directory)
|
||||
. ./setup-environment build_ut imx
|
||||
. ./setup-environment build_ut mainline
|
||||
|
||||
# Verify configuration
|
||||
bitbake -e | grep -E "^MACHINE=|^DL_DIR=|^SSTATE_DIR="
|
||||
@@ -163,8 +163,8 @@ This step downloads all required source packages for offline use:
|
||||
cd ${UT_BASE}/ci-meta-tq
|
||||
|
||||
# Ensure environment is set
|
||||
export MACHINE=tqma6ulx-mba6ulx
|
||||
. ./setup-environment build_ut imx
|
||||
export MACHINE=tqma6ul-multi-mba6ulx
|
||||
. ./setup-environment build_ut mainline
|
||||
|
||||
# Build the image (downloads all sources)
|
||||
bitbake tq-image-small-debug
|
||||
@@ -221,7 +221,7 @@ Use TQ's provided script to populate the mirror:
|
||||
cd ${UT_BASE}/ci-meta-tq
|
||||
|
||||
# Set machine and config
|
||||
export MACHINE=tqma6ulx-mba6ulx
|
||||
export MACHINE=tqma6ul-multi-mba6ulx
|
||||
|
||||
# Fill mirror (downloads all git repos and tarballs)
|
||||
ci/fill_mirror build_ut imx
|
||||
@@ -237,7 +237,7 @@ du -sh /srv/yocto/sstate-cache/
|
||||
|
||||
```bash
|
||||
cd ${UT_BASE}/ci-meta-tq
|
||||
. ./setup-environment build_ut imx
|
||||
. ./setup-environment build_ut mainline
|
||||
|
||||
# Generate license manifest
|
||||
bitbake tq-image-small-debug -c do_populate_lic
|
||||
@@ -281,7 +281,7 @@ cat > UT-mirror-package/build-instructions/README.txt <<'EOF'
|
||||
UT Yocto Mirror Package
|
||||
=======================
|
||||
|
||||
Target: TQMa6UL on MBa6x (i.MX6 UltraLite)
|
||||
Target: TQMa6UL on MBa6ULx (i.MX6 UltraLite)
|
||||
Yocto: Scarthgap 5.0 LTS
|
||||
BSP: TQ scarthgap.TQ.ARM.BSP.0006
|
||||
Build: UT (Universität/Projekt)
|
||||
@@ -375,7 +375,7 @@ Key packages to verify for military use:
|
||||
Before delivering mirror:
|
||||
|
||||
- [ ] ci-meta-tq cloned with all submodules
|
||||
- [ ] MACHINE=tqma6ulx-mba6ulx configured
|
||||
- [ ] MACHINE=tqma6ul-multi-mba6ulx configured
|
||||
- [ ] Build "UT" completed successfully
|
||||
- [ ] /srv/yocto/downloads/ populated
|
||||
- [ ] /srv/yocto/premirror/ populated by ci/fill_mirror
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
**Document ID:** DEPLOY-CORP-001-REV2
|
||||
**Date:** 2026-03-01
|
||||
**Build Name:** UT (Universität/Projekt)
|
||||
**Target:** TQMa6UL on MBa6x
|
||||
**Target:** TQMa6UL on MBa6ULx
|
||||
**Environment:** Air-gapped corporate network
|
||||
|
||||
---
|
||||
@@ -150,14 +150,14 @@ cd ${UT_BASE}/UT-mirror-package/sources/ci-meta-tq
|
||||
ls -la sources/
|
||||
|
||||
# Set machine for TQMa6UL
|
||||
export MACHINE=tqma6ulx-mba6ulx
|
||||
export MACHINE=tqma6ul-multi-mba6ulx
|
||||
|
||||
# Initialize build (creates build_ut)
|
||||
. ./setup-environment build_ut imx
|
||||
. ./setup-environment build_ut mainline
|
||||
|
||||
# Verify configuration
|
||||
bitbake -e | grep "^MACHINE="
|
||||
# Should show: MACHINE="tqma6ulx-mba6ulx"
|
||||
# Should show: MACHINE="tqma6ul-multi-mba6ulx"
|
||||
```
|
||||
|
||||
---
|
||||
@@ -169,8 +169,8 @@ bitbake -e | grep "^MACHINE="
|
||||
```bash
|
||||
# Ensure we're in build environment
|
||||
cd ${UT_BASE}/UT-mirror-package/sources/ci-meta-tq
|
||||
export MACHINE=tqma6ulx-mba6ulx
|
||||
. ./setup-environment build_ut imx
|
||||
export MACHINE=tqma6ul-multi-mba6ulx
|
||||
. ./setup-environment build_ut mainline
|
||||
|
||||
# Verify no network access is attempted
|
||||
export BB_NO_NETWORK=1
|
||||
@@ -204,8 +204,8 @@ bitbake -e virtual/kernel | grep CONFIG_COMPAT_32BIT_TIME
|
||||
```bash
|
||||
# Enter build environment
|
||||
cd ${UT_BASE}/UT-mirror-package/sources/ci-meta-tq
|
||||
export MACHINE=tqma6ulx-mba6ulx
|
||||
. ./setup-environment build_ut imx
|
||||
export MACHINE=tqma6ul-multi-mba6ulx
|
||||
. ./setup-environment build_ut mainline
|
||||
|
||||
# Build target image
|
||||
bitbake tq-image-small-debug
|
||||
|
||||
Reference in New Issue
Block a user