哈哈哈哈哈操欧洲电影,久草网在线,亚洲久久熟女熟妇视频,麻豆精品色,久久福利在线视频,日韩中文字幕的,淫乱毛视频一区,亚洲成人一二三,中文人妻日韩精品电影

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

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

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

Linux Regmap 操作函數(shù)

麥辣雞腿堡 ? 來(lái)源:嵌入式Linux系統(tǒng)開(kāi)發(fā) ? 作者:嵌入式Linux系統(tǒng)開(kāi) ? 2023-07-06 17:31 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

Regmap 操作函數(shù)

1、Regmap 申請(qǐng)與初始化

regmap 支持多種物理總線,比如 I2C 和 SPI,我們需要根據(jù)所使用的接口來(lái)選擇合適的 regmap 初始化函數(shù)。Linux 內(nèi)核提供了針對(duì)不同接口的 regmap 初始化函數(shù)。

SPI 接口初始化函數(shù)為 regmap_init_spi

I2C 接口的初始化函數(shù)為 regmap_init_i2c

不管是什么接口,全部使用 regmap_exit 這個(gè)函數(shù)來(lái)釋放 regmap

我們一般會(huì)在 probe 函數(shù)中初始化 regmap_config,然后申請(qǐng)并初始化 regmap。

2、regmap 設(shè)備訪問(wèn) API 函數(shù)

不管是 I2C 還是 SPI 等接口,還是 SOC 內(nèi)部的寄存器,對(duì)于寄存器的操作就兩種:讀和寫(xiě)。regmap 提供了最核心的兩個(gè)讀寫(xiě)操作:regmap_read 和 regmap_write。這兩個(gè)函數(shù)分別用來(lái)讀/寫(xiě)寄存器。

在 regmap_read 和 regmap_write 的基礎(chǔ)上還衍生出了其他一些 regmap 的 API 函數(shù),首先是regmap_update_bits 函數(shù)??疵志椭?,此函數(shù)用來(lái)修改寄存器指定的 bit,函數(shù)原型如下:

int

regmap_update_bits

(structregmap*

map

,

unsigned

int

reg,

unsigned

int

mask,

unsigned

int

val,

函數(shù)參數(shù)和返回值含義如下:

map:要操作的 regmap。

reg:要操作的寄存器。

mask:掩碼,需要更新的位必須在掩碼中設(shè)置為 1。

val:需要更新的位值。

返回值:0,寫(xiě)成功;其他值,寫(xiě)失敗。

比如要將寄存器的 bit1 和 bit2 置 1,那么 mask 應(yīng)該設(shè)置為 0X00000011,此時(shí) val 的 bit1 和 bit2 應(yīng)該設(shè)置為 1,也就是 0Xxxxxxx11。

如果要清除寄存器的 bit4 和 bit7,那么 mask 應(yīng)該設(shè)置為 0X10010000,val 的 bit4 和 bit7 設(shè)置為 0,也就是 0X0xx0xxxx。

接下來(lái)看一下 regmap_bulk_read 函數(shù),此函數(shù)用于讀取多個(gè)寄存器的值,函數(shù)原型如下:

int

regmap_bulk_read

(structregmap*

map

,

unsigned

int

reg,

void

*val,

size_t

val_count)

函數(shù)參數(shù)和返回值含義如下:

map:要操作的 regmap。

reg:要讀取的第一個(gè)寄存器。

val:讀取到的數(shù)據(jù)緩沖區(qū)。

val_count:要讀取的寄存器數(shù)量。

返回值:0,寫(xiě)成功;其他值,讀失敗。

另外也有多個(gè)寄存器寫(xiě)函數(shù) regmap_bulk_write,函數(shù)原型如下:

int

regmap_bulk_write

(structregmap*

map

,

unsigned

int

reg,

const

void

*val,

size_t

val_count)

函數(shù)參數(shù)和返回值含義如下:

map:要操作的 regmap。

reg:要寫(xiě)的第一個(gè)寄存器。

val:要寫(xiě)的寄存器數(shù)據(jù)緩沖區(qū)。

val_count:要寫(xiě)的寄存器數(shù)量。

返回值:0,寫(xiě)成功;其他值,讀失敗。

關(guān)于 regmap 常用到 API 函數(shù)就講解到這里,還有很多其他功能的 API 函數(shù),大家自行查 閱 Linux 內(nèi)核即可,內(nèi)核里面對(duì)每個(gè) API 函數(shù)都有詳細(xì)的講解。

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

    關(guān)注

    88

    文章

    11806

    瀏覽量

    219482
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4421

    瀏覽量

    67807
  • 系統(tǒng)
    +關(guān)注

    關(guān)注

    1

    文章

    1047

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    飛凌嵌入式ElfBoard ELF 1板卡-Regmap子系統(tǒng)之Regmap簡(jiǎn)介

    的物理地址、寄存器位寬、寄存器縮放因子等信息,以及底層設(shè)備的通信接口(如I2C或SPI)。一旦regmap對(duì)象被初始化,驅(qū)動(dòng)程序可以使用 Regmap API 中提供的函數(shù)來(lái)讀取和寫(xiě)入寄存器的值,執(zhí)行位
    發(fā)表于 04-16 11:03

    嵌入式學(xué)習(xí)-飛凌嵌入式ElfBoard ELF 1板卡-Regmap子系統(tǒng)之Regmap框架結(jié)構(gòu)

    與實(shí)際硬件之間的通信。不同的總線類型(如SPI、I2C、MMIO)可以通過(guò)適當(dāng)?shù)尿?qū)動(dòng)程序與Regmap物理總線進(jìn)行集成。每種物理總線都提供了一組操作函數(shù),用于讀取和寫(xiě)入寄存器。Regmap
    發(fā)表于 04-17 13:59

    飛凌嵌入式ElfBoard ELF 1板卡-Regmap的優(yōu)勢(shì)

    和可擴(kuò)展性。 綜上所述,Regmap 相對(duì)于傳統(tǒng)的 spi_write/spi_read 函數(shù)提供了更高級(jí)的抽象接口、靈活的配置、寄存器緩存、寄存器位域操作和可擴(kuò)展性等優(yōu)勢(shì),使得驅(qū)動(dòng)程序的開(kāi)發(fā)更加簡(jiǎn)單、可維護(hù)和可移植。
    發(fā)表于 05-22 10:39

    飛凌嵌入式ElfBoard ELF 1板卡-Regmap使用

    )。它首先分配內(nèi)存以存儲(chǔ)Regmap對(duì)象,然后設(shè)置Regmap的相關(guān)字段和操作函數(shù),以便與SPI總線進(jìn)行通信。最后,函數(shù)返回指向初始化的
    發(fā)表于 05-22 10:40

    「正點(diǎn)原子Linux連載」第六十章Linux RTC驅(qū)動(dòng)實(shí)驗(yàn)

    址對(duì)應(yīng)的虛擬地址。第259行,Linux3.1引入了一個(gè)全新的regmap機(jī)制,regmap用于提供一套方便的API函數(shù)操作底層硬件寄存器
    發(fā)表于 03-18 10:20

    「正點(diǎn)原子Linux連載」第六十章Linux RTC驅(qū)動(dòng)實(shí)驗(yàn)

    址對(duì)應(yīng)的虛擬地址。第259行,Linux3.1引入了一個(gè)全新的regmap機(jī)制,regmap用于提供一套方便的API函數(shù)操作底層硬件寄存器
    發(fā)表于 03-23 09:52

    以rk808驅(qū)動(dòng)為例子講解i2c regmap方式讀寫(xiě)

    I2C讀寫(xiě)時(shí)序regmap i2cIntroRegmap主要目的是減少慢速I/O驅(qū)動(dòng)上的重復(fù)邏輯,提供一種通用的接口來(lái)操作底層硬件上的寄存器.Regmap除了能做到統(tǒng)一的I/O接口,還可以在驅(qū)動(dòng)
    發(fā)表于 08-11 16:43

    Linux C函數(shù)手冊(cè)

    Linux C函數(shù)庫(kù)參考,一本linux學(xué)習(xí)的參考備查手冊(cè)
    發(fā)表于 11-03 17:33 ?0次下載

    linux_C函數(shù)庫(kù)中文手冊(cè)

    linux_C函數(shù)庫(kù)中文手冊(cè)linux_C函數(shù)庫(kù)中文手冊(cè)
    發(fā)表于 03-20 10:42 ?15次下載

    Linux C函數(shù)參考手冊(cè)

    Linux C函數(shù)參考手冊(cè)
    發(fā)表于 10-25 15:32 ?6次下載
    <b class='flag-5'>Linux</b> C<b class='flag-5'>函數(shù)</b>參考手冊(cè)

    Linux教程之Linux C函數(shù)參考教程免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是Linux教程之Linux C函數(shù)參考教程免費(fèi)下載。
    發(fā)表于 03-20 08:00 ?4次下載
    <b class='flag-5'>Linux</b>教程之<b class='flag-5'>Linux</b> C<b class='flag-5'>函數(shù)</b>參考教程免費(fèi)下載

    Linux內(nèi)核GPIO操作函數(shù)的詳解分析

    本文檔的主要內(nèi)容詳細(xì)介紹的是Linux內(nèi)核GPIO操作函數(shù)的詳解分析免費(fèi)下載。
    發(fā)表于 01-22 16:58 ?28次下載

    Linux中什么是 Regmap

    Linux 下大部分設(shè)備的驅(qū)動(dòng)開(kāi)發(fā)都是操作其內(nèi)部寄存器,比如 I2C/SPI 設(shè)備的本質(zhì)都是一樣的,通過(guò) I2C/SPI 接口讀寫(xiě)芯片內(nèi)部寄存器。芯片內(nèi)部寄存器也是同樣的道理,比如 I.MX6ULL
    的頭像 發(fā)表于 07-06 17:25 ?1312次閱讀

    Linux Regmap 驅(qū)動(dòng)框架

    ,regmap 向驅(qū)動(dòng)編寫(xiě)人員提供的 API 接口,驅(qū)動(dòng)編寫(xiě)人員使用這些API 接口來(lái)操作具體的芯片設(shè)備,也是驅(qū)動(dòng)編寫(xiě)人員重點(diǎn)要掌握的。 2、regmap 結(jié)構(gòu)體 Linux 內(nèi) 核
    的頭像 發(fā)表于 07-06 17:29 ?1954次閱讀
    <b class='flag-5'>Linux</b> <b class='flag-5'>Regmap</b> 驅(qū)動(dòng)框架

    Linux內(nèi)核如何使用結(jié)構(gòu)體和函數(shù)指針?

    我將結(jié)合具體的Linux內(nèi)核驅(qū)動(dòng)框架代碼來(lái)展示Linux內(nèi)核如何使用結(jié)構(gòu)體和函數(shù)指針。
    的頭像 發(fā)表于 09-06 14:17 ?1961次閱讀
    <b class='flag-5'>Linux</b>內(nèi)核如何使用結(jié)構(gòu)體和<b class='flag-5'>函數(shù)</b>指針?
    灵寿县| 卢龙县| 木兰县| 南漳县| 靖安县| 昌图县| 克东县| 宜川县| 东平县| 敖汉旗| 通江县| 宜兴市| 石屏县| 六安市| 称多县| 凤台县| 洛南县| 济阳县| 尼木县| 乌海市| 乐陵市| 紫阳县| 阿拉善盟| 米林县| 东辽县| 万宁市| 高台县| 富锦市| 宁陵县| 聂拉木县| 邳州市| 商城县| 平远县| 拜城县| 高碑店市| 息烽县| 丰宁| 崇明县| 莆田市| 泌阳县| 当阳市|