网站建设行业2017,手机网站关键词seo,各大网站发布信息,阀门网站建设个人主页#xff1a;董哥聊技术我是董哥#xff0c;嵌入式领域新星创作者创作理念#xff1a;专注分享高质量嵌入式文章#xff0c;让大家读有所得#xff01;文章目录1、前言2、驱动框架3、源码目录结构4、用户空间下的目录结构1、前言 NVMEM SUBSYSTEM#xff0c;该子系… 个人主页董哥聊技术我是董哥嵌入式领域新星创作者创作理念专注分享高质量嵌入式文章让大家读有所得文章目录1、前言2、驱动框架3、源码目录结构4、用户空间下的目录结构1、前言 NVMEM SUBSYSTEM该子系统整体架构不算太大还是比较容易去理解的下面我们一起去一探究竟 NVMEMNon Volatile Memory该子系统主要用于实现EEPROM、Efuse等非易失存储器的统一管理。
在早期像EEPROM驱动是存放于/drivers/misc目录下由于没有做到好的抽象每次需要去访问相应内存空间都需要去复制几乎一样的代码去注册sysfs这是一个相当大的抽象泄露。
NVMEM子系统就是为了解决以往的抽象泄露问题。
2、驱动框架 该驱动框架较为简单也适合初学者去熟悉基本的驱动框架。 应用层可以通过用户空间所提供的文件节点来读取或者修改nvmem存储器的数据。
NVMEM 核心层统一管理NVMEM设备向上实现文件系统接口数据的传递向下提供统一的注册注销nvmem设备接口。
NVMEM 总线驱动注册NVMEM总线实现NVMEM控制器的底层代码实现。
TIP
nvmem子系统提供读写存储器的接口有两种一种是通过文件系统读写一种是在内核驱动直接读写。
对于EEPROM其可以进行读写操作而对于efuse更多用于读取密钥信息进而判断镜像是否被篡改在用户空间是不允许被更改的。
这种是通过驱动提供的开放接口直接获取指定位置的数据详细的后面展开来说。
3、源码目录结构
ketnel
│ └── driver
│ │ └── nvmem
│ │ │ ├── core.c # NVMEM核心层
│ │ │ ├── rockchip-efuse.c # NVMEM总线驱动4、用户空间下的目录结构
我们可以在用户空间去读取/写入数据其所在的目录/sys/bus/nvmem/devices/dev-name/nvmem
hexdump /sys/bus/nvmem/devices/qfprom0/nvmem0000000 0000 0000 0000 0000 0000 0000 0000 0000
*
00000a0 db10 2240 0000 e000 0c00 0c00 0000 0c00
0000000 0000 0000 0000 0000 0000 0000 0000 0000
...
*
0001000点赞关注永远不迷路