設備樹和ATAG之間有什麼區別?另外,ATAG是必須的,內核是否期望它們處於固定地址,還是期望它們在r0-r3中?ARM Linux Atags與設備樹
8
A
回答
12
設備樹描述了內核用於選擇加載哪些驅動程序,所有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中找到的地址。但是,ATAGs的使用現在已經被棄用和廢棄,新的平臺不應該使用它。
3
基本上ATAGs被用來向Linux內核發送關於板子的機器特定信息(如內存,控制檯信息等等)的信息,這些ATAG被linux內核用來初始化MMU和其他子系統。現在所有與機器有關的信息都可以通過FDT(設備樹blob)傳遞出來。但是隨着設備樹的出現(更多的是用於arm,因爲它已經在powerpc架構中使用了)。
有一些想法用於使用新的atag「atag_dtd」向內核發送設備樹信息,但隨後出現了針對不使用ATAG的爭論,因爲不需要使用兩個seprate方法來執行單個事情。所以現在內核希望引導程序提供以下信息。
r0 = 0
r1 = Same type of SOC fdt machine id.
r2 = physical address where the dtd can be found.
它使用了bootloader用來發送atag信息的相同結構,所以它可以是後向字符兼容的。
希望它有幫助。
相關問題
- 1. Linux設備樹(AD5628)
- 2. 在Linux 4.9設備樹中添加SPI slave設備rapbery pi
- 3. 嵌入式linux設備樹生成
- 4. Linux上的ARM與Tegra 3
- 5. arm-linux-gnueabi工具鏈與arm-linux-androideabi工具鏈。
- 6. ARM設備解析錯誤
- 7. python中的嵌入式Linux設備樹分析器?
- 8. 在linux arm設備上使用JVM實現JSR135
- 9. arm-linux-gcc vs arm-elf-gcc
- 10. 解密設備樹
- 11. Stacktrace arm-linux-gcc
- 12. bootm沒有設備樹BLOB
- 13. AT91SAM9263ek使用設備樹啓動Linux失敗
- 14. 樹莓派,與串行設備通信
- 15. 設備樹GPIO重置
- 16. 將虛擬PCI設備與linux設備驅動程序接口
- 17. 與設備通信的Linux程序
- 18. Linux - 與設備關聯的端口
- 19. ARM/DSP Linux工具鏈內核設置
- 20. 可視化Linux內核使用的設備樹文件(dtb)的工具?
- 21. fseek char linux設備
- 22. 設置環境變量GCOV_PREFIX(與ARM-Linux的gnueabi-GCC)
- 23. 通過設備樹文件獲取設備地址C
- 24. 在linux中,打開固件設備樹和扁平化設備樹有什麼區別
- 25. SQLITE3問題與ARM-Linux的浮點
- 26. 把Linux移植到ARM
- 27. 針對16mb ram的V8 javascript ARM設備
- 28. Linux驅動程序的設備樹狀結構
- 29. 如何編寫Linux .dts設備樹文件?
- 30. 在Zedboard上爲嵌入式linux設備生成樹