获得主内存布局,而不是仅针对单个riscv实现

  • 本文关键字:单个 实现 riscv 内存 布局 riscv
  • 更新时间 :
  • 英文 :


我正在为riscv-isa开发操作系统内核,主要使用汇编语言。我喜欢使用riscv规范和SiFive FU540规范作为参考。

我需要让内核知道哪些地址范围不是为其他组件保留的,因此可以用于内核及其进程。这必须以某种方式发生,适用于尽可能多的未来riscv实现。然而,我只能找到SiFive FU540实现特有的内存映射。

在特权体系结构版本1.10riscv规范第8章中,它说有一个设备树可以将平台信息传达给内核,但我找不到足够的关于它如何工作的信息。

为了减少操作系统引导的移植工作量,我们恢复使用设备树将平台信息通信到内核,因此本章已过时。Cong字符串还被设计用于其他用途,但目前,我们仍使用标准的设备树模型。

现在我的问题:

  1. 是否有文件深入讨论了riscv ISA的设备树?

  2. 设备树模型是一个临时解决方案吗,所以我应该等到它被替换?

设备树主要是Linux内核的概念。然后,对于Risc-V设备树文档,在我看来,您应该看看这里的内核文档。所有属于Risc-V的代码都可以在arch/rescv/目录中找到。

设备树标准本身有点奇怪:devicetree.org维护了一个设备树标准,但它更侧重于二进制编码,而不是节点的实际含义。

设备树节点的定义特定于特定的兼容字符串,并且在documentation/devicetree/bindings中的Linux源代码旁边是这些生命的最佳文档。你最好的选择就是在那里grep一个兼容的字符串。文档相当不错,但我们当然很乐意听到您有任何问题——或者更好的是,补丁:(。

Linux存储库中的设备树绑定是通用的(即,不是Linux特有的(,但由于它们与Linux源代码在同一个存储库中,它们往往会偷偷加入一些Linux主义。在RISC-V领域,我们试图保持设备树条目在所有操作系统之间的兼容性,但这是一项持续的工作。我知道我们的Zephyr端口也使用设备树,虽然它与Linux设备树基本兼容,但也有一些不同。

我们计划在可预见的未来使用设备树作为RISC-V Linux端口的一部分。我们的目的是将设备树视为一个稳定的ABI,就像我们所有的其他设备一样。换句话说:一旦绑定在Linux源代码树中,我们就不会以二进制不兼容的方式更改它。这个计划的效果如何还有待观察。

最新更新