<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
創作中心

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

3天內不再提示

RK3568驅動指南|驅動基礎進階篇-進階8 內核運行ko文件總結

北京迅為電子 ? 2024-01-31 14:58 ? 次閱讀

瑞芯微RK3568芯片是一款定位中高端的通用型SOC,采用22nm制程工藝,搭載一顆四核Cortex-A55處理器和Mali G52 2EE 圖形處理器。RK3568 支持4K 解碼和 1080P 編碼,支持SATA/PCIE/USB3.0 外圍接口。RK3568內置獨立NPU,可用于輕量級人工智能應用。RK3568 支持安卓 11 和 linux 系統,主要面向物聯網網關、NVR 存儲、工控平板、工業檢測、工控盒、卡拉 OK、云終端、車載中控等行業。

?
【公眾號】迅為電子

【粉絲群】824412014(加群獲取驅動文檔+例程)

視頻觀看】嵌入式學習之Linux驅動(驅動基礎進階篇_全新升級)_基于RK3568

【購買鏈接】迅為RK3568開發板瑞芯微Linux安卓鴻蒙ARM核心板人工智能AI主板

進階8 內核運行ko文件總結
8.1 內核運行ko流程分析
當我們使用系統調用時,內核會執行SYSCALL_DEFINE3宏定義的函數,如

SYSCALL_DEFINE3(finit_module, int, fd, const char __user *, uargs, int, flags)或SYSCALL_DEFINE3(init_module, void __user *, umod, unsigned long, len, const char __user *, uargs)。這些函數最終都會調用load_module函數,而在load_module函數中,會通過do_one_initcall(mod->init)來執行驅動程序的入口函數。

do_one_initcall函數的作用是執行一個初始化調用函數,并檢查執行過程中是否存在搶占不平衡或中斷被禁用的情況。如果存在錯誤信息,會打印警告信息。最后,返回初始化調用函數的返回值。這個函數通常在內核初始化過程中使用,用于執行各個模塊的初始化函數。

為什么mod->init就是驅動的入口函數呢?

打開include/linux/module.h文件,找到以下代碼,如下圖所示:

wKgZomW572qAVlQrAAFpYj0Mo2w481.png

圖8-1

上述代碼是用于定義模塊的初始化函數和清理函數的宏定義。通過使用module_init宏和module_exit宏,開發人員可以指定模塊的入口函數和清理函數。這些宏定義了一些內聯函數和與之關聯的特殊命名的函數,以及一些屬性和別名,用于在編譯時進行檢查并將用戶定義的函數與特定的模塊函數關聯起來。

在上圖的代碼中,int init_module(void) __copy(initfn) __attribute__((alias(#initfn)));:定義一個名為init_module的函數,用于作為模塊的入口函數。__copy(initfn)表示復制用戶定義的初始化函數,__attribute__((alias(#initfn)))表示將init_module函數與用戶定義的初始化函數initfn關聯起來。將init_module作為函數initfn的別名。init_module是驅動加載函數的統一別名,當我們編譯ko文件的時候,會生成一個.mod.c 的文件。

8.2 內核加載ko文件總結
本篇內容講解的知識點比較零散,為了更好的總結學習,我們畫了以下流程圖。

wKgZomW574aAO2qUAADkQYDiIxU250.png

圖 8-2

總結一下,要加載內核模塊,通常需要使用insmod命令或類似工具觸發系統調用,然后在內核中執行相應的系統調用函數(如sys_finit_module或sys_init_module)來加載模塊。在加載過程中,會調用load_module函數,進而執行模塊的初始化函數。這些過程構成了加載內核模塊的流程。

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

    關注

    3

    文章

    1312

    瀏覽量

    39888
  • 驅動
    +關注

    關注

    11

    文章

    1721

    瀏覽量

    84412
  • RK3568
    +關注

    關注

    4

    文章

    441

    瀏覽量

    4230
收藏 人收藏

    評論

    相關推薦

    《HELLO+FPGA》-項目進階篇

    《HELLO+FPGA》-項目進階篇
    發表于 09-27 10:13

    電源設計人員必看資料 開關電源基礎知識進階篇

    開關電源基礎知識進階篇資料來自網絡
    發表于 06-19 20:02

    如何驅動RK3568 VCM?

    RK3568 VCM如何驅動?
    發表于 03-02 06:12

    迅為RK3568開發板視頻教程上新,ARM入門更簡單

    驅動視頻全新升級,并持續更新~更全,思路更科學,入門更簡單。迅為基于iTOP-RK3568開發板進行講解,【Android11系統移植】P1 總領-嵌入式Android要學哪些內容?P2
    發表于 09-21 17:00

    嵌入式工程師資料合集(軟件進階篇

    本期資料分享為嵌入式工程師資料合集(軟件進階篇),包括RTOS,上位機,android相關資料RTOS:uCOS,FreeRTOS,RT-Thread上位機:SDK,MFC,C#android:
    發表于 10-12 15:57

    迅為RK3568開發板保姆級3900頁手冊_415期視頻_426G文檔

    :向系統中添加一個系統調用... 28.進階8:內核是如何運行KO文件的... 20.階段性
    發表于 08-11 11:14

    iTOP-RK3568開發板驅動指南第五-中斷

    _字符設備基礎 第三期_并發與競爭 第四期_高級字符設備進階 第五期_中斷 第六期_平臺總線 第七期_設備樹 第八期_設備樹插件 第九期_設備模型 第十期_熱插拔 第十一期_pinctrl子系統 未完待續,持續更新中...嗶哩嗶哩搜索-迅為RK3568開發板,更多教程內容
    發表于 09-04 10:53

    更新 | 持續開源 迅為RK3568驅動指南第十一篇-pinctrl子系統

    《iTOP-RK3568開發板驅動開發指南》更新,本次更新內容對應的是驅動(第十一期_pinctrl子系統-全新升級)視頻,后續資料會不斷更新,不斷完善,幫助用戶快速入門,大大提升研發
    發表于 10-18 11:12

    USB HID設備應用(進階篇

    Freescale的USB HID設備應用(進階篇
    發表于 12-07 18:19 ?0次下載

    瑞芯微rk3568開發板原理圖

    瑞芯微rk3568 開發板 原理圖工程文件AD格式
    發表于 04-24 14:12 ?68次下載

    技術分享 | RK3568 buildroot文件系統下的三屏顯示調試

    IAC-RK3568-KitIAC-RK3568-Kit開發板基于瑞芯微RK3568四核Cortex-A55處理器,支持HDMI、LVDS、MIPI、EDP四種顯示接口,能夠實現
    的頭像 發表于 04-10 11:14 ?4059次閱讀
    技術分享 | <b class='flag-5'>RK3568</b> buildroot<b class='flag-5'>文件</b>系統下的三屏顯示調試

    瑞芯微RK3568主板開發板PET_RK3568_P01簡述

    瑞芯微RK3568主板開發板PET_RK3568_P01簡述
    的頭像 發表于 08-08 11:41 ?1869次閱讀
    瑞芯微<b class='flag-5'>RK3568</b>主板開發板PET_<b class='flag-5'>RK3568</b>_P01簡述

    rk3568是什么架構的?

    設計之一,經過優化,可在提供高性能的同時實現低功耗。RK3568有四個Cortex-A55內核,能夠以高達2GHz的時鐘速度運行。 此外,RK3568還配備了ARM Mali-G52
    的頭像 發表于 08-15 17:25 ?1806次閱讀

    RK3568驅動指南驅動基礎進階篇-進階5 自定義實現insmod命令實驗

    RK3568驅動指南驅動基礎進階篇-進階5 自定義實現insmod命令實驗
    的頭像 發表于 02-20 14:10 ?210次閱讀
    <b class='flag-5'>RK3568</b><b class='flag-5'>驅動</b><b class='flag-5'>指南</b>|<b class='flag-5'>驅動</b>基礎<b class='flag-5'>進階篇</b>-<b class='flag-5'>進階</b>5 自定義實現insmod命令實驗

    迅為RK3568開發板驅動開發指南-輸入子系統

    迅為RK3568開發板驅動開發指南-輸入子系統
    的頭像 發表于 02-23 15:11 ?250次閱讀
    迅為<b class='flag-5'>RK3568</b>開發板<b class='flag-5'>驅動</b>開發<b class='flag-5'>指南</b>-輸入子系統
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>