> ## Documentation Index
> Fetch the complete documentation index at: https://dragonwingdocs-staging.qualcomm.com/llms.txt
> Use this file to discover all available pages before exploring further.

# LPDDR 内存

Qualcomm Dragonwing IQ-9075 配备为高性能计算应用设计的先进内存子系统。

## 规格

| 规格       | 详情                      |
| -------- | ----------------------- |
| **内存类型** | LPDDR5X / LPDDR5 SDRAM  |
| **配置**   | 六通道非 PoP                |
| **最大容量** | 36 GB                   |
| **时钟速度** | 最高 3200 MHz             |
| **数据宽度** | 6 × 16 位(共 96 位)        |
| **标准**   | 符合 JEDEC LPDDR5X/LPDDR5 |

## 架构

IQ-9075 内存控制器支持在六个独立的 16 位通道上进行高带宽、低延迟操作,并具有用于功耗优化的动态频率调节。

IQ-9075M 模块有三个 12 GB LPDDR5 SDRAM IC:

<img src="https://mintcdn.com/qualcomm-staging/TEuuywLWbysJVmUv/Linux/images/peripheral-interfaces/IQ9075-LPDDR_memory.png?fit=max&auto=format&n=TEuuywLWbysJVmUv&q=85&s=44e5764db8922fef587b84b648311e69" width="598" height="589" data-path="Linux/images/peripheral-interfaces/IQ9075-LPDDR_memory.png" />

<img src="https://mintcdn.com/qualcomm-staging/TEuuywLWbysJVmUv/Linux/images/peripheral-interfaces/memory_channel_arch.png?fit=max&auto=format&n=TEuuywLWbysJVmUv&q=85&s=000116f8bf0df8f8e6db9966f9acd454" width="1193" height="741" data-path="Linux/images/peripheral-interfaces/memory_channel_arch.png" />

### 支持的 DRAM 器件

所有 DRAM 器件必须从 Qualcomm 首选供应商列表(PVL)中选择。

<Steps>
  <Step title="访问 PVL 数据库">
    前往 [Qualcomm PVL](https://www.qualcomm.com/preferred-vendor-list) 并使用您的 Qualcomm 账户登录。
  </Step>

  <Step title="下载 PVL 文件">
    下载 **QRD Hardware - Preferred Vendor List (PVL)** Excel 文件。
  </Step>

  <Step title="筛选 IQ-9075 内存">
    按 **Type: Memory** 和 **Chipset: IQ-9075** 筛选。

    <img src="https://mintcdn.com/qualcomm-staging/TEuuywLWbysJVmUv/Linux/images/peripheral-interfaces/pvl_list.png?fit=max&auto=format&n=TEuuywLWbysJVmUv&q=85&s=a85c2730bf0c1904782a8c4c081a39a6" width="1115" height="657" data-path="Linux/images/peripheral-interfaces/pvl_list.png" />
  </Step>
</Steps>

## 初始化

<img src="https://mintcdn.com/qualcomm-staging/TEuuywLWbysJVmUv/Linux/images/peripheral-interfaces/memory_initilizatoin_diagram.png?fit=max&auto=format&n=TEuuywLWbysJVmUv&q=85&s=97c242cb0586ab554dab637ebef0a4be" width="1602" height="305" data-path="Linux/images/peripheral-interfaces/memory_initilizatoin_diagram.png" />

<img src="https://mintcdn.com/qualcomm-staging/TEuuywLWbysJVmUv/Linux/images/peripheral-interfaces/ddr_initialization_sequence.png?fit=max&auto=format&n=TEuuywLWbysJVmUv&q=85&s=b687082d3f4b6cfd49d525870c8f35aa" width="935" height="895" data-path="Linux/images/peripheral-interfaces/ddr_initialization_sequence.png" />

<img src="https://mintcdn.com/qualcomm-staging/TEuuywLWbysJVmUv/Linux/images/peripheral-interfaces/Memory_access_flow_diagram.png?fit=max&auto=format&n=TEuuywLWbysJVmUv&q=85&s=da6984355cd50cf025a54df7e5d2b6e4" width="1609" height="645" data-path="Linux/images/peripheral-interfaces/Memory_access_flow_diagram.png" />

<img src="https://mintcdn.com/qualcomm-staging/TEuuywLWbysJVmUv/Linux/images/peripheral-interfaces/memory_access_sequence.png?fit=max&auto=format&n=TEuuywLWbysJVmUv&q=85&s=e155832b0627692822012d14dcf25f99" width="1038" height="934" data-path="Linux/images/peripheral-interfaces/memory_access_sequence.png" />

## 设置与配置

### 先决条件

* 装有符合 PVL 要求的 LPDDR5X 或 LPDDR5 DRAM 的 IQ-9075 开发板
* Canonical Ubuntu 软件包
* 带有 DSF(DDR 系统固件)的 XBL bootloader
* UART 调试线缆和 SSH 访问

### 初始设置

<Steps>
  <Step title="验证 DRAM 器件">
    确认您的 DRAM 部件号已列入 IQ-9075 的 Qualcomm PVL。
  </Step>

  <Step title="刷写软件包">
    ```bash theme={null}
    fastboot flash xbl xbl.elf
    fastboot flashall
    ```
  </Step>

  <Step title="启动并验证检测">
    连接 UART 控制台(115200 波特率,8N1)并观察初始化消息:

    * `sbl1_ddr_init, Start`
    * `LP5 DDR detected`
    * `Manufacturer ID = XXXX, Device Type = XXXX`
    * `Rank 0 size = XXXX MB, Rank 1 size = XXXX MB`
    * `Max enabled DDR Freq = 3200 MHz`
  </Step>
</Steps>

### 频率调节

```bash theme={null}
# Check current DRAM frequency
cat /sys/class/devfreq/soc:qcom,cpu-llcc-ddr-bw/cur_freq

# List available frequencies
cat /sys/class/devfreq/soc:qcom,cpu-llcc-ddr-bw/available_frequencies

# Set specific frequency (requires root)
echo <frequency> > /sys/class/devfreq/soc:qcom,cpu-llcc-ddr-bw/userspace/set_freq
```

### 内存带宽监控

```bash theme={null}
cat /sys/class/devfreq/soc:qcom,cpu-llcc-ddr-bw/cur_freq
cat /sys/class/devfreq/soc:qcom,cpu-llcc-ddr-bw/load
cat /proc/meminfo
```

## 调试

### 启动日志分析

| 日志条目                                | 说明          | 缺失时的措施        |
| ----------------------------------- | ----------- | ------------- |
| `sbl1_ddr_init, Start`              | DRAM 初始化开始  | 检查 XBL 镜像完整性  |
| `<LP5> DDR detected`                | 检测到 DRAM 类型 | 验证 DRAM 器件兼容性 |
| `Manufacturer ID = <XXXX>`          | DRAM 识别     | 与 PVL 交叉核对    |
| `Rank 0 size = <XXXX> MB`           | 容量检测        | 检查 DRAM 模块安装  |
| `Max enabled DDR Freq = <XXXX> MHz` | 最大频率        | 验证频率配置        |
| `DDR Frequency, <XXXX> MHz`         | 已设置的工作频率    | 验证频率符合规格      |

```bash theme={null}
# Search boot log for DRAM entries
grep -i "ddr\|dram\|memory" boot.log

# Check for errors
grep -i "error\|fail\|panic" boot.log
```

### 诊断命令

```bash theme={null}
# Check DRAM detection in boot logs
dmesg | grep -i ddr
dmesg | grep -i memory

# Display memory information
cat /proc/meminfo

# Verify operating frequency
cat /sys/class/devfreq/soc:qcom,cpu-llcc-ddr-bw/cur_freq

# Check kernel memory map
cat /proc/iomem | grep -i memory

# Check for ECC errors
dmesg | grep -i ecc
cat /sys/devices/system/edac/mc/mc*/ce_count
cat /sys/devices/system/edac/mc/mc*/ue_count
```

## 故障排除

<AccordionGroup>
  <Accordion title="启动时未检测到 DRAM">
    **症状:** UART 日志中没有 DRAM 检测信息;启动卡在 XBL 阶段。

    **步骤:**

    * 验证 DRAM 模块安装到位且无物理损伤
    * 测量 VDD 和 VDDQ 电压 — 确保符合 JEDEC 规范
    * 检查启动期间是否有电压跌落
    * 验证时钟信号存在以及数据线连通性

    **解决方法:** 重新安装 DRAM 模块,修复电源问题,或联系 Qualcomm 支持。
  </Accordion>

  <Accordion title="检测到的 DRAM 类型错误">
    **症状:** 检测到的类型与安装的器件不匹配;制造商 ID 不正确;内存大小错误。

    **步骤:**

    * 检查日志中的 `Manufacturer ID = <XXXX>, Device Type = <XXXX>`
    * 将 DRAM 部件号与 PVL 核对
    * 检查 DRAM 芯片上的实物标记

    **解决方法:** 更换为 PVL 认可的器件;核实采购来源的真实性。
  </Accordion>

  <Accordion title="DRAM 初始化失败">
    **症状:** DRAM 检测后启动挂起;训练/校准失败;间歇性启动失败。

    **步骤:**

    * 检查温度(必须在规格范围内)和电压稳定性
    * 测量所有通道的信号质量;验证阻抗匹配
    * 尝试以较低频率启动 — 若成功则说明存在信号完整性问题

    **解决方法:** 改善信号完整性(布线、端接);调整时序参数(联系 Qualcomm)。
  </Accordion>

  <Accordion title="运行时内存损坏">
    **症状:** 应用程序随机崩溃、内核崩溃(kernel panic)、数据损坏。

    **步骤:**

    ```bash theme={null}
    # Monitor for errors
    dmesg -w | grep -i "corruption\|error"

    # Check DRAM temperature
    cat /sys/class/thermal/thermal_zone*/temp
    ```

    **解决方法:** 改善散热管理,修复电源问题,更换故障 DRAM 模块。
  </Accordion>

  <Accordion title="性能低于规格">
    **症状:** 内存带宽低于预期;高延迟;系统性能下降。

    **步骤:**

    ```bash theme={null}
    # Check current frequency (should be up to 3200 MHz)
    cat /sys/class/devfreq/soc:qcom,cpu-llcc-ddr-bw/cur_freq

    # Check governor and throttling
    cat /sys/class/devfreq/soc:qcom,cpu-llcc-ddr-bw/governor
    cat /sys/class/thermal/thermal_zone*/temp
    ```

    **解决方法:** 设置性能调节策略(performance governor),改善散热,验证 DRAM 器件支持全速运行。
  </Accordion>

  <Accordion title="可用内存不足">
    **症状:** 内存少于安装容量;内存不足(out-of-memory)错误;分配失败。

    **步骤:**

    ```bash theme={null}
    # Check total memory (should show up to 36 GB)
    cat /proc/meminfo | grep MemTotal

    # Check reserved regions
    cat /proc/iomem | grep -i reserved

    # Identify memory consumers
    ps aux --sort=-%mem | head -20
    ```

    **解决方法:** 验证所有 DRAM 模块均被检测到;检查保留内存配置;修复内存泄漏。
  </Accordion>
</AccordionGroup>

## 性能优化

### 频率调节策略

```bash theme={null}
# Maximum performance
echo performance > /sys/class/devfreq/soc:qcom,cpu-llcc-ddr-bw/governor

# Power-optimized
echo ondemand > /sys/class/devfreq/soc:qcom,cpu-llcc-ddr-bw/governor

# Manual frequency
echo userspace > /sys/class/devfreq/soc:qcom,cpu-llcc-ddr-bw/governor
echo 3200000000 > /sys/class/devfreq/soc:qcom,cpu-llcc-ddr-bw/userspace/set_freq
```

### 缓存与访问模式

```bash theme={null}
# Check cache configuration
cat /sys/devices/system/cpu/cpu*/cache/index*/size
cat /sys/devices/system/cpu/cpu*/cache/index*/type
```

最佳实践:

* 优先使用顺序而非随机内存访问
* 将数据结构对齐到缓存行边界
* 尽可能预分配内存以减少分配开销
* 对大块分配使用大页(huge pages)

### 监控

```bash theme={null}
# Real-time memory usage
watch -n 1 free -h

# Bandwidth load
cat /sys/class/devfreq/soc:qcom,cpu-llcc-ddr-bw/load

# Cache miss profiling
perf stat -e cache-misses,cache-references <application>
```

## 资源

| 资源                       | URL                                                                                                                                                                                        |
| ------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| JEDEC LPDDR 标准           | [https://www.jedec.org/category/technology-focus-area/mobile-memory-lpddr-wide-io-memory-mcp](https://www.jedec.org/category/technology-focus-area/mobile-memory-lpddr-wide-io-memory-mcp) |
| Qualcomm PVL             | [https://www.qualcomm.com/preferred-vendor-list](https://www.qualcomm.com/preferred-vendor-list)                                                                                           |
| Qualcomm Software Center | [https://softwarecenter.qualcomm.com/#/](https://softwarecenter.qualcomm.com/#/)                                                                                                           |
