国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

驅(qū)動(dòng)開發(fā) day3 9/12

這篇具有很好參考價(jià)值的文章主要介紹了驅(qū)動(dòng)開發(fā) day3 9/12。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

udev機(jī)制創(chuàng)建設(shè)備文件實(shí)現(xiàn)過程

1.驅(qū)動(dòng)注冊

通過內(nèi)核提供的驅(qū)動(dòng)注冊api獲取設(shè)備號(hào),為創(chuàng)建設(shè)備文件提供設(shè)備號(hào)

2.創(chuàng)建設(shè)備類

通過內(nèi)核提供的class_create( )創(chuàng)建一個(gè)設(shè)備類,向上提交目錄信息:構(gòu)造struct class 變量并初始化,創(chuàng)建一個(gè)設(shè)備類的目錄:/sys/class/類名

API:

struct class * class_create(struct module *owner,const char *name );
功能:申請一個(gè)設(shè)備類并初始化,向上提交目錄信息
參數(shù):
owner:指向當(dāng)前內(nèi)核模塊自身的一個(gè)模塊指針,填寫THIS_MODULE
name:向上提交的目錄名
返回值:成功返回申請的struct class對象空間首地址,失敗返回錯(cuò)誤碼指針
在內(nèi)核空間最頂層會(huì)預(yù)留4K空間,當(dāng)struct class函數(shù)調(diào)用失敗后函數(shù)會(huì)返回一個(gè)指向這4K空間的指針


bool __must_check IS_ERR(__force const void *ptr)
功能:判斷指針是否指向4K預(yù)留空間
參數(shù):要判斷的指針
返回值:如果指著指向4K預(yù)留空間返回邏輯真,否則返回邏輯假

long __must_check PTR_ERR(__force const void *ptr)
功能:通過錯(cuò)誤碼指針得到錯(cuò)誤碼

3.創(chuàng)建設(shè)備對象

通過內(nèi)核提供的device_create( )以及獲取的設(shè)備號(hào)創(chuàng)建該類設(shè)備中的一個(gè)設(shè)備,向上提交該設(shè)備節(jié)點(diǎn)信息:構(gòu)造struct device 變量并初始化,在設(shè)備類目錄下創(chuàng)建設(shè)備信息文件:/sys/class/類名/設(shè)備信息文件文章來源地址http://www.zghlxwxcb.cn/news/detail-708170.html

API:

struct device *device_create(struct class *class, struct device *parent,dev_t devt, void *drvdata, const char *fmt, ...)
功能:創(chuàng)建一個(gè)設(shè)備對象,向上提交設(shè)備節(jié)點(diǎn)信息
參數(shù):
cls:向上提交目錄時(shí)得到的類對象指針
parent:當(dāng)前申請的對象前一個(gè)節(jié)點(diǎn)的地址,不知道就填 NULL
devt:設(shè)備號(hào)    主設(shè)備號(hào)<<20|次設(shè)備號(hào)
   MKDEV(主設(shè)備號(hào),次設(shè)備號(hào)):根據(jù)主設(shè)備號(hào)和次設(shè)備號(hào)得到設(shè)備號(hào)
   MAJOR(dev):根據(jù)設(shè)備號(hào)獲取主設(shè)備號(hào)
   MINOR(dev):根據(jù)設(shè)備號(hào)獲取次設(shè)備號(hào)
dridata:申請的device對象的私有數(shù)據(jù),填寫NULL
fmt:向上提交的設(shè)備節(jié)點(diǎn)名
...:不定長參數(shù)   
返回值:成功返回申請到的device對象首地址,失敗返回錯(cuò)誤碼指針,指向4K預(yù)留空間

4.內(nèi)核自動(dòng)產(chǎn)生hotplug 事件

5.hotplug事件通知udev進(jìn)程

6.udev進(jìn)程在/sys/class/類名/設(shè)備信息文件目錄下查找設(shè)備信息,在/dev下創(chuàng)建設(shè)備文件

到了這里,關(guān)于驅(qū)動(dòng)開發(fā) day3 9/12的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 驅(qū)動(dòng)開發(fā) day3 (模塊化驅(qū)動(dòng)啟動(dòng)led,蜂鳴器,風(fēng)扇,震動(dòng)馬達(dá))

    驅(qū)動(dòng)開發(fā) day3 (模塊化驅(qū)動(dòng)啟動(dòng)led,蜂鳴器,風(fēng)扇,震動(dòng)馬達(dá))

    模塊化驅(qū)動(dòng)啟動(dòng)led,蜂鳴器,風(fēng)扇,震動(dòng)馬達(dá)并加上Makefile 封裝模塊化驅(qū)動(dòng),可自由安裝卸載驅(qū)動(dòng),便于驅(qū)動(dòng)更新(附圖) 1.安裝模塊驅(qū)動(dòng)同時(shí)初始化各個(gè)設(shè)備并使能 2.該驅(qū)動(dòng)會(huì)自動(dòng)創(chuàng)建驅(qū)動(dòng)節(jié)點(diǎn). 3.通過c函數(shù)程序輸入控制各個(gè)設(shè)備 4.卸載模塊驅(qū)動(dòng) //編譯驅(qū)動(dòng)(注意Makefile的編譯到移植

    2024年02月16日
    瀏覽(24)
  • 【javaweb】學(xué)習(xí)日記Day3 - Ajax 前后端分離開發(fā) 入門

    【javaweb】學(xué)習(xí)日記Day3 - Ajax 前后端分離開發(fā) 入門

    目錄 一、Ajax 1、簡介 2、Axios (沒懂 暫留) (1)請求方式別名 (2)發(fā)送get請求 (3)發(fā)送post請求 (4)案例 二、前端工程化 1、Vue項(xiàng)目-目錄結(jié)構(gòu) 2、Vue項(xiàng)目-啟動(dòng) (1)vscode頁面啟動(dòng) (2)cmd命令框啟動(dòng) 3、配置Vue端口號(hào) 4、Vue項(xiàng)目開發(fā)流程 三、Vue組件庫 - Element? 1、快速入門

    2024年02月12日
    瀏覽(48)
  • Linux驅(qū)動(dòng)開發(fā)12 IIC驅(qū)動(dòng)

    Linux驅(qū)動(dòng)開發(fā)12 IIC驅(qū)動(dòng)

    ????????I2C 是很常用的一個(gè)串行通信接口,用于連接各種外設(shè)、傳感器等器件,在裸機(jī)篇已經(jīng)對 I.MX6U 的 I2C 接口做了詳細(xì)的講解。本章我們來學(xué)習(xí)一下如何在 Linux 下開發(fā) I2C 接口器件驅(qū)動(dòng),重點(diǎn)是學(xué)習(xí) Linux 下的 I2C 驅(qū)動(dòng)框架,按照指定的框架去編寫 I2C 設(shè)備驅(qū)動(dòng)。 ????

    2024年02月06日
    瀏覽(17)
  • day12-內(nèi)置模塊和開發(fā)規(guī)范

    day12-內(nèi)置模塊和開發(fā)規(guī)范

    json模塊,是python內(nèi)部的一個(gè)模塊,可以將python的數(shù)據(jù)格式 轉(zhuǎn)換為json格式的數(shù)據(jù),也可以將json格式的數(shù)據(jù)轉(zhuǎn)換為python的數(shù)據(jù)格式。 json格式,是一個(gè)數(shù)據(jù)格式(本質(zhì)上就是個(gè)字符串,常用語網(wǎng)絡(luò)數(shù)據(jù)傳輸) json格式的作用? Python數(shù)據(jù)類型與json格式的相互轉(zhuǎn)換: 數(shù)據(jù)類型 - j

    2024年04月08日
    瀏覽(15)
  • Wpf 使用 Prism 實(shí)戰(zhàn)開發(fā)Day12

    Wpf 使用 Prism 實(shí)戰(zhàn)開發(fā)Day12

    控制器類需要繼承? ControllerBase 基類 需要添加 [ ApiController]? 特性以及 [ Route]? 特性 Route (路由) 特性參數(shù)規(guī)則,一般寫法是? [Route(\\\"api/[controller]/[action]\\\")] 。也就是路由訪問路徑:前綴api/當(dāng)前控制器/具體的方法 為了業(yè)務(wù)處理邏輯和控制器之間實(shí)現(xiàn)解耦??梢酝ㄟ^設(shè)計(jì):

    2024年01月16日
    瀏覽(25)
  • 驅(qū)動(dòng)開發(fā)-day9

    驅(qū)動(dòng)開發(fā)-day9

    ?驅(qū)動(dòng)代碼: 測試代碼:

    2024年02月15日
    瀏覽(17)
  • 驅(qū)動(dòng)開發(fā)—day8

    1、在內(nèi)核模塊中啟用定時(shí)器,定時(shí)1s,讓led1 閃爍 2、基于gpio子系統(tǒng)完成led燈驅(qū)動(dòng)的注冊,應(yīng)用程序測試 應(yīng)用層代碼:

    2024年02月15日
    瀏覽(18)
  • 驅(qū)動(dòng)開發(fā)DAY 4

    分步實(shí)現(xiàn)字符設(shè)備驅(qū)動(dòng) PART 1 .? 分析open函數(shù)的調(diào)用流程 用戶層中進(jìn)行打開文件操作{調(diào)用int open(const char *pathname, int flags);},虛擬文件系統(tǒng)層調(diào)用sys_open{假設(shè)打開字符設(shè)備節(jié)點(diǎn)}: ? ? ? ? 1.根據(jù)open傳遞的文件路徑找到文件的inode結(jié)構(gòu)體 ? ? ? ? open參數(shù)中的pathname為文件路徑,

    2024年02月10日
    瀏覽(13)
  • ARM day2、day3 匯編

    ARM day2、day3 匯編

    @ 注釋 # 注釋(放在行首表示注釋一行) /*? ? */ 注釋 #+數(shù)字 立即數(shù) : 一種標(biāo)號(hào)(比如main:? ? ? ? loop:) .text? ? ? ? .end+換行 固定格式 ARM指令構(gòu)成 ARM 指令包含操作碼和一些其他的信息,只剩下8 位存放數(shù)據(jù) 具體來說,一個(gè) ARM 指令通常由以下部分組成: 操作碼(Opcode)

    2024年01月19日
    瀏覽(25)
  • 驅(qū)動(dòng)開發(fā) day4 (led燈組分塊驅(qū)動(dòng))

    //編譯驅(qū)動(dòng)(注意Makefile的編譯到移植到開發(fā)板的內(nèi)核) ? ? ? ? make arch=arm //清除編譯生成文件 ? ? ? ? make clean //安裝驅(qū)動(dòng) ? ? ? ? insmod mycdev.ko //卸載驅(qū)動(dòng) ? ? ? ? rmmod mycdev //編譯fun.c 函數(shù)(用到交叉工具編譯) ? ? ? ? arm-linux-gnueabihf-gcc fun.c head.h ?mycdev.c fun.c Makefile

    2024年02月15日
    瀏覽(23)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包