Android怎么读写eeprom
发表于:2024-11-19 作者:千家信息网编辑
千家信息网最后更新 2024年11月19日,今天小编给大家分享一下Android怎么读写eeprom的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们
千家信息网最后更新 2024年11月19日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安全错误
数据库的锁怎样保障安全
无法与服务器建立可靠的连接
CS杂志数据库
政务数据库建设指南
海棠到了凌晨服务器就进不去
服务器倒切是什么意思
战地五服务器
海南电商软件开发费用
永兴软件开发培训哪家好
河南服务器电源厂家电话
暗178数据库
软件开发项目简历描述
工程计算仿真软件开发
bds服务器全称
潜江订制软件开发中心
采购系统管理软件开发
pykms服务器搭建
数据库mysql对象有哪些内容
网络安全三个关键节点
宁波一站式软件开发系统
魔兽80年代装备数据库
建筑结构软件开发
网络数据库应用会计
国内网站服务器
新笑傲江湖江天孤鹤服务器
db2数据库创建教程
供电公司网络安全分析会
软件开发技术优势现状
mc的服务器是怎么加强管理
mssql如何新建数据库
河南邮境通网络技术有限公司