千家信息网

Android怎么读写eeprom

发表于:2025-02-05 作者:千家信息网编辑
千家信息网最后更新 2025年02月05日,今天小编给大家分享一下Android怎么读写eeprom的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们
千家信息网最后更新 2025年02月05日Android怎么读写eeprom

今天小编给大家分享一下Android怎么读写eeprom的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

Android 9 读写eeprom

linux 读取eeprom相对来说比较简单,因为内核中集成了大部分eeprom的驱动,文件目录在kernel/drivers/misc/eeprom/at24.c 。
而且我们不用区分at24cxx的不同容量导致的读写方式不同,只要将at24.c编译到内核,然后dts中注册相应的i2c通道即可。手中的模块a0 a1 a2 都是接地,所以器件地址为0xa0,而dts中注册为七位地址,即0x50.

&i2c1 {        status = "okay";        clock-frequency = <300000>;        pinctrl-names="default";        pinctrl-0=<&i2c1_h_pins>;        at24c256@50{                compatible = "at24,24c256";                reg = <0x50>;                status = "okay";};};

按理说升级编译好的kernel后,就应该在对应的i2c节点下找到eeprom的节点,可是找来找去都没有找到这个节点,查看代码发现有这么个东西。

     at24->nvmem_config.name = dev_name(&client->dev);        at24->nvmem_config.dev = &client->dev;        at24->nvmem_config.read_only = !writable;        at24->nvmem_config.root_only = true;        at24->nvmem_config.owner = THIS_MODULE;        at24->nvmem_config.compat = true;        at24->nvmem_config.base_dev = &client->dev;        at24->nvmem_config.reg_read = at24_read;        at24->nvmem_config.reg_write = at24_write;        at24->nvmem_config.priv = at24;        at24->nvmem_config.stride = 1;        at24->nvmem_config.word_size = 1;        at24->nvmem_config.size = chip.byte_len;        at24->nvmem = nvmem_register(&at24->nvmem_config);if (IS_ERR(at24->nvmem)) {                err = PTR_ERR(at24->nvmem);goto err_clients;}

原来新的内核中引入了nvmem的架构对eeprom操作。重新配置内核,打开nvmem的编译选项,重新升级后,找到了nvmem的节点。

应用层对eeprom的操作,都是通过这个节点。

写个应用层代码:

#include #include #include #include #include #include #include "android/log.h"#include #include #include #define FILE_PATH  "/sys/bus/nvmem/devices/1-00500/nvmem"int main(){int fd;int size;char data[512] = {0};char r_data[64] = {0};char *w_data = "Hello World!Good Day!\n";        fd = open(FILE_PATH, O_RDWR);if (fd < 0) {printf("Can't open file %s\r\n", FILE_PATH);return -1;}lseek(fd,0,SEEK_SET);write(fd,data,sizeof(data)); //erase eepromlseek(fd,0,SEEK_SET);write(fd,w_data,strlen(w_data));lseek(fd,0,SEEK_SET);        size = read(fd,r_data,sizeof(r_data));printf("read data==%s\n",r_data);close(fd);return 0;}

Android.mk

LOCAL_PATH:= $(call my-dir)include $(CLEAR_VARS)LOCAL_SRC_FILES:= max.cLOCAL_MODULE := maxLOCAL_MODULE_TAGS := optionalLOCAL_SHARED_LIBRARIES += \        libcutils \        liblog LOCAL_MODULE_PATH :=$(PRODUCT_OUT)/vendor/bininclude $(BUILD_EXECUTABLE)


以上就是"Android怎么读写eeprom"这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注行业资讯频道。

节点 内核 知识 篇文章 不同 编译 代码 内容 地址 大部分 应用层 升级 应用 很大 不用 东西 器件 容量 就是 按理说 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 数据库zap是什么意思 徐州网络营销软件开发推荐咨询 新疆如何做好网络安全 海康威视较时服务器 centos7网络安全 疫情下的数据库 来卡互联网科技海南有限公司 网络安全隐患情况说明 ios表格怎么保存到数据库 svn服务器的使用 明日之后夏尔镇服务器怎样赚金条 前海迪燊网络技术有限公司 数据库文件mdp怎么打开 学校网络安全应急预案范文 王牌战争怎样创造服务器教程 有服务器的电脑怎么找到还原卡 为啥数据库别人能黑进来 条件格式怎么筛选不同数据库 软件开发成本测算规范 智能终端软件开发用什么语言 顺义区通用网络技术常见问题 汽车配套软件开发商 徐州网络营销软件开发推荐咨询 通联钱包服务器返回数据 我国网络安全升级 网络安全手抄报纸稿 国税局网络安全教育计划 金仓数据库和神通哪个好 层次和网状数据库管理系统 恒山系列鲲鹏服务器订购
0