(ARM) bootloader 怎麼把kernel參數傳送給kernel.



首先,該看一下以下網址

http://www.simtec.co.uk/products/SWLINUX/files/booting_article.html

或者是Kernel 內附的文件
Documentation/arm/Booting

----------------------------------------------------------




以下是個人心得

Arm 版本不是使用setup_header結構,而是一個所謂ATAG 的結構佇列,bootloader需要自行在記憶體中建立一個ATAG佇列.這個佇列的的開始位址,在bootloader 開始執行kernel的start code 前,放在Arm CPU 的R2暫存器內.(R1暫存器放機器型別代號)

每一個ATAG結構塊,都會有一個旗標顯示這個結構塊是屬於哪一種類型的ATAG ,像有ATAG_CORE壓,ATAG_MEM壓,ATAG_INITRD2等.一看名字就知道要幹嘛.

當我要把initrd/initramfs 的位置告訴kernel時,就可以利用ATAG_INITRD2這類型的ATAG.當我要把kernel command line 告訴kernel時,就可以利用ATAG_CMDLINE

留言

這個網誌中的熱門文章

[C語言]宣告陣列的大小是0 ???

利用net-snmp 的mib2c,由一個MIB檔產出一個可執行的AgentX 程式

ubuntu 16.04開機遇到 flip_done timed out 的問題