新聞中心

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

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

        作者: 時(shí)間:2016-11-21 來(lái)源:網(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ù);
          然后是硬件無(wú)關(guān)部分,入口函數(shù)是init/main.c代碼文件中的start_kernel函數(shù)。

        本文引用地址:http://www.104case.com/article/201611/319248.htm

        ARM Linux內(nèi)核硬件相關(guān)部分
          1. 我們平臺(tái)是arm,自然硬件相關(guān)部分代碼在arch/arm/里面。
          2. 平臺(tái)相關(guān)部分的核心代碼自然在arch/arm/kernel/里面。
          3. 找入口函數(shù),必須從對(duì)應(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,則說(shuō)明其使用鏈接腳本為vmlinux.lds
            還有一句head-y := head$(MMUEXT).o
            # vim arch/arm/kernel/vmlinux.lds
            看到有一句ENTRY(stext),則說(shuō)明入口函數(shù)為stext

         4. 結(jié)合上面3句關(guān)鍵的代碼,可以推測(cè)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對(duì)應(yīng)。
          另外,查找arch/arm/kernel/目錄下,有那個(gè)文件有“stext”字樣



        評(píng)論


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

        關(guān)閉
        主站蜘蛛池模板: 莒南县| 宜良县| 清徐县| 潢川县| 英山县| 通海县| 浮梁县| 安顺市| 高邮市| 阿拉善右旗| 莱阳市| 广水市| 永修县| 佛山市| 腾冲县| 县级市| 佛学| 元谋县| 永康市| 岱山县| 镇安县| 乌兰县| 岳阳市| 徐汇区| 泸定县| 东山县| 叶城县| 淮滨县| 道真| 揭东县| 松阳县| 固原市| 克东县| 梁山县| 周至县| 屯留县| 灌云县| 绥宁县| 长沙县| 焦作市| 新建县|