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

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

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

3天內不再提示

如何學習Linux驅動開發?

信盈達 ? 2022-01-06 16:34 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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一樣,各個節點中記錄設備相關的信息,提供給驅動使用。

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

    關注

    54

    文章

    9082

    瀏覽量

    155492
  • Linux
    +關注

    關注

    88

    文章

    11758

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    從架構到驅動:這三本經典書,承包了我的嵌入式Linux入門與進階

    私房菜(基礎學習篇 第四版)》《Linux 設備驅動開發(第 2 版)》,這三本書恰好構成了從 “底層架構” 到 “系統基礎” 再到 “驅動
    的頭像 發表于 02-09 17:02 ?1151次閱讀

    迅為iTOP-Hi3516開發驅動開發資料全面上線,構建從入門到精通的完整學習路徑!

    迅為iTOP-Hi3516開發linux驅動開發資料全面上線,構建從入門到精通的完整學習路徑!
    的頭像 發表于 12-19 15:47 ?633次閱讀
    迅為iTOP-Hi3516<b class='flag-5'>開發</b>板<b class='flag-5'>驅動</b><b class='flag-5'>開發</b>資料全面上線,構建從入門到精通的完整<b class='flag-5'>學習</b>路徑!

    迅為Hi3403開發驅動教程全面上線,開啟嵌入式Linux開發新篇章!

    迅為iTOP-Hi3403開發linux驅動教程全面上線,開啟嵌入式Linux開發新篇章!
    的頭像 發表于 12-18 14:23 ?677次閱讀
    迅為Hi3403<b class='flag-5'>開發</b>板<b class='flag-5'>驅動</b>教程全面上線,開啟嵌入式<b class='flag-5'>Linux</b><b class='flag-5'>開發</b>新篇章!

    從小白到大牛:Linux嵌入式系統開發的完整指南

    從小白到大牛:Linux嵌入式系統開發的完整指南 一、小白入門:搭建 Linux 嵌入式開發的認知地基? 對于零基礎學習者,首先要打破 “嵌
    發表于 12-16 10:42

    Linux驅動開發的必備知識

    驅動框架進行開發。 6、調試技能: 掌握內核調試工具,如 KDB、KGDB、printk 等。 能夠分析內核日志,定位驅動程序中的問題。
    發表于 12-04 07:58

    迅為iTOP-3568開發板?Linux驅動開發實戰:menuconfig圖形化配置實驗

    迅為iTOP-3568開發板?Linux驅動開發實戰:menuconfig圖形化配置實驗
    的頭像 發表于 11-24 15:29 ?766次閱讀
    迅為iTOP-3568<b class='flag-5'>開發</b>板?<b class='flag-5'>Linux</b><b class='flag-5'>驅動</b><b class='flag-5'>開發</b>實戰:menuconfig圖形化配置實驗

    【迅為工業RK3568穩定可靠】itop-3568開發Linux驅動開發實戰:RK3568內核模塊符號導出詳解

    【迅為工業RK3568穩定可靠】itop-3568開發Linux驅動開發實戰:RK3568內核模塊符號導出詳解
    的頭像 發表于 11-21 13:25 ?1184次閱讀
    【迅為工業RK3568穩定可靠】itop-3568<b class='flag-5'>開發</b>板<b class='flag-5'>Linux</b><b class='flag-5'>驅動</b><b class='flag-5'>開發</b>實戰:RK3568內核模塊符號導出詳解

    【免費送書】成為硬核Linux開發者:《Linux 設備驅動開發(第 2 版)》

    Linux系統的設備驅動開發,一直給人門檻較高的印象,主要因內核機制抽象、需深度理解硬件原理、開發調試難度大所致。2021年,一本講解驅動
    的頭像 發表于 11-18 08:06 ?1391次閱讀
    【免費送書】成為硬核<b class='flag-5'>Linux</b><b class='flag-5'>開發</b>者:《<b class='flag-5'>Linux</b> 設備<b class='flag-5'>驅動</b><b class='flag-5'>開發</b>(第 2 版)》

    【書籍評測活動NO.67】成為硬核Linux開發者:《Linux 設備驅動開發(第 2 版)》

    ,助力讀者學習后能獨立完成驅動程序開發。結語在當前人工智能與物聯網緊密結合的AIoT時代,各類傳感器、可穿戴設備要在低功耗狀態下承載智能計算,高效的驅動程序是關鍵環節。《
    發表于 11-17 17:52

    迅為3568開發板從零學習Linux驅動開發:迅為一站式資料包如何讓我效率翻倍

    迅為3568開發板從零學習Linux驅動開發:迅為一站式資料包如何讓我效率翻倍
    的頭像 發表于 11-05 11:16 ?400次閱讀
    迅為3568<b class='flag-5'>開發</b>板從零<b class='flag-5'>學習</b><b class='flag-5'>Linux</b><b class='flag-5'>驅動</b><b class='flag-5'>開發</b>:迅為一站式資料包如何讓我效率翻倍

    【北京迅為】itop-3568開發驅動開發指南(重制版)

    iTOP-RK3568開發驅動開發指南目錄:前言學習方法Linux驅動基礎第 1 章 你好!內
    發表于 10-30 15:48 ?37次下載

    RK3506開發Linux開發板極致性價比之選

    內存,256MB存儲,裸機開發Linux開發、QT開發、LVGL開發、快速啟動順暢支持!官方售價到手僅49.9元,性價比極高!RK3506
    的頭像 發表于 09-11 16:26 ?3453次閱讀
    RK3506<b class='flag-5'>開發</b>板<b class='flag-5'>Linux</b><b class='flag-5'>開發</b>板極致性價比之選

    Linux 應用開發手冊

    T507linux應用開發手冊
    發表于 08-22 17:01 ?15次下載

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

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

    [迅為]Linux開發小技巧:Remote - SSH插件

    [迅為]Linux開發小技巧:Remote - SSH插件
    的頭像 發表于 04-01 15:46 ?1161次閱讀
    [迅為]<b class='flag-5'>Linux</b><b class='flag-5'>開發</b>小技巧:Remote - SSH插件