国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

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

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

3天內不再提示

嵌入式分享#57:為什么 Kernel 內置驅動能 “上電自啟”?

BSP調試從0到1 ? 來源:嵌入式分享 ? 作者:嵌入式分享 ? 2026-02-24 08:20 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

歡迎關注“嵌入式分享”,每周更新!? 正文

從接觸 Linux 系統開始,我們就知道內核內置(built-in)驅動會在系統上電啟動時自動加載,而編譯為.ko文件的驅動則需要手動通過insmod加載。

這看似順理成章的差異,背后實則是內核對驅動初始化機制的精巧設計 —— 核心在于module_init和module_exit這兩個宏在不同編譯模式下的實現邏輯差異。

要理解這一點,首先需要明確一個前提:無論是內置驅動還是可加載模塊,其初始化和卸載的核心邏輯都是通過module_init(入口)和module_exit(出口)定義的。兩者的差異并非 “是否執行這些函數”,而是 “何時、如何觸發這些函數的執行”。

有了以上思路,問題就好辦了。

先從module_init/module_exit 入手,閱讀源碼(源碼路徑:include/linux/module.h)知道,這兩個宏根據驅動是否編譯為模塊,會展開為不同的代碼,從而決定初始化函數的調用時機。

當驅動為內置模塊(#ifndefMODULE

此時MODULE宏未定義,module_init被定義為__initcall(x):

wKgZPGmc796AKm6SAADQPSnCx3A599.png

__initcall(x):將函數x注冊到內核的初始化調用隊列中。內核啟動時,會按優先級依次執行所有__initcall標記的函數(從early_initcall到late_initcall)。

編譯時,這些初始化函數會被歸類到內核的初始化段(如.init.text),內核啟動時會按順序執行這些函數。

因此,內置驅動的初始化函數會在系統啟動階段自動執行,無需手動干預。

當驅動為可加載模塊

此時MODULE宏被定義(編譯時通過-DMODULE指定),module_init和module_exit的定義完全不同。

wKgZPGmc796AY5tDAADkYCZTn70516.png module_init(initfn):將用戶定義的initfn函數別名為init_module(內核模塊加載器約定的初始化入口)。 module_exit(exitfn):將用戶定義的exitfn函數別名為cleanup_module(模塊卸載時的入口)。

當通過insmod加載.ko文件時,內核會調用init_module函數;通過rmmod卸載時,會調用cleanup_module函數。這兩個函數與用戶定義的initfn/exitfn是同一個函數(通過alias屬性關聯)。

總結

內置驅動與可加載模塊的加載差異,本質是module_init宏在不同編譯模式下的實現分流:

可加載模塊通過 “函數別名” 將初始化邏輯綁定到insmod觸發的標準入口,屬于 “用戶態手動觸發”;

內置驅動通過 “初始化調用鏈” 將初始化邏輯注冊到內核啟動流程,屬于 “內核態自動執行”。

這種設計既保證了系統關鍵驅動的自動初始化(確保啟動流程順暢),又提供了非關鍵驅動的動態加載能力(提升靈活性、節省內存),是 Linux 內核設備模型 “模塊化” 與 “啟動可靠性” 的精妙平衡。

(完)

本人專注 Linux 驅動 & Linux/Android BSP 開發調試,可接外包項目/技術支持/問題定位。有需求可加微信:【Chen_WeChat2026】。

更多原創技術文章:《README 2026》

審核編輯 黃宇

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

    關注

    88

    文章

    11758

    瀏覽量

    219008
  • Kernel
    +關注

    關注

    0

    文章

    50

    瀏覽量

    12076
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    嵌入式驅動開發,需要掌握哪些技能?

    有經驗的老司機都知道,做嵌入式驅動開發需要掌握一系列的技能,包含編程、硬件、操作系統、調試等多個方面。 1、硬件知識熟悉原理圖:能看懂原理圖以及各種元器件的含義,以及PCB布局等。 了解
    發表于 01-20 16:46

    什么是嵌入式應用開發?

    概述 所謂的嵌入式應用開發就是在嵌入式操作系統下進行開發、軟硬件綜合開發 ?嵌入式應用開發?是指在嵌入式操作系統下進行開發,包括系統化設計指導下的硬件和軟件綜合研發。
    發表于 01-12 16:13

    ARM嵌入式這樣學

    軟件,嵌入式應用軟件。大部分的嵌入式軟件都寄宿在ARM內核的芯片,三星,飛利浦等等都有ARM內核的IC,做計算機軟件的人,很容易的就轉做嵌入式軟件,但是要做
    發表于 12-04 07:48

    嵌入式硬件設計解析

    嵌入式硬件設計是一個復雜而精細的過程,它涉及將微控制器(MCU)、微處理器(MPU)或數字信號處理器(DSP)等核心芯片與其他外圍電子元件(如傳感器、執行器、存儲器、電源管理芯片等)進行組合和連接
    發表于 12-02 08:22

    嵌入式需要掌握哪些核心技能?

    嵌入式需要掌握哪些核心技能? 若想通過學習嵌入式技術提升就業競爭力,需重點掌握C語言、嵌入式硬件架構、RTOS/Linux開發、通信協議四大核心技能,并結合行業需求積累項目經驗。 以下為具體分析
    發表于 10-21 16:25

    Melexis推出新型嵌入式電機驅動芯片MLX81339

    Melexis推出新型嵌入式電機驅動芯片MLX81339。該芯片配備PWM/串行接口,專為工業應用設計,支持高達40W的三相無刷直流電機(BLDC)和步進電機控制,適用于風扇、泵及定位系統等緊湊型設備。其內置可編程閃存支持應用的
    的頭像 發表于 10-10 10:45 ?829次閱讀

    嵌入式從入門到進階,怎么學?

    嵌入式從入門到進階,怎么學? 嵌入式學習的核心是 “軟硬結合的技術壁壘”,科學分層才能高效突破。以下是從入門到高階的精簡路線,幫你避開彎路: 1、基礎奠基層:構建技術底座 C 語言聚焦 指針、結構體
    發表于 09-02 09:44

    Linux嵌入式和單片機嵌入式的區別?

    Linux嵌入式與單片機嵌入式在多個方面存在顯著的區別,以下是詳細的比較和歸納: 一、基本概念 1. Linux嵌入式: 定義:將Linux操作系統運行在嵌入式設備
    發表于 06-20 09:46

    運行在嵌入式系統的emApps

    在當今快節奏的嵌入式系統世界中,靈活性和適應性是嵌入式系統實現的關鍵。SEGGER推出了其最新創新:Embedded apps(emApps)應用,類似于手機上的應用程序,可以運行在嵌入式系統
    的頭像 發表于 06-18 09:53 ?863次閱讀
    運行在<b class='flag-5'>嵌入式</b>系統<b class='flag-5'>上</b>的emApps

    【RK3588】嵌入式人工智能實驗箱——智高校產教融合新平臺

    在AIoT技術驅動產業變革的浪潮中,嵌入式人工智能已成為工業物聯網、智慧交通、智慧醫療等領域創新突破的關鍵引擎。飛凌嵌入式教育品牌ElfBoard立足產業前沿,重磅推出嵌入式人工智能實
    的頭像 發表于 06-11 14:29 ?1576次閱讀
    【RK3588】<b class='flag-5'>嵌入式</b>人工智能實驗箱——智<b class='flag-5'>啟</b>高校產教融合新平臺

    嵌入式開發入門指南:從零開始學習嵌入式

    基礎 3. 學習路徑推薦第一階段:熟悉開發環境(如Keil、IAR、STM32)第二階段:掌握裸機編程與驅動開發第三階段:學習RTOS(實時操作系統)如FreeRTOS第四階段:深入理解Linux嵌入式
    發表于 05-15 09:29

    飛凌嵌入式2025嵌入式及邊緣AI技術論壇圓滿結束

    飛凌嵌入式「2025嵌入式及邊緣AI技術論壇」在深圳深鐵皇冠假日酒店盛大舉行,此次活動邀請到了200余位嵌入式技術領域的技術專家、企業代表和工程師用戶,共享嵌入式及邊緣AI技術的盛宴!
    的頭像 發表于 04-28 13:57 ?4128次閱讀
    飛凌<b class='flag-5'>嵌入式</b>2025<b class='flag-5'>嵌入式</b>及邊緣AI技術論壇圓滿結束

    飛凌嵌入式「2025嵌入式及邊緣AI技術論壇」議程公布

    4月22日,飛凌嵌入式“2025嵌入式及邊緣AI技術論壇”將在深圳舉行,論壇以“新生態,智未來”為主題,旨在匯聚行業智慧,探討嵌入式技術與邊緣AI的深度融合與創新應用。
    的頭像 發表于 04-02 15:12 ?1345次閱讀
    飛凌<b class='flag-5'>嵌入式</b>「2025<b class='flag-5'>嵌入式</b>及邊緣AI技術論壇」議程公布

    Python在嵌入式系統中的應用場景

    你想把你的職業生涯提升到一個新的水平?Python在嵌入式系統中正在成為一股不可缺少的新力量。盡管傳統嵌入式開發更多地依賴于C和C++語言,Python的優勢在于其簡潔的語法、豐富的庫和快速的開發周期,這使得它在某些
    的頭像 發表于 03-19 14:10 ?1492次閱讀

    泰凌微電子亮相2025年德國紐倫堡嵌入式展覽會

    2025年3月11日至13日,全球規模最大的嵌入式系統專業展覽會——2025年嵌入式世界紐倫堡展覽會(Embedded World 2025)在德國紐倫堡會展中心盛大舉行。2003年創辦以來,該展會已成為
    的頭像 發表于 03-13 09:06 ?1517次閱讀