1. 保留内存地址与大小的核心概念
在嵌入式系统和操作系统内核开发中,"reserved mem addr & size"是一个关键概念。简单来说,它指的是在系统内存中预先划出一块特定区域,禁止操作系统或其他应用程序随意使用这块内存。这块保留内存通常用于特殊用途,比如:
- 硬件设备直接内存访问(DMA)缓冲区
- 安全敏感数据的存储区域
- 特定驱动程序的专用内存池
- 启动时加载的固件或引导程序
保留内存的实现方式通常有两种:静态分配和动态分配。静态分配通过设备树(Device Tree)中的'reg'属性明确指定内存的起始地址和大小;动态分配则使用'size'属性让系统在运行时自动分配一块符合要求的内存区域。
重要提示:保留内存一旦设置错误,可能导致系统崩溃或硬件无法正常工作。在修改这些参数前,务必确认你完全理解其含义。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 设备树中的保留内存配置详解
2.1 基本语法结构
在设备树中,保留内存通常在/reserved-memory节点下定义。一个典型的配置如下:
dts复制reserved-memory {
#address-cells = <2>;
#size-cells = <2>;
ranges;
/* 静态分配示例 */
custom_region@90000000 {
reg = <0x0 0x90000000 0x0 0x01000000>; /* 16MB at 0x90000000 */
no-map;
};
/* 动态分配示例 */
dynamic_region {
size = <0x0 0x1000000>; /* 16MB */
alignment = <0x0 0x200000>; /* 2MB对齐 */
alloc-ranges = <0x0 0x80000000 0x0 0x10000000>; /* 在0x80000000-0x90000000范围内分配 */
};
};
2.2 关键属性解析
- reg:用于静态内存分配,格式为<起始地址高位 起始地址低位 大小高位 大小低位>
- size
