新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > ARM Linux內(nèi)核啟動(dòng)流程

ARM Linux內(nèi)核啟動(dòng)流程

作者: 時(shí)間:2016-11-21 來源:網(wǎng)絡(luò) 收藏
操作ARM Linux內(nèi)核主要分為哪幾個(gè)步驟,下面杭州碩數(shù)就為大家講解一下這個(gè)啟動(dòng)的流程。

ARM Linux內(nèi)核綜述
  啟動(dòng)分兩步,
  首先是硬件相關(guān)部分,入口是arch/arm/kernel/head.S代碼文件中的ENTRY(stext)函數(shù);
  然后是硬件無關(guān)部分,入口函數(shù)是init/main.c代碼文件中的start_kernel函數(shù)。

本文引用地址:http://butianyuan.cn/article/201611/319248.htm

ARM Linux內(nèi)核硬件相關(guān)部分
  1. 我們平臺是arm,自然硬件相關(guān)部分代碼在arch/arm/里面。
  2. 平臺相關(guān)部分的核心代碼自然在arch/arm/kernel/里面。
  3. 找入口函數(shù),必須從對應(yīng)目錄的Makefile和鏈接腳本*.lds入手!
    # ls arch/arm/kernel/
    得到一個(gè)Makefile文件和一個(gè)vmlinux.lds文件
    # vim arch/arm/kernel/Makefile
    看到有一句extra-y := $(head-y) init_task.o vmlinux.lds,則說明其使用鏈接腳本為vmlinux.lds
    還有一句head-y := head$(MMUEXT).o
    # vim arch/arm/kernel/vmlinux.lds
    看到有一句ENTRY(stext),則說明入口函數(shù)為stext

 4. 結(jié)合上面3句關(guān)鍵的代碼,可以推測stext函數(shù)在arch/arm/kernel/head*.S或arch/arm/kernel/head*.c
  # ls arch/arm/kernel/head*
  得到arch/arm/kernel/head-common.S arch/arm/kernel/head-nommu.S arch/arm/kernel/head.o arch/arm/kernel/head.S
  再結(jié)合Makefile的默認(rèn)規(guī)則%.o : %.S 或 %.o : %.c
  可以知道arch/arm/kernel/head.o與arch/arm/kernel/head.S對應(yīng)。
  另外,查找arch/arm/kernel/目錄下,有那個(gè)文件有“stext”字樣



評論


技術(shù)專區(qū)

關(guān)閉