0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Linux內(nèi)核入口stext段分析

麥辣雞腿堡 ? 來源:嵌入式Linux系統(tǒng)開發(fā) ? 作者:Jasonangel ? 2023-09-28 17:07 ? 次閱讀

stext 段

從上面的ENTRY(stext)可以知道,一開始是運行stext段,這個段內(nèi)的代碼是 start_kernel 函數(shù)前匯編環(huán)境的初始化。

linux4.14/arch/arm64/kernel/head.S

圖片

preserve_boot_args 保存 bootloader 傳遞過來的參數(shù)。

el2_setup 是設(shè)置 Linux 啟動模式是 EL2。Linux 有 EL0、EL1、EL2、EL3 四種異常啟動模式,這里設(shè)置一開始是EL2,EL2 支持虛擬內(nèi)存技術(shù),然后注釋說明后面又退回 EL1,在 EL1 啟動 kernel。EL3 一般是只在安全模式使用。

set_cpu_boot_mode_flag 保存上面 cpu 的啟動模式。

__create_page_tables 創(chuàng)建頁表。

__cpu_setup 初始化CPU,這里主要是初始化和 MMU 內(nèi)存相關(guān)的 CPU 部分。

__primary_switch 這里會進行跳轉(zhuǎn)。

在同一個文件中,會跳轉(zhuǎn)到這里,739 行開啟了MMU。然后最重要的是跳轉(zhuǎn)到

__primary_switched 函數(shù)。先把 __primary_switched 地址放到 x8 寄存器中,再跳轉(zhuǎn)到 x8,也就是跳轉(zhuǎn)到__primary_switched。

圖片

接下來分析 __primary_switched 函數(shù):

圖片

圖片

324-327 初始化了 init 進程的內(nèi)存信息,開辟了內(nèi)存空間。

329-334 設(shè)置了向量表。

336-340 保存了FDT,也就是 flat device tree 。

342-348 清除了BSS 段,我們知道一般是內(nèi)存四區(qū):堆區(qū)、棧區(qū)、全局區(qū)、代碼區(qū)。其中全局區(qū)可以再分為 data 段和 BSS 段,BSS段存儲了未初始化的變量,這里將BSS段進行清零操作,否則內(nèi)存中的值是不確定的,這是一個傳統(tǒng)操作。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 內(nèi)核
    +關(guān)注

    關(guān)注

    3

    文章

    1351

    瀏覽量

    40161
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11182

    瀏覽量

    208546
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4264

    瀏覽量

    62252
收藏 人收藏

    評論

    相關(guān)推薦

    Linux內(nèi)核data和bss的區(qū)別

    從進程的角度,Linux內(nèi)核是采用虛擬地址空間的,如下兩張圖所示,分別為32位、64位系統(tǒng)下進程地址空間的大概布局。
    發(fā)表于 10-13 17:07 ?8664次閱讀
    <b class='flag-5'>Linux</b><b class='flag-5'>內(nèi)核</b>data<b class='flag-5'>段</b>和bss<b class='flag-5'>段</b>的區(qū)別

    Linux內(nèi)核地址映射模型與Linux內(nèi)核高端內(nèi)存詳解

    的數(shù)據(jù)可能不在內(nèi)存中。 Linux內(nèi)核地址映射模型 x86 CPU采用了頁式地址映射模型。進程代碼中的地址為邏輯地址,經(jīng)過頁式地址映射后,才真正訪問物理內(nèi)存。
    發(fā)表于 05-08 10:33 ?3426次閱讀
    <b class='flag-5'>Linux</b><b class='flag-5'>內(nèi)核</b>地址映射模型與<b class='flag-5'>Linux</b><b class='flag-5'>內(nèi)核</b>高端內(nèi)存詳解

    linux內(nèi)核分析及編程

    linux內(nèi)核分析及編程
    發(fā)表于 04-20 08:26

    「正點原子Linux連載」第三十六章Linux內(nèi)核啟動流程

    *(.ARM.exidx.exit.text)508 *(.ARM.extab.exit.text)509......645}第493行的ENTRY指明了了Linux內(nèi)核入口,入口stex
    發(fā)表于 03-17 11:07

    Linux內(nèi)核啟動流程-迅為IMX6ULL開發(fā)板(一)

    指明了Linux內(nèi)核入口函數(shù)為stext,因此要分析Linux內(nèi)核第二階
    發(fā)表于 07-17 11:13

    AT32 MCU Cortex M4內(nèi)核入門指南

    AT32 MCU Cortex M4內(nèi)核入門指南主要介紹了AT32 M4 內(nèi)核系統(tǒng)架構(gòu),并針對M4 內(nèi)核自帶的位帶、硬件浮點運算單元和滴答時鐘中斷功能進行基礎(chǔ)講解和案例解析。
    發(fā)表于 10-25 08:08

    基于內(nèi)核入侵的木馬設(shè)計與實現(xiàn)

             通過內(nèi)核入侵是木馬入侵 Linux 系統(tǒng)的一種重要形式,其原理是利用Linux 內(nèi)核
    發(fā)表于 09-05 08:32 ?9次下載

    linux內(nèi)核啟動內(nèi)核解壓過程分析

    linux啟動時內(nèi)核解壓過程分析,一份不錯的文檔,深入了解內(nèi)核必備
    發(fā)表于 03-09 13:39 ?1次下載

    基于Linux 2.6內(nèi)核Makefile分析

    基于2.4內(nèi)核的,可以說關(guān)于2.6內(nèi)核Makefile相關(guān)的文章鳳毛麟角,筆者抽時間完成了這篇分析文章,讓讀者迅速熟悉Linux最新Makefile體系,從而加深對
    發(fā)表于 09-18 19:09 ?0次下載
    基于<b class='flag-5'>Linux</b> 2.6<b class='flag-5'>內(nèi)核</b>Makefile<b class='flag-5'>分析</b>

    關(guān)于Linux 2.6內(nèi)核Makefile的分析

    的介紹文章都是基于2.4內(nèi)核的,可以說關(guān)于2.6內(nèi)核Makefile相關(guān)的文章鳳毛麟角,筆者抽時間完成了這篇分析文章,讓讀者迅速熟悉Linux最新Makefile體系,從而加深對
    發(fā)表于 11-02 10:12 ?1次下載

    linux內(nèi)核入門教材之linux內(nèi)核設(shè)計與實現(xiàn)第二版中文版免費下載

    此書是當(dāng)今首屈一指的linux內(nèi)核入門最佳圖書。作者是為2.6內(nèi)核加入了搶占的人,對調(diào)度部分非常精通,而調(diào)度是整個系統(tǒng)的核心,因此本書是很權(quán)威的。這本書講解淺顯易懂,全書沒有列舉一條匯編語句,但是
    發(fā)表于 10-15 18:20 ?0次下載
    <b class='flag-5'>linux</b><b class='flag-5'>內(nèi)核入</b>門教材之<b class='flag-5'>linux</b><b class='flag-5'>內(nèi)核</b>設(shè)計與實現(xiàn)第二版中文版免費下載

    嵌入式Linux內(nèi)核移植相關(guān)代碼分析

    分析 */ /* 內(nèi)核入口點 */ ENTRY(stext) /* 程序狀態(tài),禁止FIQ、IRQ,設(shè)定SVC模式 */ mov r0, #F_BIT | I_BIT | MODE_SVC@ make
    發(fā)表于 04-02 14:37 ?247次閱讀

    【站友投遞】linux內(nèi)核啟動流程

    Linux內(nèi)核啟動流程 arch/arm/kernel/head-armv.S 該文件是內(nèi)核最先執(zhí)行的一個文件,包括內(nèi)核入口ENTRY(
    發(fā)表于 04-02 14:38 ?435次閱讀

    Linux內(nèi)核配置編譯分析的設(shè)計方案

    Linux內(nèi)核配置編譯分析的設(shè)計方案
    發(fā)表于 07-08 16:53 ?18次下載
    <b class='flag-5'>Linux</b><b class='flag-5'>內(nèi)核</b>配置編譯<b class='flag-5'>分析</b>的設(shè)計方案

    Linux內(nèi)核GPIO操作函數(shù)的詳解分析

    本文檔的主要內(nèi)容詳細(xì)介紹的是Linux內(nèi)核GPIO操作函數(shù)的詳解分析免費下載。
    發(fā)表于 01-22 16:58 ?28次下載