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

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

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

Linux啟動流程中console_init分析

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

console_init

分析

Linux 啟動函數(shù) start_kernel 會調(diào)用 console_init 函數(shù)。

linux4.14/kernel/printk/printk.c

圖片

linux4.14/drivers/tty/n_tty.c

圖片

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

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

2、

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

這里主要是調(diào)用 __con_initcall_start 到 __con_initcall_end
之間的函數(shù)。

__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 聲明的驅(qū)動模塊,就會出現(xiàn)在這個段中,被調(diào)用。普通我們聲明的驅(qū)動模塊都是使用
module_init,如果我們寫的是串口驅(qū)動,可以使用console_init 聲明。

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

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

圖片

這里會有三列:地址,區(qū),函數(shù)名字。

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

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

    關(guān)注

    7

    文章

    2655

    瀏覽量

    47293
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11209

    瀏覽量

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

    關(guān)注

    3

    文章

    4284

    瀏覽量

    62325
收藏 人收藏

    評論

    相關(guān)推薦

    Linux啟動流程基本分析

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

    linux啟動流程分析

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

    嵌入式linux 串口console注冊

    是__con_initcall_start,該段的所有函數(shù)在driver\tty\tty_io.c\console_init函數(shù)調(diào)用,console_init在start_kern
    發(fā)表于 03-05 13:53

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

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

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

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

    詳細分析嵌入式Linux系統(tǒng)啟動流程

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

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

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

    Linux運行級init詳解

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

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

    S3C2410 ARM處理器為例,詳細分析了系統(tǒng)上電后 bootloader的執(zhí)行流程及 ARM Linux啟動過程。
    的頭像 發(fā)表于 12-21 09:24 ?1w次閱讀
    詳解bootloader的執(zhí)行<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系統(tǒng)的啟動方式有點復(fù)雜,而且總是有需要優(yōu)化的地方。傳統(tǒng)的Linux系統(tǒng)啟動過程主要由著名的init進程(也被稱為SysV
    發(fā)表于 04-27 19:14 ?3150次閱讀

    Linux系統(tǒng)下init進程的前世今生

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

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

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

    linux內(nèi)核啟動過程會執(zhí)行用戶空間的init進程

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

    kernel執(zhí)行第一個init應(yīng)用程序的實現(xiàn)原理

    Linux系統(tǒng)啟動過程中通過`init_task`創(chuàng)建0號idle進程。然后通過`kernel_thread`創(chuàng)建1號init進程。
    的頭像 發(fā)表于 06-05 14:53 ?788次閱讀
    kernel執(zhí)行第一個<b class='flag-5'>init</b>應(yīng)用程序的實現(xiàn)原理

    STM32的完整啟動流程分析

    STM32的完整啟動流程分析
    的頭像 發(fā)表于 10-25 16:00 ?1295次閱讀
    STM32的完整<b class='flag-5'>啟動</b><b class='flag-5'>流程</b><b class='flag-5'>分析</b>