当前位置: 首页 > 面试题库 >

ARM Linux标签与设备树

叶鸿
2023-03-14
问题内容

设备树和ATAG有什么区别?另外,ATAG是必须的吗?内核是否期望它们位于固定地址,还是期望它们位于r0-r3中?


问题答案:

设备树描述了与硬件有关的所有内容,内核在运行时使用这些硬件来选择要加载的驱动程序,所有MMIO接口的位置等等。ATAG只是描述诸如在哪里可以找到initrd以及内核参数,内存等的内容-
与机器有关的所有其他信息都被硬编码到内核中。

现在首选的方法是使用设备树代替ATAG。优点之一包括以下事实:添加新平台并不一定总是需要向内核添加新代码

为了回答第二个问题,如果您已经阅读了有关在ARM平台上引导Linux的文档,则会发现内核希望在将控制权移交给内核之前将以下内容放入寄存器中:

r0 = 0,
r1 = machine type number discovered in (3) above.
r2 = physical address of tagged list in system RAM, or
     physical address of device tree block (dtb) in system RAM

我相信有(或者至少是)从固定位置而不是r2中找到的地址加载ATAG的选项。但是,现在不建议使用ATAG,并且已经过时了,不应使用新平台。



 类似资料:
  • Ceph 块设备最常见的用法之一是作为虚拟机的块设备映像。例如,用户可创建一个安装、配置好了操作系统和相关软件的“黄金标准”映像,然后对此映像做快照,最后再克隆此快照(通常很多次)。详情参见快照。能制作快照的写时复制克隆意味着 Ceph 可以快速地为虚拟机提供块设备映像,因为客户端每次启动一个新虚拟机时不必下载整个映像。 Ceph 块设备可以和 QEMU 虚拟机集成到一起,关于 QEMU 可参考

  • CloudStack 4.0 及以上版本可以通过 libvirt 使用 Ceph 块设备, libvirt 会配置 QEMU 与 librbd 交互。 Ceph 会把块设备映像条带化为对象并分布到整个集群,这意味着大个的 Ceph 块设备性能会优于单体服务器! 要让 CloudStack 4.0 及更高版使用 Ceph 块设备,你得先安装 QEMU 、 libvirt 和 CloudStack 。

  • 通过 libvirt 你可以把 Ceph 块设备用于 OpenStack ,它配置了 QEMU 到 librbd 的接口。 Ceph 把块设备映像条带化为对象并分布到集群中,这意味着大容量的 Ceph 块设备映像其性能会比独立服务器更好。 要把 Ceph 块设备用于 OpenStack ,必须先安装 QEMU 、 libvirt 和 OpenStack 。我们建议用一台独立的物理主机安装 Open

  • 我想使用弹出信息气球向我的GE地图添加标签,其中包含与整个地图相关的信息,而无需将该信息绑定到地图上的任何特定点。我可以创建一个带有描述的定位标记,但将标签钉在任意地理点。 我更喜欢将标签钉在屏幕上的某个点上,这样当用户缩放或平移时,标签会留在屏幕上,但不会碍事(例如,右下角)。我最接近的方法是创建一个placemark并将其可见性设置为0或删除其坐标。它将placemark名称作为Places面

  • for、switch 或 select 语句都可以配合标签(label)形式的标识符使用,即某一行第一个以冒号(:)结尾的单词(gofmt 会将后续代码自动移至下一行)。 示例 5.13 for6.go: (标签的名称是大小写敏感的,为了提升可读性,一般建议使用全部大写字母) package main import "fmt" func main() { LABEL1: for i

  • 用xlabel, ylabel, 及zlabel 命令添加x-,y-,z-等标签。用title 命令在图象顶部加标题,用text 函数在图象中任何部位添加文本。TeX标记的子集则产生希腊字母。可以交互地设置这些选项。详见图形的编辑。 t = -pi:pi/100:pi; y = sin(t); plot(t,y) axis([-pi pi -1 1]) xlabel('-\pi \leq {\it