說明:本文所使用的U-Boot的版本是1.1.6,平台是S3C2440。
U-Boot源代碼下載地址 http://www.linuxidc.com/Linux/2011-07/38897.htm
U-Boot與Linux內核的交互是單向的,U-Boot將各類參數傳遞給讷河。由於他們不能同時運行,傳遞辦法只能有一個個:U-Boot將參數放在某個約定的地方之後,在啟動內核,內核啟動後從這個地方獲得參數。
除了約定好參數存放的地方外,還要規定參數的結構。Linux2.4.x以後的內核都以標記列表(tagged list)的形式來傳遞參數。標記就是一種數據結構;標記列表就是挨著存放的多個標記。標記列表以標記ATAG_CORE開始,以ATAGE_NONE結束。
標記的數據結構為tag,它是偶一個tag_header結構和一個聯合體(union)組成。tag_header結構體表示標記的類型及長度,比如是表示內存還是表示命令行參數等。對於不同類型的標記使用不同的聯合體,比如表示內存=時使用tag_men32,表示命令行時使用tag_cmdline。其定定義在include/asm-arm/setup.c文件中。