我试图从DTS文件中了解以下内容。对于OS / Kernel来说,这是一个新手。
cpus {
#address-cells = <1>;
#size-cells = <0>;
PowerPC,8313@0 {
device_type = "cpu";
reg = <0x0>;
d-cache-line-size = <32>;
i-cache-line-size = <32>;
d-cache-size = <16384>;
i-cache-size = <16384>;
timebase-frequency = <0>;
bus-frequency = <0>;
clock-frequency = <0>;
};
};
有人可以提供以上的简要说明吗?
我理解以下内容。 高速缓存块大小或高速缓存行大小:在高速缓存未命中时传输的数据量。 指令缓存(I-cache):只能保存指令的缓存。 数据缓存(D-cache):只能保存数据的缓存。
i-cache-line-size是什么意思?
d-cache-line-size = <32>;
i-cache-line-size = <32>;
d-cache-size = <16384>;
i-cache-size = <16384>;
在某些dts文件中,有来自引导装载程序的注释,如下所示。
cpus {
#address-cells = <1>;
#size-cells = <0>;
PowerPC,8313@0 {
device_type = "cpu";
reg = <0x0>;
d-cache-line-size = <32>;
i-cache-line-size = <32>;
d-cache-size = <16384>;
i-cache-size = <16384>;
timebase-frequency = <0>; // from bootloader
bus-frequency = <0>; // from bootloader
clock-frequency = <0>; // from bootloader
};
};
如何找到bootloader中的哪个文件? 使用的Bootloader是U-boot。
感谢。
答案 0 :(得分:2)
DTS代码段描述了PowerPC 8313 CPU。
7.1.5.2缓存单元 e300c3提供 16-Kbyte ,四路组关联指令和数据缓存。缓存块是32 字节长 ...
此外,
7.1.6总线接口单元(BIU)由于高速缓存是片上,回写高速缓存,因此最常见的事务是突发读取内存 操作,突发写入内存操作, ...
... 内存访问可能发生在64位数据总线上的单拍(1-8字节)和四拍突发(32字节)数据传输中。
基本上DTS片段配置:
缓存大小(至16KB)
完全使用板载缓存
行大小(至32字节)
有效地使用 BIU ,以便在CPU和片上缓存之间实现最快的传输。
更新:关于您从哪里开始的查询?...
最佳书籍始终是相关处理器的技术参考手册。它将充满你的硬件特有的术语,你需要耐心地了解和理解。
同时开始了解 Linux Kernel with books ,例如“Linux设备驱动程序3e”,“了解Linux内核”和“专业Linux内核架构”。
引导加载程序通常用硬件编写,并使用与Linux内核类似的语义实现,即从中大量借用。互联网上的随机博客中提供了大量的东西。在Stackoverflow和kernelnewbies等邮件列表中保持活跃是定期查找它们的好方法。