登录/注册

regmap read

更多

在 Linux 内核开发或嵌入式系统编程中,regmap read 通常指的是使用 regmap 接口来读取硬件设备寄存器值的操作。

核心概念:

  1. regmap (Register Map):

    • 是 Linux 内核提供的一个抽象层。
    • 用于统一访问不同设备(I2C, SPI, 内存映射 IO 等)上的硬件寄存器。
    • 简化驱动代码,提供缓存、读写同步、访问格式定义等常用功能。
  2. regmap_read() 函数:

    • 这是执行寄存器读取操作的核心函数。
    • 函数原型:
      int regmap_read(struct regmap *map, unsigned int reg, unsigned int *val);
    • 参数解释:
      • map: 指向目标设备的 regmap 结构的指针。这个结构在初始化 regmap (通常通过 devm_regmap_init_i2c, devm_regmap_init_spi, regmap_init_mmio 等函数) 时获得。
      • reg: 要读取的寄存器地址(偏移量)。这个地址通常是在 regmap 配置的上下文中有意义的值(即物理地址或相对于基地址的偏移)。
      • val: 指向一个无符号整数的指针。函数成功执行后,读取到的寄存器值将通过这个指针返回。
    • 返回值:
      • 成功时返回 0
      • 失败时返回一个负的错误码 (例如 -EIO 表示通信错误, -EINVAL 表示参数无效等)。务必检查返回值!

基本用法示例:

#include 
#include 
#include 

// ...(在驱动代码中,通常 probe 函数里)...

// 1. 获取设备的 regmap (初始化过程通常在 probe 函数完成,这里省略 regmap 创建代码)
struct regmap *my_device_regmap = ...;

// 2. 定义要读取的寄存器地址
unsigned int register_address = 0x1234; // 例如,状态寄存器的地址

// 3. 声明变量存放读取结果
unsigned int read_value;
int ret;

// 4. 执行读操作
ret = regmap_read(my_device_regmap, register_address, &read_value);

// 5. 检查结果
if (ret == 0) {
    // 读取成功!read_value 中包含了寄存器 0x1234 的值
    dev_info(dev, "Read from reg 0x%x: 0x%08x\n", register_address, read_value);
} else {
    // 处理错误
    dev_err(dev, "Failed to read reg 0x%x: %d\n", register_address, ret);
}

关键点总结:

简单来说,regmap read 就是告诉内核:“请通过我之前配置好的访问方法 (regmap),去这个硬件地址 (reg) 读取一个寄存器值,并存到 (val) 指向的地方。成功返回 0,失败返回错误码。”

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

后,就可以调用regmap提供的read/write/update等操作了。常用的操作函数原型如下://向单个reg写入valint regmap

2025-05-22 10:40:53

飞凌嵌入式ElfBoard ELF 1板卡-Regmap的优势

和可扩展性。 综上所述,Regmap 相对于传统的 spi_write/spi_read 函数提供了更高级的抽象接口、灵活的配置、寄存器缓存、寄存器位域操作和可扩展性等优势,使得驱动程序的开发更加简单、可维护和可移植

2025-05-22 10:39:41

嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-Regmap子系统之Regmap框架结构

:regmap_init_():用于初始化Regmap对象,其中\"\"表示具体的物理总线类型,如regmap_init_s

2025-04-17 13:59:55

READ4353J 数据表

READ4353J 数据表

资料下载 张艳 2023-06-30 19:27:49

READ4304G 数据表

READ4304G 数据表

资料下载 goodmbby 2023-06-30 19:27:34

READ2354J 数据表

READ2354J 数据表

资料下载 fansz 2023-01-11 18:50:57

READ2353J 数据表

READ2353J 数据表

资料下载 佚名 2023-01-11 18:50:48

READ4354J 数据表

READ4354J 数据表

资料下载 佚名 2023-01-10 18:54:18

飞凌嵌入式ElfBoard ELF 1板卡-Regmap子系统之Regmap简介

Regmap(Register Map)API 是一个在 Linux 内核中提供对寄存器映射的抽象访问的接口。它旨在简化对寄存器和寄存器集合的访问和配置,并提供一种统一的方式来管理硬件寄存器的读取

2025-04-16 11:03:00

SSM2529 spk异常发热怎么解决?

时候dump寄存器值 regmap_ read reg= 0x0, val= 0x28 , regmap_

2023-11-28 06:52:49

Linux Regmap 操作函数

Regmap 操作函数 1、Regmap 申请与初始化 regmap 支持多种物理总线,比如 I2C 和 SPI,我们需要根据所使用的接口来选择

2023-07-06 17:31:03

Linux Regmap 驱动框架

1、regmap 框架结构 regmap 驱动框架如下图所示: regmap 框架分为三层: ①、底层物理总线:

2023-07-06 17:29:59

Linux中什么是 Regmap

的 PWM、定时器等外设初始化,最终都是要落到寄存器的设置上。 Linux 下使用 i2c_transfer 来读写 I2C 设备中的寄存器,SPI 接口的话使用 spi_write/spi_read

2023-07-06 17:25:56

以rk808驱动为例子讲解i2c regmap方式读写

regmap_read(chip->regmap, RK818_LDO_EN_REG, &ldo_en);regmap

2022-08-11 16:43:02

「正点原子Linux连载」第六十章Linux RTC驱动实验

_write、regmap_read等API函数才能操作寄存器。第270行,从设备树中获取RTC的中断号。第289行,设置RTC_ LPPGDR寄存器值为SNVS_LPPGDR_INIT= 0x41736166,这里就是用

2020-03-18 10:20:06
7天热门专题 换一换
相关标签