chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

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

嵌入式分享#57:為什么 Kernel 內(nèi)置驅(qū)動能 “上電自啟”?

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

掃碼添加小助手

加入工程師交流群

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

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

這看似順理成章的差異,背后實(shí)則是內(nèi)核對驅(qū)動初始化機(jī)制的精巧設(shè)計(jì) —— 核心在于module_init和module_exit這兩個(gè)宏在不同編譯模式下的實(shí)現(xiàn)邏輯差異。

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

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

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

當(dāng)驅(qū)動為內(nèi)置模塊(#ifndefMODULE

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

wKgZPGmc796AKm6SAADQPSnCx3A599.png

__initcall(x):將函數(shù)x注冊到內(nèi)核的初始化調(diào)用隊(duì)列中。內(nèi)核啟動時(shí),會按優(yōu)先級依次執(zhí)行所有__initcall標(biāo)記的函數(shù)(從early_initcall到late_initcall)。

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

因此,內(nèi)置驅(qū)動的初始化函數(shù)會在系統(tǒng)啟動階段自動執(zhí)行,無需手動干預(yù)。

當(dāng)驅(qū)動為可加載模塊

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

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

當(dāng)通過insmod加載.ko文件時(shí),內(nèi)核會調(diào)用init_module函數(shù);通過rmmod卸載時(shí),會調(diào)用cleanup_module函數(shù)。這兩個(gè)函數(shù)與用戶定義的initfn/exitfn是同一個(gè)函數(shù)(通過alias屬性關(guān)聯(lián))。

總結(jié)

內(nèi)置驅(qū)動與可加載模塊的加載差異,本質(zhì)是module_init宏在不同編譯模式下的實(shí)現(xiàn)分流:

可加載模塊通過 “函數(shù)別名” 將初始化邏輯綁定到insmod觸發(fā)的標(biāo)準(zhǔn)入口,屬于 “用戶態(tài)手動觸發(fā)”;

內(nèi)置驅(qū)動通過 “初始化調(diào)用鏈” 將初始化邏輯注冊到內(nèi)核啟動流程,屬于 “內(nèi)核態(tài)自動執(zhí)行”。

這種設(shè)計(jì)既保證了系統(tǒng)關(guān)鍵驅(qū)動的自動初始化(確保啟動流程順暢),又提供了非關(guān)鍵驅(qū)動的動態(tài)加載能力(提升靈活性、節(jié)省內(nèi)存),是 Linux 內(nèi)核設(shè)備模型 “模塊化” 與 “啟動可靠性” 的精妙平衡。

(完)

本人專注 Linux 驅(qū)動 & Linux/Android BSP 開發(fā)調(diào)試,可接外包項(xiàng)目/技術(shù)支持/問題定位。有需求可加微信:【Chen_WeChat2026】。

更多原創(chuàng)技術(shù)文章:《README 2026》

審核編輯 黃宇

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

    關(guān)注

    88

    文章

    11754

    瀏覽量

    218994
  • Kernel
    +關(guān)注

    關(guān)注

    0

    文章

    50

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    嵌入式驅(qū)動開發(fā),需要掌握哪些技能?

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

    什么是嵌入式應(yīng)用開發(fā)?

    概述 所謂的嵌入式應(yīng)用開發(fā)就是在嵌入式操作系統(tǒng)下進(jìn)行開發(fā)、軟硬件綜合開發(fā) ?嵌入式應(yīng)用開發(fā)?是指在嵌入式操作系統(tǒng)下進(jìn)行開發(fā),包括系統(tǒng)化設(shè)計(jì)指導(dǎo)下的硬件和軟件綜合研發(fā)。
    發(fā)表于 01-12 16:13

    ARM嵌入式這樣學(xué)

    軟件,嵌入式應(yīng)用軟件。大部分的嵌入式軟件都寄宿在ARM內(nèi)核的芯片,三星,飛利浦等等都有ARM內(nèi)核的IC,做計(jì)算機(jī)軟件的人,很容易的就轉(zhuǎn)做嵌入式軟件,但是要做
    發(fā)表于 12-04 07:48

    嵌入式硬件設(shè)計(jì)解析

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

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

    嵌入式需要掌握哪些核心技能? 若想通過學(xué)習(xí)嵌入式技術(shù)提升就業(yè)競爭力,需重點(diǎn)掌握C語言、嵌入式硬件架構(gòu)、RTOS/Linux開發(fā)、通信協(xié)議四大核心技能,并結(jié)合行業(yè)需求積累項(xiàng)目經(jīng)驗(yàn)。 以下為具體分析
    發(fā)表于 10-21 16:25

    Melexis推出新型嵌入式電機(jī)驅(qū)動芯片MLX81339

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

    嵌入式從入門到進(jìn)階,怎么學(xué)?

    嵌入式從入門到進(jìn)階,怎么學(xué)? 嵌入式學(xué)習(xí)的核心是 “軟硬結(jié)合的技術(shù)壁壘”,科學(xué)分層才能高效突破。以下是從入門到高階的精簡路線,幫你避開彎路: 1、基礎(chǔ)奠基層:構(gòu)建技術(shù)底座 C 語言聚焦 指針、結(jié)構(gòu)體
    發(fā)表于 09-02 09:44

    Linux嵌入式和單片機(jī)嵌入式的區(qū)別?

    Linux嵌入式與單片機(jī)嵌入式在多個(gè)方面存在顯著的區(qū)別,以下是詳細(xì)的比較和歸納: 一、基本概念 1. Linux嵌入式: 定義:將Linux操作系統(tǒng)運(yùn)行在嵌入式設(shè)備
    發(fā)表于 06-20 09:46

    運(yùn)行在嵌入式系統(tǒng)的emApps

    在當(dāng)今快節(jié)奏的嵌入式系統(tǒng)世界中,靈活性和適應(yīng)性是嵌入式系統(tǒng)實(shí)現(xiàn)的關(guān)鍵。SEGGER推出了其最新創(chuàng)新:Embedded apps(emApps)應(yīng)用,類似于手機(jī)上的應(yīng)用程序,可以運(yùn)行在嵌入式系統(tǒng)
    的頭像 發(fā)表于 06-18 09:53 ?862次閱讀
    運(yùn)行在<b class='flag-5'>嵌入式</b>系統(tǒng)<b class='flag-5'>上</b>的emApps

    【RK3588】嵌入式人工智能實(shí)驗(yàn)箱——智高校產(chǎn)教融合新平臺

    在AIoT技術(shù)驅(qū)動產(chǎn)業(yè)變革的浪潮中,嵌入式人工智能已成為工業(yè)物聯(lián)網(wǎng)、智慧交通、智慧醫(yī)療等領(lǐng)域創(chuàng)新突破的關(guān)鍵引擎。飛凌嵌入式教育品牌ElfBoard立足產(chǎn)業(yè)前沿,重磅推出嵌入式人工智能實(shí)
    的頭像 發(fā)表于 06-11 14:29 ?1563次閱讀
    【RK3588】<b class='flag-5'>嵌入式</b>人工智能實(shí)驗(yàn)箱——智<b class='flag-5'>啟</b>高校產(chǎn)教融合新平臺

    嵌入式開發(fā)入門指南:從零開始學(xué)習(xí)嵌入式

    基礎(chǔ) 3. 學(xué)習(xí)路徑推薦第一階段:熟悉開發(fā)環(huán)境(如Keil、IAR、STM32)第二階段:掌握裸機(jī)編程與驅(qū)動開發(fā)第三階段:學(xué)習(xí)RTOS(實(shí)時(shí)操作系統(tǒng))如FreeRTOS第四階段:深入理解Linux嵌入式
    發(fā)表于 05-15 09:29

    飛凌嵌入式2025嵌入式及邊緣AI技術(shù)論壇圓滿結(jié)束

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

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

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

    Python在嵌入式系統(tǒng)中的應(yīng)用場景

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

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

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