【发布时间】:2017-11-11 09:40:41
【问题描述】:
我正在使用一个特定的编码器,它使用 512M 启动时间分配的内存。我应该通过 dts 文件配置来分配内存。物理内存在dts文件中分为低位和高位:
/* 256MB at 0x0 */
memory@0 {
device_type = "memory";
reg = <0x0 0x00000000 0x0 0x10000000>;
};
/* 2GB at 0x8010000000 */
memory@8000000000 {
device_type = "memory";
reg = <0x80 0x10000000 0x0 0x80000000>;
};
现在我想分配启动时间从高内存中挖出的内存。我可以考虑如下创建一个 dts 条目
encoder: encoder@0xxxxxxxxx {
compatible = "xyz, abc";
reg= <0x0 0x80000000 0x0 0x20000000>;
}
这里的encoder@xxxx是实际的设备入口,它已经有一组寄存器区域如下:
encoder: encoder@0xxxxxxxxx{
compatible = "xyz, abc";
#address-cells = <1>;
#size-cells = <1>;
reg = <0x0 0xxxxxxxxxx 0x0 0x1234>;
status = "disabled";
};
所以在添加雕刻内存后,条目将如下所示:
encoder: encoder@0xxxxxxxxx{
compatible = "xyz, abc";
#address-cells = <1>;
#size-cells = <1>;
reg = <0x0 0xxxxxxxxxx 0x0 0x1234>;
reg= <0x0 0x80000000 0x0 0x20000000>;
status = "disabled";
};
这行得通吗?我不确定驱动程序代码如何知道雕刻内存的起始地址及其大小?
有人可以帮忙吗?
谢谢。
【问题讨论】: