龙芯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
相关推荐
VortMall2 分钟前
全维度打磨细节体验,赋能商城稳定有序运营|VortMall 微服务商城 v1.3.11 版本发布
java·微服务·云原生·架构·商城系统·开源商城·vortmall
卖买买卖11 小时前
美业收银系统对比分析:系统架构、功能深度与服务模型评估
架构·sass
wdfk_prog12 小时前
嵌入式面试真题第 15 题:不可恢复异常后的通用崩溃快照、调用栈保存与离线分析架构
linux·开发语言·面试·架构
小小测试开发13 小时前
PromptFoo 源码分析与工程实战:LLM 测试框架的架构与最佳实践
人工智能·架构
葬送的代码人生14 小时前
别再让 AI 瞎写代码了!Vibe Coding 三步法教你写出靠谱代码
前端·设计模式·架构
杉氧14 小时前
KMP 自动化之路 (4):iOS 自动化构建与签名 —— 攻克最硬的骨头
android·架构·android jetpack
taocarts_bidfans14 小时前
极简架构降载技术|从西班牙红薯饭去繁就简,解析反向海淘系统轻量化架构优化方案
架构·taocarts
cyforkk18 小时前
重新认识 MCP:大模型时代的“标准接口”与架构边界
架构
富贵冼中求18 小时前
从单向流到双向 RPC:Agent 通信协议的范式分叉与 ACP 协议实战拆解
设计模式·架构
XUHUOJUN19 小时前
Azure Local 2602→2606 演进全景:2604 为什么是架构转折点(2602→2606 演进与升级价值·中篇)
架构·azure local