色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創作中心

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

3天內不再提示

Linux驅動開發的學習方法

涼白不開 ? 來源:涼白不開 ? 作者:涼白不開 ? 2022-04-22 09:52 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

Linux驅動開發,看起來是一份很高大上的職業,畢竟從事上層應用開發人員太多,而且門檻又不是特別高,而內核級開發從業人員要少得多,而且資料又較少。

有許多剛剛接觸到Linux驅動開發的同學會感覺非常困惑,面對復雜的Linux內核有一種無從下手的感覺。今天就和大家分享一下,讓剛剛步入驅動開發的同學少走一些彎路。

01要知道將來要做什么

學習,都是有目的性的,要么是興趣使然,要么就是剛性需求,為了找一份好的工作。在這里先和大家聊聊做設備驅動將來可以做哪些方面。

我把linux設備驅動開發工作分為兩大類,一類是做BSP級的開發,另外一類是做外設驅動的開發。

BSP的開發指的是板級代碼的開發,和CPU是密切相關的,例如I2C/SPI Adapter的驅動。如果使用通用的芯片,比如三星的Exynos,飛思卡爾的I.MX系列,TI的OMAP或者DaVinci系列,基本都會有現成的BSP包,這部分代碼通常是芯片廠商提供和大型公司貢獻。

大家可以看看linux內核源碼中/arch/arm/mach-omap,內部很多代碼都是諾基亞貢獻。做BSP級的開發需要有較深的功底,首先要十分了解CPU特性,另外要使代碼有良好的擴展性和復用性,方便后續移植。有這樣需求的往往是芯片商或使用專用芯片的設備商。

外設驅動開發就相對簡單一些,都是和特定的外設硬件打交道。

通過利用BSP級代碼提供的API或者linux提供的更高層的抽象接口來操作硬件。實際上和應用層的開發大同小異。

例如操作I2C總線上的EEPROM,實際上的讀和寫操作都有已經封裝好的API來完成.而開發者需要做的是了解外設的特性,通過封裝好的API對外設進行操作。新入門的開發者建議從外設驅動開發入手,循序漸進。當然,一個優秀的開發者是即可以做BSP級代碼的開發,也能做外設驅動的開發的。

02用面向對象的思想去思考

面向對象,即OO思想,大家應該非常熟悉。linux的內核雖然用面向過程的C語言實現,但是仍然是通過面向對象的思想去設計的。

如果從單片機轉行做linux設備驅動,會發現和單片機的或者裸機的驅動設計有很大區別。設計linux設備驅動不單單是對硬件設備的操作,更多需要考慮的是擴展性和代碼的復用。

所以就出現了platform device/driver,i2c device/driver,spi device/driver,抽象出了設備和驅動兩部分,使設備細節和驅動分離。另外還出現了一些框架,提供了底層接口的封裝,做開發時要習慣用OO思想去設計。當然要記住條條大路通羅馬,不使用這些device/driver也可以實現設備驅動,只是不太推薦這樣做。

03從各驅動框架入手

Linux提供了各種框架(子系統),對底層進行封裝,抽象出相同操作的接口,這樣可以更好的實現復用。想入門linux驅動開發,可以先從框架入手,掌握API的使用,再逐漸深入研究,從上到下去學習。不要把驅動開發想象的太復雜,實際和英語的完型填空差不多,框架有了,只需要自己去填寫操作具體硬件的細節代碼而已。

幾個比較重要和常用的框架有:

GPIO:這個就不用多說了,剛開始接觸驅動的基本會練習通過GPIO點亮LED的操作,linux封裝了相關的gpio操作接口。

SPI:學會spi device/driver的用法,以及收發消息API,可以參考一些代碼,基本都是相同的套路。

I2C:學會i2c device/driver的用法,和學習SPI的套路一樣。

PINCTRL:非常重要的一個框架,負責CPU引腳復用,由于現在的CPU都很復雜,一個引腳支持多種復用。

V4L2:一個非常復雜的視頻采集框架,具體可以參考相關的文檔。驅動里面有很多例子可供參考,同時提供了模板vivi.c

Framebuffer:顯示相關的框架,熟悉其中API,而且有模板skeletonfb.c。

DMA Engine: 把DMA操作進行封裝,目前驅動代碼中關于DMA的操作很多是使用私有的BSP包中的DMA接口,如果支持DMA Engine的話,建議使用DMA Engine。

中斷:比較常用的了,接口不多,很少掌握。

USB框架:USB框架比較復雜,API較多,可以通過讀已有的代碼進行學習。

MTD框架:存儲相關比較重要的框架,網上相關的文檔很多。

設備樹:設備樹是在新的內核里面引進來的,可以把板級代碼中的各種device通過設備樹文件去描述,動態創建,這樣更靈活。其實不要把設備樹想象的太復雜,實際和解析JSON,XML一樣,各個節點中記錄設備相關的信息,提供給驅動使用。

審核編輯:湯梓紅

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

    關注

    87

    文章

    11517

    瀏覽量

    213982
  • 驅動開發
    +關注

    關注

    0

    文章

    134

    瀏覽量

    12323
  • 驅動框架
    +關注

    關注

    0

    文章

    14

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

  • ADCAL1
  • 倪陌_baa1

評論

相關推薦
熱點推薦

ARM入門學習方法分享

。 以下是一些入門學習方法的分享: 一、 理解基本概念:首先,了解ARM是什么以及它的基本概念是很重要的。ARM(Advanced RISC Machines)指的是一種精簡指令集計算機(RISC
發表于 07-23 10:21

Linux開發板調屏方法,實戰經驗讓您少走彎路

本文介紹Linux系統調試屏幕過程中檢查屏幕狀態及信息的方法。如:驅動、屏幕連接、分辨率、色彩等狀態?;谟|覺智能RK3562開發板演示,搭載4核A53處理器,主頻高達2.0GHz;內
的頭像 發表于 06-06 18:13 ?230次閱讀
<b class='flag-5'>Linux</b><b class='flag-5'>開發</b>板調屏<b class='flag-5'>方法</b>,實戰經驗讓您少走彎路

第一章 W55MH32 高性能以太網單片機的學習方法概述

本章介紹W55MH32的學習方法,建議先了解硬件資源,按基礎篇、入門篇循序漸進學習。參考兩份手冊,提供例程資料,還給出官網、github 等學習資料查找渠道。讓我們一起踏上W55MH32高性能以太網單片機的
的頭像 發表于 05-26 09:07 ?134次閱讀
第一章 W55MH32 高性能以太網單片機的<b class='flag-5'>學習方法</b>概述

硬核升級!華清遠見STM32MP157驅動開發課程助力嵌入式Linux底層開發入門進階

在嵌入式Linux系統開發中,驅動程序開發是一項關鍵技術,它作為硬件與軟件之間的橋梁,實現了操作系統對硬件設備的控制。相較于嵌入式Linux
的頭像 發表于 04-03 16:40 ?436次閱讀
硬核升級!華清遠見STM32MP157<b class='flag-5'>驅動</b><b class='flag-5'>開發</b>課程助力嵌入式<b class='flag-5'>Linux</b>底層<b class='flag-5'>開發</b>入門進階

一種無刷直流電機霍耳信號與定子繞組關系自學習方法

的關系。提出了一種無刷直流電機霍耳信號與定子繞組關系自學習方法,該方法通過不同的繞組通電組合將電機轉子依次轉到6個不同的位置并記錄對應的霍耳信號,然后得出霍耳信號與定子繞組的對應關系。所提出的方法快速
發表于 03-25 15:15

迅為RK3568開發驅動指南Linux中通用SPI設備驅動

迅為RK3568開發驅動指南Linux中通用SPI設備驅動
的頭像 發表于 01-23 11:02 ?2881次閱讀
迅為RK3568<b class='flag-5'>開發</b>板<b class='flag-5'>驅動</b>指南<b class='flag-5'>Linux</b>中通用SPI設備<b class='flag-5'>驅動</b>

傳統機器學習方法和應用指導

用于開發生物學數據的機器學習方法。盡管深度學習(一般指神經網絡算法)是一個強大的工具,目前也非常流行,但它的應用領域仍然有限。與深度學習相比,傳統
的頭像 發表于 12-30 09:16 ?1219次閱讀
傳統機器<b class='flag-5'>學習方法</b>和應用指導

什么是機器學習?通過機器學習方法能解決哪些問題?

來源:Master編程樹“機器學習”最初的研究動機是讓計算機系統具有人的學習能力以便實現人工智能。因為沒有學習能力的系統很難被認為是具有智能的。目前被廣泛采用的機器學習的定義是“利用經
的頭像 發表于 11-16 01:07 ?975次閱讀
什么是機器<b class='flag-5'>學習</b>?通過機器<b class='flag-5'>學習方法</b>能解決哪些問題?

北京迅為RK3568開發板嵌入式學習Linux驅動全新更新-CAN+

北京迅為RK3568開發板嵌入式學習Linux驅動全新更新-CAN+
的頭像 發表于 09-04 15:29 ?1065次閱讀
北京迅為RK3568<b class='flag-5'>開發</b>板嵌入式<b class='flag-5'>學習</b>之<b class='flag-5'>Linux</b><b class='flag-5'>驅動</b>全新更新-CAN+

嵌入式linux開發的基本步驟有哪些?

嵌入式Linux開發是一個復雜的過程,涉及到硬件選擇、操作系統移植、驅動開發、應用程序開發等多個方面。以下是嵌入式
的頭像 發表于 09-02 09:11 ?1277次閱讀

linux驅動程序如何加載進內核

Linux系統中,驅動程序是內核與硬件設備之間的橋梁。它們允許內核與硬件設備進行通信,從而實現對硬件設備的控制和管理。 驅動程序的編寫 驅動程序的編寫是
的頭像 發表于 08-30 15:02 ?1127次閱讀

linux驅動程序的編譯方法是什么

Linux驅動程序的編譯方法主要包括兩種: 與內核一起編譯 和 編譯成獨立的內核模塊 。以下是對這兩種方法的介紹: 一、與內核一起編譯 與內核一起編譯意味著將
的頭像 發表于 08-30 14:46 ?1274次閱讀

linux驅動程序的編譯方法有哪兩種

Collection)或其他C/C++編譯器來編譯源代碼文件。這種方法較為原始,需要開發者手動指定編譯器選項、包含路徑、庫文件等。然而,在Linux驅動
的頭像 發表于 08-30 14:39 ?1552次閱讀

Linux 驅動開發與應用開發,你知道多少?

一、Linux驅動開發與應用開發的區別開發層次不同:Linux
的頭像 發表于 08-30 12:16 ?1626次閱讀
<b class='flag-5'>Linux</b> <b class='flag-5'>驅動</b><b class='flag-5'>開發</b>與應用<b class='flag-5'>開發</b>,你知道多少?

《DNK210使用指南 -CanMV版 V1.0》第一章本書學習方法

第一章 本書學習方法 為了讓讀者更好地學習和使用本書,本章將為讀者介紹本書的學習方法,包括:本書的學習順序、編寫規范、代碼規范、資料查找和學習
發表于 08-28 17:57
主站蜘蛛池模板: 肉多荤文高h羞耻校园 | 波多野结衣网站www 波多野结衣教师系列6 | 色狠狠色综合吹潮 | 成 人 网 站免费观看 | 中文字幕天堂久久精品 | 亚洲国产精品久久无套麻豆 | 久久精品视频在线看15 | 国产免费麻传媒精品国产AV | 秋霞网在线伦理免费 | 国产精品免费一区二区三区四区 | 中国老太太xxx | 一手揉着乳头一手模仿抽插视频 | 美女一级毛片免费不卡视频 | 狠狠人妻久久久久久综合九色 | 在教室轮流被澡高H林萌 | 日本工口生肉全彩大全 | 中文字幕在线视频网站 | 三级黄色视屏 | 高清一区二区亚洲欧美日韩 | 精精国产www视频在线观看免费 | 噜噜噜狠狠夜夜躁 | 99久久99久久精品免费看子 | 啊…嗯啊好深男男高h文总受 | 精品国产手机视频在在线 | 手机免费毛片 | 秋霞电影网午夜免费鲁丝片 | 色欲久久综合亚洲精品蜜桃 | 91精品欧美一区二区三区 | 97一期涩涩97片久久久久久久 | 先锋影音av最新资源网 | 美女胸被男子强捏视频 | 动漫女生的逼 | 人禽l交视频在线播放 视频 | 动漫美女3d被爆漫画 | 父皇轻点插好疼H限 | 亚洲中久无码永久在线 | 杨幂被视频在线观看 | 欧美大jiji| 亚洲AV怡红院AV男人的天堂 | 99久久国语露脸精品国产 | 国产精品一区二区激情 |

電子發燒友

中國電子工程師最喜歡的網站

  • 2931785位工程師會員交流學習
  • 獲取您個性化的科技前沿技術信息
  • 參加活動獲取豐厚的禮品