ARM Linux Atags与设备树
作者:互联网
设备树和ATAG有什么区别?此外,ATAG是必须的,内核是否期望它们在固定地址,或者它是否期望它们在r0-r3中?
解决方法:
设备树描述了内核用于选择要加载哪些驱动程序的硬件的所有内容,所有MMIO接口都在运行时. ATAG只描述了在哪里可以找到initrd和内核参数,内存等… – 机器的其他所有内容都硬编码到内核中.
现在首选的方法是使用设备树而不是ATAG.其中一个优点包括添加新平台并不总是需要向内核添加新代码.
要回答你的第二个问题,如果你已经阅读了booting Linux on the ARM platform的文档,你会发现在将控制权移交给内核之前,内核需要将以下内容放在寄存器中:
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
我相信有(或至少是)从固定位置加载ATAG而不是在r2中找到的地址的选项.但是,ATAG的使用现在已经过时并且已经过时,新平台不应该使用它.
标签:device-tree,linux,arm,linux-kernel 来源: https://codeday.me/bug/20191004/1854504.html