龙芯2K1000 SoC启动全流程与架构解析

下面给你画一张**"LS2K1000 完整 SoC 启动 + 系统级架构图"**,按你这段 PMON 代码真实执行路径 + 硬件拓扑一起融合(偏"芯片bringup视角")。

我分两层给你:

  • 🔷 Boot启动链路(时间轴)
  • 🔷 SoC硬件架构(CPU / DDR / PCIe / SATA / GMAC)

🔥 LS2K1000 SoC 完整启动架构图(系统级)

复制代码
┌──────────────────────────────────────────────────────────────┐
│                        RESET VECTOR                          │
└──────────────────────────────────────────────────────────────┘
                               │
                               ▼
┌──────────────────────────────────────────────────────────────┐
│ CPU0 (Boot Core)                                              │
│  _start @ PMON                                                │
│                                                              │
│  - SPI Flash boot                                             │
│  - stack setup                                                │
│  - CSR init                                                   │
└──────────────────────────────────────────────────────────────┘
                               │
        ┌──────────────────────┼──────────────────────┐
        ▼                      ▼                      ▼
┌──────────────┐   ┌────────────────┐   ┌────────────────────┐
│ SPI / BootROM │   │ SMP control    │   │ Interrupt / CSR     │
│ - fetch PMON  │   │ - slave hold   │   │ - ebase / tlbvec   │
└──────────────┘   └────────────────┘   └────────────────────┘
                               │
                               ▼
┌──────────────────────────────────────────────────────────────┐
│                EARLY BOARD INIT (PMON STAGE 1)               │
│                                                              │
│  locate()                                                     │
│   ├─ GPIO reset                                               │
│   ├─ beep                                                     │
│   ├─ watchdog disable                                         │
│   └─ APB bridge config                                        │
└──────────────────────────────────────────────────────────────┘
                               │
                               ▼
════════════════════════ HARDWARE INIT PHASE ═══════════════════

┌──────────────────────────────────────────────────────────────┐
│                        DDR SUBSYSTEM                          │
│                                                              │
│  ddr_entry.S                                                  │
│   ├─ MC init (memory controller)                              │
│   ├─ PHY init                                                 │
│   ├─ training                                                 │
│   ├─ ZQ calibration                                           │
│   └─ memory map setup                                         │
│                                                              │
│  RESULT:                                                     │
│   → DRAM ready (cached + uncached window valid)             │
└──────────────────────────────────────────────────────────────┘
                               │
                               ▼
┌──────────────────────────────────────────────────────────────┐
│                     CACHE / SCache LOCK                       │
│                                                              │
│  - lock 2MB SCache                                            │
│  - copy PMON into cache                                      │
│  - relocate execution                                         │
└──────────────────────────────────────────────────────────────┘

                               ▼
════════════════════════ SYSTEM BUS LAYER ══════════════════════

                    ┌────────────────────────────┐
                    │        AXI / AHB BUS       │
                    └────────────────────────────┘
                               │
        ┌──────────────────────┼────────────────────────┐
        ▼                      ▼                        ▼

┌──────────────┐   ┌────────────────────┐   ┌────────────────────┐
│ PCIe RC      │   │ SATA Controller    │   │ GMAC (Ethernet)     │
│              │   │                    │   │                    │
│ - PHY init   │   │ - refclk config   │   │ - MAC enable       │
│ - LTSSM      │   │ - TX tuning        │   │ - PHY link detect  │
│ - link train │   │ - port enable      │   │ - RX/TX queue      │
│ - BAR map    │   │                    │   │                    │
└──────┬───────┘   └─────────┬──────────┘   └─────────┬──────────┘
       │                     │                        │
       ▼                     ▼                        ▼

 PCIe Devices         SATA Disk(s)            Ethernet PHY/Switch
 (NVMe / GPU / NIC)

🔥 PCIe 子系统详细架构(你代码核心)

复制代码
                 ┌────────────────────────────┐
                 │     PCIe Root Complex      │
                 │   (LS2K1000 internal)      │
                 └────────────────────────────┘
                              │
            ┌─────────────────┼─────────────────┐
            ▼                 ▼                 ▼

     ┌────────────┐   ┌────────────┐   ┌────────────┐
     │ PCIe0 RC   │   │ PCIe1 RC   │   │ PHY Layer   │
     └────┬───────┘   └────┬───────┘   └────┬───────┘
          │                │                │
          ▼                ▼                ▼

   Port0~Port3        Port0~Port1     SerDes lanes
   - EP/NVMe          - NIC/GPU       - equalization
   - BAR assign       - BAR assign    - de-skew
   - link training    - link training - detect

🔥 DDR 子系统架构(最关键)

复制代码
            ┌──────────────────────────────┐
            │      DDR Controller (MC2)    │
            └──────────────┬───────────────┘
                           │
            ┌──────────────┼───────────────┐
            ▼              ▼               ▼

      ┌──────────┐  ┌────────────┐  ┌────────────┐
      │ Command   │  │ Address    │  │ Data Path  │
      │ scheduler │  │ mapping    │  │ DQ / DQS   │
      └────┬──────┘  └────┬───────┘  └────┬───────┘
           │              │               │
           ▼              ▼               ▼

        ┌────────────────────────────┐
        │       DDR PHY Layer        │
        │                            │
        │  - training engine        │
        │  - Vref calibration       │
        │  - read/write leveling     │
        │  - DQS alignment           │
        └────────────┬───────────────┘
                     │
                     ▼

              ┌──────────────┐
              │ DDR3/DDR4 DIMM│
              └──────────────┘

🔥 SATA / GMAC 子系统

SATA

复制代码
   ┌──────────────┐
   │ SATA CTRL     │
   ├──────────────┤
   │ - ref clock   │
   │ - TX tuning   │
   │ - PHY config  │
   └──────┬───────┘
          ▼
     SATA Disk / SSD

👉 关键点(对应你代码):

  • 0x450 / 0x454 clock config
  • TX signal tuning
  • internal/external refclk switch

GMAC

复制代码
   ┌──────────────┐
   │ GMAC0 / GMAC1 │
   ├──────────────┤
   │ - MAC enable  │
   │ - RX/TX rings │
   │ - pinmux      │
   └──────┬───────┘
          ▼
   Ethernet PHY / Switch

🔥 全局 SoC 数据流(最关键理解图)

复制代码
           DDR (System Memory)
                   ▲
                   │
        ┌──────────┴──────────┐
        │                     │
      CPU0                 DMA Engines
        │                     │
        ▼                     ▼

   ┌──────────┐        ┌──────────────┐
   │ PMON     │        │ PCIe / SATA   │
   │ Kernel   │        │ GMAC DMA      │
   └──────────┘        └──────────────┘

🚀 一句话总结这颗 SoC

👉 LS2K1000 的本质架构是:

复制代码
CPU → DDR bringup → cache relocation → bus enable
→ PCIe/SATA/GMAC init → OS enumeration
相关推荐
阿狸猿26 分钟前
论软件可靠性设计与应用
架构
心之伊始44 分钟前
LangChain4j RAG 实战:Java 后端如何把本地文档接入 Embedding 检索链路
java·架构·源码分析·csdn
真实的菜2 小时前
微服务注册配置中心终极选型:2026指南
微服务·云原生·架构
HavenlonLabs4 小时前
硬件 + SaaS 产品的工程化路径:从系统架构、PCB 设计到工程样机
网络·安全·架构·系统架构·安全架构
SamDeepThinking5 小时前
我们当年是如何真实落地BFF的?
java·后端·架构
宜昌未来智慧谷6 小时前
WWDC 2026开发者视角解读:Siri独立App的技术架构与第三方AI模型接入机制
人工智能·架构·apple·wwdc·gemini
协享科技6 小时前
Spring Boot 与 Go 双服务架构实践:从单体拆分到通信设计
java·人工智能·spring boot·后端·架构·golang·ai编程
这个DBA有点耶6 小时前
索引优化深潜(下):索引合并、ICP 与索引设计的实战法则
数据库·mysql·架构
行者-全栈开发6 小时前
深度解析 WWDC 2026:苹果 AI 全栈技术架构与落地实现路径
人工智能·架构·wwdc
我是一颗柠檬7 小时前
【Java项目技术亮点】分库分表+数据路由策略:单表5000万后的架构升级方案
java·开发语言·分布式·架构