衡阳派盒市场营销有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Linux啟動流程中console_init分析

麥辣雞腿堡 ? 來源:嵌入式Linux系統開發 ? 作者:Jasonangel ? 2023-09-28 16:23 ? 次閱讀

console_init

分析

Linux 啟動函數 start_kernel 會調用 console_init 函數。

linux4.14/kernel/printk/printk.c

圖片

linux4.14/drivers/tty/n_tty.c

圖片

我們可以看到,console_init 主要做了兩件事情:

1、n_tty_init 主要調用 tty_register_ldisc(N_TTY,
&n_tty_ops) 注冊 tty 線路規程。

2、

call = __con_initcall_start;
 while (call < __con_initcall_end) {
  (*call)();
  call++;
 }

這里主要是調用 __con_initcall_start 到 __con_initcall_end
之間的函數。

__con_initcall_start 和 __con_initcall_end 定義在:

linux4.14/include/asm-generic/vmlinux.lds.h

圖片

中間包含了 .con_initcall.init 段:

linux4.14/include/linux/init.h

圖片

我們通過 console_init 聲明的驅動模塊,就會出現在這個段中,被調用。普通我們聲明的驅動模塊都是使用
module_init,如果我們寫的是串口驅動,可以使用console_init 聲明。

如果要看具體中間有什么函數,可以查看編譯 Linux 內核的輸出 System.map 文件,這個文件記載了從頭到尾
Linux 干了什么,具體的地址存儲了什么東西。

System.map 文件默認在編譯后的 Linux 內核根目錄下, 當然我們也可以修改到其他目錄。

圖片

這里會有三列:地址,區,函數名字。

如果后面我們使用 console_init(serial_5685_xxxx)去聲明我們的驅動,那么這個
serial_5685_xxxx 就會出現在 __con_initcall_start 和 __con_initcall_end 之間,就會被調用。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 模塊
    +關注

    關注

    7

    文章

    2735

    瀏覽量

    47755
  • Linux
    +關注

    關注

    87

    文章

    11345

    瀏覽量

    210409
  • 函數
    +關注

    關注

    3

    文章

    4346

    瀏覽量

    62978
收藏 人收藏

    評論

    相關推薦

    Linux啟動流程基本分析

    Linux啟動流程總的來說可以分成三個階段 Linux啟動流程圖 ? 第一步:上電 ?在 x86
    的頭像 發表于 05-11 08:49 ?769次閱讀
    <b class='flag-5'>Linux</b><b class='flag-5'>啟動</b><b class='flag-5'>流程</b>基本<b class='flag-5'>分析</b>

    linux啟動流程分析

    linux啟動流程分析
    發表于 08-04 00:27

    嵌入式linux 串口console注冊

    是__con_initcall_start,該段的所有函數在driver\tty\tty_io.c\console_init函數調用,console_init在start_kern
    發表于 03-05 13:53

    如何解決板子啟動時串口提示can not open init console問題?

    板子啟動時 串口提示can not open init console??找了很多資料 沒能 解決
    發表于 07-12 05:45

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

    文件arch/arm/kernel/head.S,因此要分析Linux內核的啟動流程,就得先從文件arch/arm/kernel/head
    發表于 03-17 11:07

    詳細分析嵌入式Linux系統啟動流程

    在嵌入式Linux專題(一)已經對嵌入式Linux系統的架構及啟動流程有了初步的介紹,本文將詳細分析
    發表于 11-05 09:25

    在rtthreadjlink的rtt作為console口的具體使用流程

    來作為console口進行調試,省得再單獨引出一個串口,具體使用流程如下:在rtthread setting開啟systemview包。修改console口的名稱為segger修改b
    發表于 08-01 15:26

    Linux運行級init詳解

    Linux 啟動時需要哪些步驟呢?本文將詳細描述不同的運行級在啟動的作用。 對于那些在DOS/Win9x/NT 平臺下的高級用戶而言,Linux
    發表于 11-07 10:59 ?0次下載

    詳解bootloader的執行流程與ARM Linux啟動過程分析

    S3C2410 ARM處理器為例,詳細分析了系統上電后 bootloader的執行流程及 ARM Linux啟動過程。
    的頭像 發表于 12-21 09:24 ?1.1w次閱讀
    詳解bootloader的執行<b class='flag-5'>流程</b>與ARM <b class='flag-5'>Linux</b><b class='flag-5'>啟動</b>過程<b class='flag-5'>分析</b>

    走進Linux之systemd啟動過程

    Linux系統的啟動方式有點復雜,而且總是有需要優化的地方。傳統的Linux系統啟動過程主要由著名的init進程(也被稱為SysV
    發表于 04-27 19:14 ?3211次閱讀

    Linux系統下init進程的前世今生

    Linux系統init進程(pid=1)是除了idle進程(pid=0,也就是init_task)之外另一個比較特殊的進程,它是Linux
    發表于 04-28 17:23 ?998次閱讀

    解析基于ARM64的init用戶進程究竟如何啟動?

    [導讀] 前面的文章有提到linux啟動的第一個進程為init,那么該進程究竟是如何從內核啟動入口一步一步運行起來的,而該進程又有些什么作...
    發表于 01-26 17:05 ?2次下載
    解析基于ARM64的<b class='flag-5'>init</b>用戶進程究竟如何<b class='flag-5'>啟動</b>?

    linux內核啟動過程會執行用戶空間的init進程

    linux內核啟動過程的后期,在kernel_init()函數代表的init線程,會嘗試執行用戶空間的
    的頭像 發表于 10-14 09:12 ?1211次閱讀

    kernel執行第一個init應用程序的實現原理

    Linux系統啟動過程中通過`init_task`創建0號idle進程。然后通過`kernel_thread`創建1號init進程。
    的頭像 發表于 06-05 14:53 ?961次閱讀
    kernel執行第一個<b class='flag-5'>init</b>應用程序的實現原理

    STM32的完整啟動流程分析

    STM32的完整啟動流程分析
    的頭像 發表于 10-25 16:00 ?1461次閱讀
    STM32的完整<b class='flag-5'>啟動</b><b class='flag-5'>流程</b><b class='flag-5'>分析</b>
    大发888 博彩| 延长县| 百家乐大眼仔小路| 百家乐官网路单免费下载| 百家乐刷钱| 百家乐洗码软件| 百家乐官网赌博软件下载| 拉斯维加斯国际娱乐| 百家乐单机游戏免费下| KTV百家乐官网的玩法技巧和规则 王子百家乐官网的玩法技巧和规则 | 百家乐官网国际娱乐场| 梅州市| 大发888客户端的软件| 澳门百家乐秘积| 百家乐官网职业打| 超级百家乐官网2龙虎斗| 融水| 大发888娱乐场下载sampling id112| 信誉百家乐博彩网| 网页百家乐官网游戏下载| 模拟百家乐官网游戏软件| 广发娱乐城| 德州扑克怎么玩| 威尼斯人娱乐场28| 大发888娱乐鸿博娱乐| 大众百家乐娱乐城| 百家乐庄家怎样赚钱| 百家乐最好的投注方法| 至尊百家乐规则| 捷豹百家乐官网的玩法技巧和规则 | 大发888真钱游戏平台| 百家乐娱乐真人娱乐| 百家乐9点直赢| 可以玩百家乐的博彩公司| 阴宅24层手机罗盘| 巨星百家乐官网的玩法技巧和规则 | 虹乐棋牌是真的吗| 大发888客服端下载| 大发888娱乐城登录| 大发888国际游戏平台| 大发888娱乐城注册|