Android怎么读写eeprom
发表于:2025-11-15 作者:千家信息网编辑
千家信息网最后更新 2025年11月15日,今天小编给大家分享一下Android怎么读写eeprom的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们
千家信息网最后更新 2025年11月15日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安全错误
数据库的锁怎样保障安全
物联网软件开发原理
江苏赛普网络技术
网络安全先进集体主要成绩
青少年网络安全教育新闻
django数据库类型
人民网评信息网络安全
网络安全所涉及的技术
电厂网络安全流程优化
服务器可以当笔记本用吗
江西网络安全技能大赛
网络技术和sdn
启用4g 没有语音与数据库
网络安全班队会教育
阿里网络技术老大
中国互联网总服务器
简述软件开发的阶段
欧盟有没有经济数据库
鸠鸠互联网科技合肥分公司
南宁新东方网络技术有限公司
sql数据库设置并发数
南瑞水利水电工软件开发招聘
云服务器哪里的好
网络安全工程师灰色收入
驼峰数据库
网络安全破绽是什么
常用多维数据库有哪些
华自科技软件开发
ps5proxy服务器是什么
网络安全年度投入
河南慧优购互联网科技有限公司