> ## Documentation Index
> Fetch the complete documentation index at: https://dragonwingdocs.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-prod/Bh7DlgudKfjY_3Wf/Linux/images/peripheral-interfaces/IQ9075-LPDDR_memory.png?fit=max&auto=format&n=Bh7DlgudKfjY_3Wf&q=85&s=a5ff15833471c9153e36ee0da1291c2a" width="598" height="589" data-path="Linux/images/peripheral-interfaces/IQ9075-LPDDR_memory.png" />

<img src="https://mintcdn.com/qualcomm-prod/Bh7DlgudKfjY_3Wf/Linux/images/peripheral-interfaces/memory_channel_arch.png?fit=max&auto=format&n=Bh7DlgudKfjY_3Wf&q=85&s=49f03ea0f7e8a49ee552db20a5506a30" 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-prod/Bh7DlgudKfjY_3Wf/Linux/images/peripheral-interfaces/pvl_list.png?fit=max&auto=format&n=Bh7DlgudKfjY_3Wf&q=85&s=3c32f0f53d52e365cf0a9aff187f2e1d" width="1115" height="657" data-path="Linux/images/peripheral-interfaces/pvl_list.png" />
  </Step>
</Steps>

## 初始化

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

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

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

<img src="https://mintcdn.com/qualcomm-prod/Bh7DlgudKfjY_3Wf/Linux/images/peripheral-interfaces/memory_access_sequence.png?fit=max&auto=format&n=Bh7DlgudKfjY_3Wf&q=85&s=d46994c80cf067770be13eed788e9bfe" 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 引导加载程序
* 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>`
    * 对照 PVL 验证 DRAM 部件号
    * 检查 DRAM 芯片上的物理标记

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

  <Accordion title="DRAM 初始化失败">
    **症状：** DRAM 检测后启动卡住；训练/校准失败；间歇性启动失败。

    **步骤：**

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

    **解决方案：** 改善信号完整性（布线、端接）；调整时序参数（联系 Qualcomm）。
  </Accordion>

  <Accordion title="运行时内存损坏">
    **症状：** 应用程序随机崩溃、内核 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 调速器、改善散热、确认 DRAM 器件支持全速运行。
  </Accordion>

  <Accordion title="可用内存不足">
    **症状：** 内存少于安装容量；内存不足错误；分配失败。

    **步骤：**

    ```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/#/)                                                                                                           |
