{"id":35886780,"url":"https://github.com/technical-writer-ssr/boot-process","last_synced_at":"2026-01-08T21:02:40.241Z","repository":{"id":328766941,"uuid":"1116631487","full_name":"Technical-Writer-SSR/Boot-Process","owner":"Technical-Writer-SSR","description":"Documentation for the boot process of i.MX, ARM Linux, and Android boards.","archived":false,"fork":false,"pushed_at":"2025-12-15T06:51:19.000Z","size":121,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-12-18T03:50:24.555Z","etag":null,"topics":["android","arm","arm64","boot","builtin","flow","imx","nxp-cortex","processing"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Technical-Writer-SSR.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-12-15T06:46:46.000Z","updated_at":"2025-12-15T10:38:59.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/Technical-Writer-SSR/Boot-Process","commit_stats":null,"previous_names":["technical-writer-ssr/boot-process"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/Technical-Writer-SSR/Boot-Process","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Technical-Writer-SSR%2FBoot-Process","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Technical-Writer-SSR%2FBoot-Process/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Technical-Writer-SSR%2FBoot-Process/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Technical-Writer-SSR%2FBoot-Process/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Technical-Writer-SSR","download_url":"https://codeload.github.com/Technical-Writer-SSR/Boot-Process/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Technical-Writer-SSR%2FBoot-Process/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28248946,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2026-01-08T02:00:06.591Z","response_time":241,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["android","arm","arm64","boot","builtin","flow","imx","nxp-cortex","processing"],"created_at":"2026-01-08T21:01:23.466Z","updated_at":"2026-01-08T21:02:40.236Z","avatar_url":"https://github.com/Technical-Writer-SSR.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# Boot Process\n\n![NXP Logo](https://img.shields.io/badge/NXP-Arm%20Processors-red)\n![Linux Kernel](https://img.shields.io/badge/Linux-Kernel-green)\n![Android](https://img.shields.io/badge/Android-Platform-brightgreen)\n![ARM Architecture](https://img.shields.io/badge/ARM-Architecture-blue)\n![U-Boot](https://img.shields.io/badge/Bootloader-U--Boot-yellow)\n![Secure Boot](https://img.shields.io/badge/Secure-Boot-important)\n\n## Overview\nThis document details the boot process for NXP ARM-based development boards running Linux and Android operating systems. The boot sequence follows a multi-stage architecture from power-on to full OS initialization.\n\n## Boot Process Architecture\n\n```mermaid\ngraph TD\n    A[Power On/Reset] --\u003e B[Boot ROM\u003cbr/\u003eOn-Chip ROM];\n    B --\u003e C{Boot Mode Selection\u003cbr/\u003eeMMC/SD/USB/UART};\n    \n    subgraph \"i.MX 8 Series\"\n        C --\u003e D1[i.MX 8 Boot Flow];\n        D1 --\u003e E1[SCFW → SPL → ATF];\n        E1 --\u003e F1[U-Boot → Linux/Android];\n    end\n    \n    subgraph \"i.MX 6/7 Series\"\n        C --\u003e D2[i.MX 6/7 Boot Flow];\n        D2 --\u003e E2[DCD → SPL → U-Boot];\n        E2 --\u003e F2[Linux Kernel];\n    end\n    \n    subgraph \"Layerscape Series\"\n        C --\u003e D3[Layerscape Boot Flow];\n        D3 --\u003e E3[RCW → U-Boot → PPA];\n        E3 --\u003e F3[Linux/DPDK];\n    end\n    \n    subgraph \"Kinetis Series\"\n        C --\u003e D4[Kinetis Boot Flow];\n        D4 --\u003e E4[XIP/MCUBoot];\n        E4 --\u003e F4[RTOS/Embedded];\n    end\n    \n    F1 --\u003e G[Device Tree Init];\n    F2 --\u003e G;\n    F3 --\u003e G;\n    F4 --\u003e G;\n    \n    G --\u003e H[Kernel Initialization];\n    H --\u003e I[Init Process];\n    I --\u003e J[Userspace];\n    \n    style A fill:#f9f,stroke:#333,stroke-width:2px\n    style J fill:#ccf,stroke:#333,stroke-width:2px\n    style D1 fill:#d4f7d4\n    style D2 fill:#d4e6f7\n    style D3 fill:#f7d4e6\n    style D4 fill:#f7f2d4\n```\n\n## Board-Specific Boot Flows\n\n### 1. **i.MX 8 Series (i.MX 8M/8M Mini/8M Plus/8QM)**\n```mermaid\ngraph LR\n    A[Boot ROM] --\u003e B[Load SCFW\u003cbr/\u003eSystem Controller];\n    B --\u003e C[SCFW loads SPL];\n    C --\u003e D[SPL loads ATF\u003cbr/\u003eARM Trusted Firmware];\n    D --\u003e E[ATF loads U-Boot];\n    E --\u003e F{U-Boot Actions};\n    F --\u003e G[Load DTB];\n    F --\u003e H[Load Kernel];\n    F --\u003e I[AVB Verification];\n    G \u0026 H \u0026 I --\u003e J[Boot Linux/Android];\n```\n\n**Key Components:**\n- **SCFW**: System Controller Firmware (manages power, clocks, security)\n- **ATF**: ARM Trusted Firmware (EL3 secure monitor)\n- **OPTEE**: Optional TEE for secure applications\n- **AVB**: Android Verified Boot (for Android images)\n\n**Typical Boards:** i.MX 8M EVK, i.MX 8M Mini EVK, i.MX 8M Plus EVK\n\n### 2. **i.MX 6/7 Series (i.MX 6Quad/6Dual/6Solo/7Dual)**\n```mermaid\ngraph LR\n    A[Boot ROM] --\u003e B[Read DCD\u003cbr/\u003eDevice Config Data];\n    B --\u003e C[Initialize DDR];\n    C --\u003e D[Load SPL\u003cbr/\u003eSecondary Program Loader];\n    D --\u003e E[SPL loads U-Boot];\n    E --\u003e F{U-Boot Phase};\n    F --\u003e G[Setup Board];\n    F --\u003e H[Load Kernel];\n    F --\u003e I[Load DTB];\n    G \u0026 H \u0026 I --\u003e J[Boot Linux];\n```\n\n**Key Components:**\n- **DCD**: Device Configuration Data (DDR timing parameters)\n- **IVT**: Image Vector Table (image header structure)\n- **HAB**: High Assurance Boot (security enforcement)\n\n**Typical Boards:** Sabre SD, Sabre AI, i.MX 7Dual SABRE\n\n### 3. **Layerscape Series (LX2160A, LS1046A, LS1028A)**\n```mermaid\ngraph LR\n    A[Power On] --\u003e B[Load RCW\u003cbr/\u003eReset Configuration Word];\n    B --\u003e C[Initialize SerDes];\n    C --\u003e D[Load U-Boot];\n    D --\u003e E[Load PPA\u003cbr/\u003ePlatform Partition];\n    E --\u003e F[Setup DPC\u003cbr/\u003eDPAA2 Complex];\n    F --\u003e G[Load Linux/DPDK];\n    G --\u003e H[Run Applications];\n```\n\n**Key Components:**\n- **RCW**: Reset Configuration Word (pin multiplexing, SerDes config)\n- **PPA**: Platform Partition Architecture (firmware partition)\n- **DPAA2**: Data Path Acceleration Architecture\n\n**Typical Boards:** Layerscape LX2160ARDB, LS1046ARDB, LS1028ARDB\n\n### 4. **Kinetis Series (K64, K66, K28)**\n```mermaid\ngraph LR\n    A[Reset] --\u003e B[Boot ROM];\n    B --\u003e C{Flash Type};\n    C --\u003e D[XIP Execution];\n    C --\u003e E[Load to RAM];\n    D \u0026 E --\u003e F[MCUBoot\u003cbr/\u003eOptional];\n    F --\u003e G[RTOS/Embedded App];\n    G --\u003e H[Run Application];\n```\n\n**Key Components:**\n- **XIP**: Execute-In-Place (run directly from flash)\n- **MCUBoot**: Secure bootloader for MCUs\n- **FlexSPI**: External flash interface\n\n**Typical Boards:** FRDM-K64F, FRDM-K66F, TWR-K28F\n\n## Common Boot Components\n\n### Boot Media Options\n| Media Type | Typical Use | Speed | Capacity |\n|------------|-------------|-------|----------|\n| eMMC | Primary storage | High | 4GB-64GB |\n| SD Card | Development | Medium | Up to 512GB |\n| QSPI Flash | Boot device | Medium | 16MB-256MB |\n| NAND Flash | Cost-sensitive | Medium | 256MB-2GB |\n| USB | Recovery/Download | Variable | N/A |\n\n### Security Features\n- **HAB** (High Assurance Boot): Code signing and verification\n- **CAAM** (Cryptographic Accelerator): Hardware crypto engine\n- **TrustZone**: ARM security extension\n- **AVB 2.0**: Android Verified Boot\n- **Secure JTAG**: Debug port protection\n\n### Boot Configuration\n```bash\n# Typical U-Boot environment variables\nbootcmd=mmc dev ${mmcdev}; mmc read ${loadaddr} ${kernel_addr} ${kernel_size}; \\\n        mmc read ${fdt_addr} ${fdt_addr_r} ${fdt_size}; \\\n        bootz ${loadaddr} - ${fdt_addr}\n\nbootargs=console=ttymxc0,115200 root=/dev/mmcblk1p2 rootwait rw\n```\n\n## Quick Reference\n\n### Boot Mode Selection\n| Boot Pins | Mode | Description |\n|-----------|------|-------------|\n| 0000 | Serial Downloader | USB/UART recovery |\n| 0001 | Internal Boot | Normal boot from flash |\n| 0010 | USB Boot | Boot from USB device |\n| 0100 | SD Card | Boot from SD/MMC |\n\n### Common Commands\n```bash\n# U-Boot commands for i.MX\n=\u003e mmc list          # List MMC devices\n=\u003e fatls mmc 0:1     # List files on FAT partition\n=\u003e boot              # Boot with default settings\n=\u003e run netboot       # Network boot\n=\u003e fastboot          # Enter fastboot mode\n```\n\n## Troubleshooting\n\n### Common Issues\n1. **Boot hangs at SPL**: Check DDR initialization parameters\n2. **HAB authentication fails**: Verify image signing\n3. **Kernel panic early**: Check device tree compatibility\n4. **No boot media detected**: Verify boot mode pins\n\n### Debug Tools\n- **UUU (Universal Update Utility)**: Flashing and recovery\n- **OpenOCD**: JTAG debugging\n- **U-Boot console**: Serial debug at 115200 baud\n- **Linux dmesg**: Kernel boot messages\n\n## Resources\n- [NXP Official Documentation](https://www.nxp.com)\n- [i.MX Linux Reference Manual](https://www.nxp.com/docs/en/user-guide/IMX_LINUX_USERS_GUIDE.pdf)\n- [U-Boot Documentation](https://www.denx.de/wiki/U-Boot/Documentation)\n- [ARM Trusted Firmware](https://trustedfirmware.org/)\n\n## License\nThis documentation is provided for reference purposes. Refer to NXP official documentation for production use.\n\n---\n*Last Updated: *  \n*For NXP i.MX, Layerscape, and Kinetis Platforms*\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftechnical-writer-ssr%2Fboot-process","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftechnical-writer-ssr%2Fboot-process","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftechnical-writer-ssr%2Fboot-process/lists"}