精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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

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

3天內不再提示

【分享】DIY愛好者倒騰LED時,總結了幾點Linux驅動開發方法

lPCU_elecfans ? 來源:未知 ? 作者:肖冰 ? 2019-07-11 10:43 ? 次閱讀

一開接觸設備樹,我就不知道設備樹與驅動的關系,設備樹是在內核3.0以后才有的。不過3.0以前的和3.0以后的驅動其實變化不大。

驅動的開發方法可以分為三種:傳統方法,總線方法,設備樹方法。這篇文章圍繞點亮一顆LED來說明這三種方法。

驅動流程分為5個部分:

1、分配

2、設置

3、注冊file_operation

4、入口

5、出口

一、傳統方法

傳統方法就是簡單粗暴方法,就是將IO設置,驅動放在同一個文件(drv.c)。

drv.c:定義引腳信息

drv.c:驅動中的open函數

drv.c:驅動中的close函數

drv.c:file_operations結構體

為上層應用提供open(),write(),read(),close()。

drv.c:入口函數-申請設備號,創建設備節點

其中register_chrdev():申請設備號。

class_create():創建一個設備類。

device_create():創建一個設備節點,路徑:/dev/led

drv.c:出口函數-注銷設備,注銷設備節點

其中unregister_chrdev():通過主設備號,注銷設備號

device_destroy():注銷設備節點

class_destroy():注銷設備類

傳統方法:

優點:操作簡單

缺點:不易擴展,每次修改需要重新編譯驅動

二、總線方法

在kernel 3.0之前都是采用總線的方法實現驅動與設備之間的聯系。把驅動跟設備分開。

其主要理解幾個結構體:

①跟設備有關的結構體:structplatform_device{};

②跟驅動有關的結構體:structplatform_driver{};

還要理解其中包含的兩個結構體:

-> struct device_driver{};

-> structplatform_device_id{};

要記住一句話:在match的時候:優先匹配id_table的name,不匹配。再匹配driver的name

其中

dev.c:進行設備的引腳定義,定義resouce結構體,供驅動獲取資源。

dev.c:注冊platform_device結構體

dev.c:入口函數-注冊設備

其中platform_device_register():在總線上注冊一個設備。

dev.c:出口函數-注銷設備

其中platform_device_unregister():在總線上注銷一個設備。

對于驅動來說,需要稍微修改一下:

drv.c:增加probe函數和remove函數,其中:

probe()函數:充當傳統方法的init函數

remove()函數:充當傳統方法的exit函數

platform_get_resource():獲取設備中資源,比如引腳定義。

drv.c :入口函數和出口函數修改

將傳統方法的file_operations{};結構體改為platform_driver{};結構體

其中platform_driver_register():向總線注冊一個設備。

platform_driver_unregister():向總線注銷一個設備。

platform總線中的match()函數是設備與驅動匹配的函數,我們看看這個函數的實現,就是匹配設備與驅動的名字一不一致。函數如下:

總線方法:

優點:易擴展

缺點:代碼冗余多,需要重新編譯設

三、設備樹方法

在kernel 3.0以及之后的版本,都是采用設備樹的方法實現驅動與設備之間的聯系。將總線方法的設備改為設備樹實現,解決了總線方法中代碼冗余多的問題。

設備樹方法只需要在總線方法的基礎上稍微修改一下。

dts:添加設備節點:

drv: probe修改,其中通過函數of_property_read_s32()獲取設備樹的資源。

設備樹:

優點:易擴展,不需要重新編譯(替換設備樹),無冗余代碼

缺點:稍微復

最多技術干貨內容請穩步到“電子發燒友網”公眾號,回復資料即可免費獲取一份技術資料,在這里每天可以獲取最專業、最前沿的電子技術。

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

    關注

    176

    文章

    886

    瀏覽量

    348279
  • Linux驅動
    +關注

    關注

    0

    文章

    43

    瀏覽量

    9951

原文標題:【分享】DIY愛好者倒騰LED時,總結了幾點Linux驅動開發方法

文章出處:【微信號:elecfans,微信公眾號:電子發燒友網】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    電子愛好者

    電子愛好者QQ群號203435561
    發表于 12-19 23:03

    找ARM嵌入式linux學習愛好者

    本人基礎一般,學過單片機,摸過一年ARM,希望找志同道合的單片機愛好者linux學習一起進步,我的QQ280386673,您也可以留下您的QQ號碼,謝謝!
    發表于 07-23 10:29

    電源愛好者

    大學生電源愛好者聯盟QQ群 253053727 我們只求共同進步只加大學生歡迎加入
    發表于 07-31 21:32

    電子愛好者DIY制作自制微型巡線小車過程

    電子愛好者DIY制作自制微型巡線小車過程
    發表于 08-20 17:40

    電子愛好者

    電子愛好者報道了啊
    發表于 02-25 20:05

    歡迎加電子、LED愛好者群299238480

    歡迎加電子、LED愛好者群299238480
    發表于 05-18 08:21

    歡迎加電子、LED愛好者群299238480

    本帖最后由 gk320830 于 2015-3-5 12:40 編輯 歡迎加電子、LED愛好者群299238480
    發表于 05-18 08:22

    【職業電子愛好者】(群號256099730),電子愛好者 DIY電子高手群

    【職業電子愛好者】(群號256099730),電子愛好者 DIY電子高手群
    發表于 06-22 01:55

    電子愛好者的苦惱!

    壇子里的各位大神: 我是一名電子愛好者,從事其他行業,但特別喜歡電子,沒事的時候就喜歡折騰,看見各位大神指點江山,很是羨慕,但一直希望壇子里大神能給一個二極管和三極管的資料,型號太多了,記下一些,但
    發表于 04-27 14:38

    無線電愛好者叢書-穩定電源

    無線電愛好者叢書-穩定電源.pdf無線電愛好者叢書-穩定電源.pdf無線電愛好者叢書-穩定電源.pdf無線電愛好者叢書-穩定電源.pdf無線電愛好者
    發表于 07-13 17:02 ?0次下載
    無線電<b class='flag-5'>愛好者</b>叢書-穩定電源

    HAM/業余無線電愛好者,HAM/業余無線電愛好者是什么意思

    HAM/業余無線電愛好者,HAM/業余無線電愛好者是什么意思     根據英文版的《郎曼當代英語詞典》解釋單詞“HAM”時有一條為“A PERSON WHO RECEI
    發表于 03-29 11:20 ?4819次閱讀

    電腦愛好者2011年第5期

    本內容提供了電腦愛好者2011年第5期,歡迎廣大愛好者下載學習
    發表于 06-02 15:03 ?0次下載
    電腦<b class='flag-5'>愛好者</b>2011年第5期

    電腦愛好者2011年第1期

    本內容提供了電腦愛好者2011年第1期 歡迎廣大愛好者下載學習
    發表于 06-18 11:34 ?0次下載
    電腦<b class='flag-5'>愛好者</b>2011年第1期

    DIY電子套件:愛好者變成工程師的快樂之路

    DIY電子產品的市場似乎又再現活力。電子愛好者一直都有,隨著時間的推移數量也有升有降,但最近持續上升的電子愛好者數量還是很難解釋。
    發表于 03-12 08:56 ?5479次閱讀

    人工智能愛好者如何開發自己的人工智能系統

    據國外媒體報道,像曾經的DIY電腦一樣,現在也有很多人工智能愛好者在利用現有的工具和數據開發自己的人工智能系統。
    的頭像 發表于 11-20 10:13 ?1.3w次閱讀