0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Linux中什么是 Regmap

麦辣鸡腿堡 来源:嵌入式Linux系统开发 作者:嵌入式Linux系统开 2023-07-06 17:25 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

Linux 下大部分设备的驱动开发都是操作其内部寄存器,比如 I2C/SPI 设备的本质都是一样的,通过 I2C/SPI 接口读写芯片内部寄存器。芯片内部寄存器也是同样的道理,比如 I.MX6ULL的 PWM、定时器等外设初始化,最终都是要落到寄存器的设置上。

Linux 下使用 i2c_transfer 来读写 I2C 设备中的寄存器,SPI 接口的话使用 spi_write/spi_read等。I2C/SPI 芯片又非常的多,因此 Linux 内核里面就会充斥了大量的 i2c_transfer 这类的冗余代码,再者,代码的复用性也会降低。比如 icm20608 这个芯片既支持 I2C 接口,也支持 SPI 接口。假设我们在产品设计阶段一开始将 icm20608 设计为 SPI 接口,但是后面发现 SPI 接口不够用,或者 SOC 的引脚不够用,我们需要将 icm20608 改为 I2C 接口。这个时候 icm20608 的驱动就要大改,我们需要将 SPI 接口函数换为 I2C 的,工作量比较大。

基于代码复用的原则,Linux 内核引入了 regmap 模型,regmap 将寄存器访问的共同逻辑抽象出来,驱动开发人员不需要再去纠结使用 SPI 或者 I2C 接口 API 函数,统一使用 regmapAPI 函数。这样的好处就是统一使用 regmap,降低了代码冗余,提高了驱动的可以移植性。regmap 模型的重点在于:

通过 regmap 模型提供的统一接口函数来访问器件的寄存器,SOC 内部的寄存器也可以使用 regmap 接口函数来访问。

regmap 是 Linux 内核为了减少慢速 I/O 在驱动上的冗余开销,提供了一种通用的接口来操作硬件寄存器。另外,regmap 在驱动和硬件之间添加了 cache,降低了低速 I/O 的操作次数,提高了访问效率,缺点是实时性会降低。

什么情况下会使用 regmap:

①、硬件寄存器操作,比如选用通过 I2C/SPI 接口来读写设备的内部寄存器,或者需要读写 SOC 内部的硬件寄存器。

②、提高代码复用性和驱动一致性,简化驱动开发过程。

③、减少底层 I/O 操作次数,提高访问效率。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux
    +关注

    关注

    88

    文章

    11628

    浏览量

    218015
  • 模型
    +关注

    关注

    1

    文章

    3649

    浏览量

    51719
  • 系统
    +关注

    关注

    1

    文章

    1043

    浏览量

    22177
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

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

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

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

    Regmap 框架的主要分为物理总线、Regmap核心、Regmap API三部分组成。Regmap物理总线(Regmap Bus):
    发表于 04-17 13:59

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

    一、抽象接口Regmap 提供了一个抽象的寄存器访问接口,隐藏了底层通信接口的细节。这使得驱动程序可以使用统一的接口来访问不同类型的设备寄存器,如 I2C、SPI、MMIO 等,而无需关心底层通信
    发表于 05-22 10:39

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

    , int reg, int val);//向单个reg写入指定长度的数据,数据存放在valint regmap_raw_write(struct regmap *map, int reg, void
    发表于 05-22 10:40

    #硬声创作季 #LinuxLinux-4.35.1 Regmap驱动框架详解-1

    Linux
    水管工
    发布于 :2022年11月10日 22:29:28

    #硬声创作季 #LinuxLinux-4.35.1 Regmap驱动框架详解-2

    Linux
    水管工
    发布于 :2022年11月10日 22:29:54

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

    RTC硬件原理部分我们已经在裸机篇的第二十五章进行了详细的讲解,这里就不再废话了。Linux内核将RTC设备抽象为rtc_device结构体,因此RTC设备驱动就是申请并初始化rtc_device
    发表于 03-18 10:20

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

    RTC硬件原理部分我们已经在裸机篇的第二十五章进行了详细的讲解,这里就不再废话了。Linux内核将RTC设备抽象为rtc_device结构体,因此RTC设备驱动就是申请并初始化rtc_device
    发表于 03-23 09:52

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

    I2C读写时序regmap i2cIntroRegmap主要目的是减少慢速I/O驱动上的重复逻辑,提供一种通用的接口来操作底层硬件上的寄存器.Regmap除了能做到统一的I/O接口,还可以在驱动
    发表于 08-11 16:43

    Embeded linux的MMC驱动

    Embeded linux的MMC驱动
    发表于 05-14 16:08 1447次阅读
    Embeded <b class='flag-5'>linux</b><b class='flag-5'>中</b>的MMC驱动

    linux复制文件的方法

     linux如何复制文件?
    发表于 06-03 09:17 2480次阅读
    <b class='flag-5'>linux</b><b class='flag-5'>中</b>复制文件的方法

    IoT Linux 选择

    在物联网的设备设计,从低成本和低功耗的角度看,Android肯定比不过嵌入式Linux。但在选择用于部署Linux的发行版本时,却一直饱受困扰。
    的头像 发表于 12-25 18:24 882次阅读

    如何在Linux查找断开的符号链接

    在之前的文章,我们解释了什么是 Linux 的符号链接。符号链接(Symbolic links 或 symlinks)或软链接(soft links)用于在 Linux
    的头像 发表于 02-06 18:23 2204次阅读

    Linux Regmap 驱动框架

    regmap 向驱动编写人员提供的 API 接口,驱动编写人员使用这些API 接口来操作具体的芯片设备,也是驱动编写人员重点要掌握的。 2、regmap 结构体 Linux 内 核 将 regm
    的头像 发表于 07-06 17:29 1695次阅读
    <b class='flag-5'>Linux</b> <b class='flag-5'>Regmap</b> 驱动框架

    Linux Regmap 操作函数

    Regmap 操作函数 1、Regmap 申请与初始化 regmap 支持多种物理总线,比如 I2C 和 SPI,我们需要根据所使用的接口来选择合适的 regmap 初始化函数。
    的头像 发表于 07-06 17:31 4432次阅读