女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

I2C設(shè)備驅(qū)動的兩個數(shù)據(jù)結(jié)構(gòu)

麥辣雞腿堡 ? 來源:嵌入式Linux系統(tǒng)開發(fā) ? 作者:嵌入式Linux系統(tǒng)開 ? 2023-07-22 15:49 ? 次閱讀

設(shè)備驅(qū)動

I2C 設(shè)備驅(qū)動重點關(guān)注兩個數(shù)據(jù)結(jié)構(gòu):i2c_client 和 i2c_driver。i2c_client 就是描述設(shè)備信息的,i2c_driver 描述驅(qū)動內(nèi)容。

一個設(shè)備對應(yīng)一個 i2c_client,每檢測到一個 I2C 設(shè)備就會給這個 I2C 設(shè)備分配一個 i2c_client。

i2c_driver 中包含 probe 函數(shù)和 device_driver 結(jié)構(gòu)體。如果使用設(shè)備樹的話,需要設(shè)置 device_driver 的 of_match_table 成員變量,也就是驅(qū)動的兼容(compatible)屬性。

當(dāng) I2C 設(shè)備和驅(qū)動匹配以后,probe 函數(shù)就會執(zhí)行。

因此,對于 Linux 來講,不區(qū)分 I2C 控制器和 I2C 從機(jī)設(shè)備,用的都是同一套東西,即【總線、設(shè)備、驅(qū)動】框架,都有 probe 函數(shù)。

設(shè)備樹

圖片

注意,I2C 設(shè)備在設(shè)備樹中必須掛到對應(yīng)的總線下,如圖是在 &i2c0 下。

驅(qū)動

圖片

圖片

當(dāng)驅(qū)動和設(shè)備匹配時,probe 函數(shù)開始執(zhí)行,重要的地方博主都寫了注釋

static int goodix_i2c_probe(struct i2c_client *client,
 const struct i2c_device_id *dev_id)
{
 struct goodix_ts_device *ts_device = NULL;
 struct goodix_ts_board_data *ts_bdata = NULL;
 int r = 0;

  //檢查 I2C 控制器支持是否支持標(biāo)準(zhǔn) I2C 協(xié)議
 r = i2c_check_functionality(client- >adapter,I2C_FUNC_I2C);

 /* 板級信息分配內(nèi)存 */
 ts_bdata = devm_kzalloc(&client- >dev,sizeof(struct goodix_ts_board_data), GFP_KERNEL);
 ts_device = devm_kzalloc(&client- >dev,sizeof(struct goodix_ts_device), GFP_KERNEL);

  //填充結(jié)構(gòu)體元素
 /* use pinctrl in core.c */
 ts_bdata- >pinctrl_dev = client- >adapter- >dev.parent;

 ts_device- >name = "GT9886 TouchDevcie";
 ts_device- >dev = &client- >dev;
 ts_device- >board_data = ts_bdata;
 ts_device- >hw_ops = &hw_i2c_ops;
 touch_filter_bdata = ts_bdata;

 /* ts core device */
 goodix_pdev = kzalloc(sizeof(struct platform_device), GFP_KERNEL); 
  
  //填充結(jié)構(gòu)體元素
 goodix_pdev- >name = GOODIX_CORE_DRIVER_NAME;
 goodix_pdev- >id = 0;
 goodix_pdev- >num_resources = 0;
 goodix_pdev- >dev.platform_data = ts_device;
 goodix_pdev- >dev.release = goodix_pdev_release;

 r = platform_device_register(goodix_pdev);

 /* register platform driver*/
 r = goodix_ts_core_init();

  ......
}

I2C 從機(jī)設(shè)備驅(qū)動中的 probe 函數(shù)和器件強相關(guān),各家撰寫方式不一樣。

在 I2C 設(shè)備驅(qū)動中,除了 init、exit、probe、remove 函數(shù)外,還要實現(xiàn) read、write 函數(shù)才行。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 驅(qū)動
    +關(guān)注

    關(guān)注

    12

    文章

    1900

    瀏覽量

    86528
  • I2C
    I2C
    +關(guān)注

    關(guān)注

    28

    文章

    1534

    瀏覽量

    127017
  • 數(shù)據(jù)結(jié)構(gòu)

    關(guān)注

    3

    文章

    573

    瀏覽量

    40601
收藏 人收藏

    評論

    相關(guān)推薦
    熱點推薦

    Linux內(nèi)核中描述I2C的四個核心結(jié)構(gòu)

    I2C核心維護(hù)了i2c_bus結(jié)構(gòu)體,提供了I2C總線驅(qū)動設(shè)備
    的頭像 發(fā)表于 09-04 09:35 ?2378次閱讀
    Linux內(nèi)核中描述<b class='flag-5'>I2C</b>的四個核心<b class='flag-5'>結(jié)構(gòu)</b>體

    為什么I2C總線忙于兩個設(shè)備?

    晚上好,我正試圖通過PS2C作為主機(jī)來獲得兩個MPU-9250的工作。連接到總線只有一個MPU-9250一切工作完美!使用兩個設(shè)備不能工作,并且I2
    發(fā)表于 11-14 11:31

    什么是基于嵌入式Linux的I2C設(shè)備驅(qū)動程序?

    由于I2C總線的通用性,Linux作為一款優(yōu)秀的嵌入式操作系統(tǒng),也必須要對其要有很好的支持。在Linux內(nèi)核源碼中對I2C總線的驅(qū)動是基于總線設(shè)備驅(qū)
    發(fā)表于 09-02 08:04

    I2C總線驅(qū)動設(shè)備驅(qū)動

    為400kbit/s常見iic設(shè)備eeprom觸摸芯片溫濕度傳感器mpu6050(姿態(tài)傳感器)…框架圖I2C核心提供I2C總線驅(qū)動設(shè)備
    發(fā)表于 12-13 06:18

    I2C設(shè)備驅(qū)動的相關(guān)資料下載

    文章目錄1、簡介2、I2C總線、設(shè)備驅(qū)動結(jié)構(gòu)體定義2.1 結(jié)構(gòu)體定義--
    發(fā)表于 02-10 06:39

    基于嵌入式Linux下的I2C設(shè)備驅(qū)動的總體思路與框架設(shè)計

    由于I2C總線的通用性,Linux作為一款優(yōu)秀的嵌入式操作系統(tǒng),也必須要對其要有很好的支持。在Linux內(nèi)核源碼中對I2C總線的驅(qū)動是基于總線設(shè)備
    發(fā)表于 08-20 09:04 ?3889次閱讀
    基于嵌入式Linux下的<b class='flag-5'>I2C</b><b class='flag-5'>設(shè)備</b><b class='flag-5'>驅(qū)動</b>的總體思路與框架設(shè)計

    Linux的I2C驅(qū)動架構(gòu)

    意義上的讀寫函數(shù)一樣,這兩個函數(shù)對i2c_client指針指定的設(shè)備,讀寫int個char。返回值為讀寫的字節(jié)數(shù)。對于我們現(xiàn)有的SLIC的驅(qū) 動,只要將最后要往總線上進(jìn)行讀寫的數(shù)據(jù)引出
    發(fā)表于 04-02 14:38 ?758次閱讀

    STM32 I2C硬件的結(jié)構(gòu)

    我們可以看見STM32的硬件I2C兩個數(shù)據(jù)有關(guān)的寄存器“數(shù)據(jù)寄存器(Data register)”(DR)和“數(shù)據(jù)移位寄存器(Data
    的頭像 發(fā)表于 04-30 15:00 ?7864次閱讀
    STM32 <b class='flag-5'>I2C</b>硬件的<b class='flag-5'>結(jié)構(gòu)</b>

    Linux驅(qū)動I2C設(shè)備驅(qū)動(基于Freescale i.MX6ULL平臺了解I2C驅(qū)動框架,順便寫個簡陋的MPU6050驅(qū)動

    文章目錄1、簡介2、I2C總線、設(shè)備驅(qū)動結(jié)構(gòu)體定義2.1 結(jié)構(gòu)體定義--
    發(fā)表于 12-06 13:51 ?8次下載
    Linux<b class='flag-5'>驅(qū)動</b>:<b class='flag-5'>I2C</b><b class='flag-5'>設(shè)備</b><b class='flag-5'>驅(qū)動</b>(基于Freescale <b class='flag-5'>i</b>.MX6ULL平臺了解<b class='flag-5'>I2C</b>的<b class='flag-5'>驅(qū)動</b>框架,順便寫個簡陋的MPU6050<b class='flag-5'>驅(qū)動</b>)

    嵌入式內(nèi)核及驅(qū)動開發(fā)-09IIC子系統(tǒng)框架使用(I2C協(xié)議和時序,I2C驅(qū)動框架,I2C設(shè)備驅(qū)動開發(fā),MPU6050硬件連接

    設(shè)備adapter i2c 控制器對象數(shù)據(jù)包對象讀寫數(shù)據(jù)設(shè)備樹中添加MPU6050信息內(nèi)核選配添加設(shè)備
    發(fā)表于 12-06 14:06 ?17次下載
    嵌入式內(nèi)核及<b class='flag-5'>驅(qū)動</b>開發(fā)-09IIC子系統(tǒng)框架使用(<b class='flag-5'>I2C</b>協(xié)議和時序,<b class='flag-5'>I2C</b><b class='flag-5'>驅(qū)動</b>框架,<b class='flag-5'>I2C</b>從<b class='flag-5'>設(shè)備</b><b class='flag-5'>驅(qū)動</b>開發(fā),MPU6050硬件連接

    兩個PS I2C控制器的回環(huán)測試

    I2C 總線的根信號線 SCL 和 SDA 需要上拉才能正常工作,當(dāng)板卡上沒有合適的硬件設(shè)置或者沒有合適的 I2Cslave 設(shè)備,我們就無法進(jìn)行
    的頭像 發(fā)表于 04-13 08:35 ?2571次閱讀

    I2C控制器驅(qū)動介紹

    控制器驅(qū)動 I2C 總線驅(qū)動重點是 I2C 適配器驅(qū)動,這里要用到兩個重要的
    的頭像 發(fā)表于 07-22 15:38 ?1867次閱讀
    <b class='flag-5'>I2C</b>控制器<b class='flag-5'>驅(qū)動</b>介紹

    I2C子系統(tǒng)SW Architecture

    適配器(控制器)驅(qū)動,這里用到兩個重要的數(shù)據(jù)結(jié)構(gòu)i2c_adapter 和 i2c_algorithm。其中,Linux 內(nèi)核將 SOC
    的頭像 發(fā)表于 07-22 16:01 ?1172次閱讀
    <b class='flag-5'>I2C</b>子系統(tǒng)SW Architecture

    I2C子系統(tǒng)幾個主要的結(jié)構(gòu)

    I2C Data Structure 我們要搞懂一個 Linux 子系統(tǒng),必須研究它的數(shù)據(jù)結(jié)構(gòu),搞懂每個結(jié)構(gòu)體存儲了什么東西,才能梳理清楚該子系統(tǒng)的架構(gòu)。 I2C 子系統(tǒng)有幾個主要的
    的頭像 發(fā)表于 07-22 16:04 ?1106次閱讀
    <b class='flag-5'>I2C</b>子系統(tǒng)幾個主要的<b class='flag-5'>結(jié)構(gòu)</b>體

    I2C總線數(shù)據(jù)結(jié)構(gòu)詳解

    。以下是I2C總線數(shù)據(jù)結(jié)構(gòu)的詳解: 一、I2C總線數(shù)據(jù)包的基本組成 I2C總線上的
    的頭像 發(fā)表于 01-17 15:46 ?654次閱讀