<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > ARM Linux內核啟動(dòng)要求

ARM Linux內核啟動(dòng)要求

作者: 時(shí)間:2016-11-11 來(lái)源:網(wǎng)絡(luò ) 收藏
這篇文章英文原版“ARM Linux Kernel Boot Requirements”,是ARM Linux內核的維護者Russell King寫(xiě)的。在此我將其簡(jiǎn)易的翻譯成中文,方便大家學(xué)習下。

原版:http://www.arm.linux.org.uk/developer/booting.php

本文引用地址:http://dyxdggzs.com/article/201611/316973.htmAuthor: Russell King
Initial date: May 18, 2002

Revision:1 - 17 September 20042 - 30 September 2004

為了啟動(dòng)ARM Linux,首先,你需要一個(gè)bootloader,它是一個(gè)很小的程序(在內核運行之前啟動(dòng))。bootloader的第一階段作用就是初始化各種硬件設備,最后,就是調用內核,并且將第一階段的各種參數傳遞給內核。

本質(zhì)上將,bootloader程序應提供(最小限度)如下幾個(gè)方面:

1、設置和初始化化RAM

2、初始化一個(gè)串口

3、檢測機器類(lèi)型

4、設置內核啟動(dòng)需要的標記列表

5、調用內核鏡像

1、設置和初始化RAM

現有的bootloader:強制性的(必須的)

新的bootloader:強制性的(必須的)

bootloader被用來(lái)去找到并初始化所有內核將用于非易失性數據存儲系統中使用的內存。它完成那些動(dòng)作都是在機器依賴(lài)的方式下完成的。(它可能采用內部算法來(lái)自動(dòng)定位和分類(lèi)所有的RAM,或者它可能采用特定機器的RAM的相關(guān)知識,或者任何其它的、設計者認為合適的方法)。

2、初始化一個(gè)串口

現有的bootloader:可選的,推薦使用的

新的bootloader:可選的,推薦使用的

bootloader在這個(gè)過(guò)程應該以初始化、使能一個(gè)串口設備為目標。這使得內核的串行驅動(dòng)程序自動(dòng)檢測哪一個(gè)串口應該被用來(lái)作為內核的控制臺。(一般用于調試或者通信的目的)。

可供選擇的,通過(guò)特定的串口標記列表,bootloader可以向內核傳遞諸如“console=”相關(guān)的參數,還可以傳遞一些串口格式的參數,比如在linux/Documentation/kernel-parameters.txt中描述的。

3、檢測機器ID

現有的bootloader:可選的

新的bootloader:強制性的(必須的)

bootloader必須創(chuàng )建和初始化內核標記列表。一個(gè)有效的標記列表開(kāi)始于A(yíng)TAG_CORE這個(gè)標記,結束于A(yíng)TAG_NONE,ATAG_CORE可能會(huì )是空的,或者也可能不是。一個(gè)空ATAG_CORE標記的大小被設置為2 (0x00000002),ATAG_NONE這個(gè)標記的大小必須設置為0。

任何號碼的標記都可以放置在這個(gè)標記列表中。但是,重復的標記是否附加到前面的標記所攜帶的信息中,或者它是否會(huì )取代完整的信息,這些都是不確定的。

The boot loader must pass at a minimum the size and location ofthe system memory, and root filesystem location,因此,最小的標記列表如下:

+-----------+base ->	| ATAG_CORE |  |+-----------+  || ATAG_MEM  |  | increasing address+-----------+  || ATAG_NONE |  |+-----------+  v
這個(gè)標記列表應該存放在系統的RAM中。

這個(gè)標記列表必須放置在一塊內存區中,這塊內存區內核既不能解壓,臨時(shí)的文件系統也不能覆蓋它。一般推薦的這個(gè)內存位置為RAM的第一個(gè)16KB大小處。

5、調用內核鏡像

現有的bootloader:強制性的(必須的)

新的bootloader:強制性的(必須的)

bootloader在調用內核的時(shí)候提供了連個(gè)選項。如果zImage鏡像存儲在Flash中,并且它被正確的鏈接為從Flash中啟動(dòng),那么,bootloader直接從Flash調用zImage就是合法的(有效的)。

zImage還可能放置在系統的RAM(RAM的任何位置)中,并且在那里被調用。請注意,內核使用內核鏡像下的16KB RAM來(lái)存放頁(yè)表。所以,這個(gè)頁(yè)表推薦放置在RAM的第32KB處。

在上述的兩種情況下,必須滿(mǎn)足以下條件:

●CPU 寄存器設置

★ r0=0;

★ r1=機器ID(上述第三步中發(fā)現的)

★r2=標記列表在RAM的物理地址

●CPU模式

★所有的中斷必須禁用

★CPU必須設置為SVC模式(操作系統保護模式),

●高速緩存、MMUs

★關(guān)MMU(內存映射)

★指令緩存可以設為開(kāi)或者關(guān)

★必須關(guān)數據緩存,并且其中不能含有“臟數據”

●設備

★不響應DMA設備

● bootloader通過(guò)直接跳轉到內核鏡像的第一條指令來(lái)最終實(shí)現內核的調用。



關(guān)鍵詞: ARMLinux內核啟動(dòng)要

評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>