那曲檬骨新材料有限公司

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)可以知道,一開始是運(yùn)行stext段,這個(gè)段內(nèi)的代碼是 start_kernel 函數(shù)前匯編環(huán)境的初始化。

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

圖片

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

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

set_cpu_boot_mode_flag 保存上面 cpu 的啟動(dòng)模式。

__create_page_tables 創(chuàng)建頁表。

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

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

在同一個(gè)文件中,會跳轉(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 進(jìn)程的內(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段進(jìn)行清零操作,否則內(nèi)存中的值是不確定的,這是一個(gè)傳統(tǒng)操作。

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

    關(guān)注

    3

    文章

    1382

    瀏覽量

    40423
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11345

    瀏覽量

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

    關(guān)注

    3

    文章

    4346

    瀏覽量

    62972
收藏 人收藏

    評論

    相關(guān)推薦

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

    從進(jìn)程的角度,Linux內(nèi)核是采用虛擬地址空間的,如下兩張圖所示,分別為32位、64位系統(tǒng)下進(jìn)程地址空間的大概布局。
    發(fā)表于 10-13 17:07 ?9147次閱讀
    <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ìn)程代碼中的地址為邏輯地址,經(jīng)過頁式地址映射后,才真正訪問物理內(nèi)存。
    發(fā)表于 05-08 10:33 ?3482次閱讀
    <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)存詳解

    飛凌嵌入式ElfBoard ELF 1板卡-Linux內(nèi)核移植之內(nèi)核啟動(dòng)流程

    /kernel/vmlinux.lds可以找到內(nèi)核入口ENTRY(stext): 而stext存在于arch/arm/kernel/head.S中: 在stext下有一個(gè)__mma
    發(fā)表于 01-06 09:51

    嵌入式學(xué)習(xí)-飛凌嵌入式ElfBoard ELF 1板卡-Linux內(nèi)核移植之內(nèi)核啟動(dòng)流程

    /kernel/vmlinux.lds可以找到內(nèi)核入口ENTRY(stext):而stext存在于arch/arm/kernel/head.S中:在stext下有一個(gè)__mmap_sw
    發(fā)表于 01-07 09:20

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

    *(.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)核啟動(dòng)流程-迅為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)核自帶的位帶、硬件浮點(diǎn)運(yùn)算單元和滴答時(shí)鐘中斷功能進(jìn)行基礎(chǔ)講解和案例解析。
    發(fā)表于 10-25 08:08

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

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

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

    linux啟動(dòng)時(shí)內(nèi)核解壓過程分析,一份不錯(cuò)的文檔,深入了解內(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)的文章鳳毛麟角,筆者抽時(shí)間完成了這篇分析文章,讓讀者迅速熟悉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)的文章鳳毛麟角,筆者抽時(shí)間完成了這篇分析文章,讓讀者迅速熟悉Linux最新Makefile體系,從而加深對
    發(fā)表于 11-02 10:12 ?1次下載

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

    此書是當(dāng)今首屈一指的linux內(nèi)核入門最佳圖書。作者是為2.6內(nèi)核加入了搶占的人,對調(diào)度部分非常精通,而調(diào)度是整個(gè)系統(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è)計(jì)與實(shí)現(xiàn)第二版中文版免費(fèi)下載

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

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

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

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

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

    本文檔的主要內(nèi)容詳細(xì)介紹的是Linux內(nèi)核GPIO操作函數(shù)的詳解分析免費(fèi)下載。
    發(fā)表于 01-22 16:58 ?28次下載
    卡宾娱乐| 顶级赌场官方网站| 百家乐赌法博彩正网| 电投百家乐官网网站| 皇冠真钱| 威尼斯人娱乐城开户地址| 最新百家乐游戏机| 百家乐官网职业赌徒的解密| 天柱县| 百家乐棋牌交| 百家乐官网币| 鱼台县| 盐城棋牌游戏中心| 哪里有百家乐游戏下载| 百家乐视频美女| 曼哈顿百家乐官网娱乐城| 百家乐官网可以算牌么| 金冠娱乐城注册| 威尼斯人娱乐城轮盘| 百家乐赌场分析网| 百家乐送彩金平台| 百家乐官网大娱乐场开户注册| 百家乐官网视频游戏官网| 八大胜官网| 大发888任务| 大集汇百家乐的玩法技巧和规则 | 百家乐官网庄89| 百家乐官网赌博机原理| 网络百家乐| 24山72向局图解| 至尊百家乐官网赌场娱乐网规则 | 立博百家乐官网的玩法技巧和规则| 大发百家乐官网现金| 百家乐官网真人游戏网| 泸州市| 皇冠代理网| 蜀都棋牌游戏| 全讯网a3322| 定制百家乐桌子| 先锋百家乐的玩法技巧和规则| 百家乐分析软件下|