哈哈哈哈哈操欧洲电影,久草网在线,亚洲久久熟女熟妇视频,麻豆精品色,久久福利在线视频,日韩中文字幕的,淫乱毛视频一区,亚洲成人一二三,中文人妻日韩精品电影

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

    文章

    11803

    瀏覽量

    219454
  • Kernel
    +關(guān)注

    關(guān)注

    0

    文章

    50

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關(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

    嵌入式系統(tǒng)的定義和應(yīng)用領(lǐng)域

    應(yīng)用系統(tǒng)在功能、可靠性、成本、體積和功耗等方面的嚴(yán)格要求的專用計(jì)算機(jī)系統(tǒng)。 那么,嵌入式系統(tǒng)具體應(yīng)用在哪些領(lǐng)域呢?事實(shí),它們的應(yīng)用非常廣泛。例如,在辦公自動化方面,我們常見的打印機(jī)、復(fù)印機(jī)和傳真機(jī)
    發(fā)表于 11-17 06:49

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

    嵌入式需要掌握哪些核心技能? 若想通過學(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 ?1011次閱讀

    嵌入式從入門到進(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

    入行嵌入式應(yīng)該怎么準(zhǔn)備?

    知識: 一、C/C++編程C/C++是嵌入式系統(tǒng)開發(fā)中最常用的編程語言。熟練掌握C/C++語言將使你能夠理解和編寫底層驅(qū)動程序、操作系統(tǒng)以及與硬件交互的代碼。對于嵌入式系統(tǒng)來說,效率和資源利用率
    發(fā)表于 08-06 10:34

    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 ?1018次閱讀
    運(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 ?1739次閱讀
    【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 ?4311次閱讀
    飛凌<b class='flag-5'>嵌入式</b>2025<b class='flag-5'>嵌入式</b>及邊緣AI技術(shù)論壇圓滿結(jié)束

    嵌入式適合自學(xué)嗎?

    ,學(xué)習(xí)者可能會因?yàn)槿狈I(yè)的指導(dǎo)而走很多彎路。例如,在學(xué)習(xí)STM32時(shí),可能會因?yàn)椴涣私庹_的學(xué)習(xí)方法和順序,而花費(fèi)大量時(shí)間在一些不必要的內(nèi)容。 2)難以解決實(shí)際問題:在嵌入式開發(fā)中,經(jīng)常會遇到各種
    發(fā)表于 04-27 09:54
    张家界市| 尤溪县| 松阳县| 深州市| 岗巴县| 黎川县| 柯坪县| 花垣县| 五峰| 江永县| 唐海县| 宁远县| 南开区| 平舆县| 三原县| 龙江县| 兴义市| 阿拉善左旗| 安溪县| 德钦县| 柳河县| 沂源县| 石棉县| 吴忠市| 涞水县| 景德镇市| 陇南市| 石家庄市| 青岛市| 新化县| 仁寿县| 泸西县| 伊宁市| 宁夏| 三原县| 饶阳县| 寿阳县| 乌拉特后旗| 汤阴县| 崇阳县| 湖南省|