Bootloader啓動大多數都分爲兩個階段.第一個階段主要包含依賴於CPU的體系結構硬件初始化的代碼,通常都用彙編語言來實現。這個階段的任務有:
1、基本的硬件設備初始化(屏蔽所有的中斷、關閉處理器內部指令/數據cache等)。
2、爲第二階段準備RAM空間。
3、如果是從某個固態存儲煤質中,則複製Bootloader的第二階段代碼到RAM。
4、設置堆棧。
5、跳轉到第二階段的c程序入口點。
特別注意的地方:
在第一階段中爲什麼要關閉cache?通常使用cache以及寫緩衝是爲了提高系統性能。但由於cache的使用可能改變訪問主存的數量、類型和時間,因此Bootloader通常是不需要的。
第二階段通常用C語言完成,以便實現更復雜的功能,也使程序有更好的可讀性和可移植性,這個階段的任務有:
1、初始化本階段要使用到的硬件設備。
2、檢測系統內存映射。
3、將內核映像和根文件系統映像從Flash讀到RAM。
4、爲內核設置啓動參數。
5、調用內核。