I.MX6 AT24Cxx eeprom Linux i2c-gpio】的更多相关文章

/************************************************************************** * I.MX6 AT24Cxx eeprom Linux i2c-gpio * 声明: * 很多时候当我们使用Linux系统管理硬件的时候,更多的是通过芯片中的控制器, * 但有时候,我们也会遇到芯片中的控制不够用,或者在设计的过程中出现意外,如没 * 有想到控制器存在,本文中的内容就是因为I2C中第四个控制器不存在,但硬件上却 * 认为其存在,…
/******************************************************************************************* * I.MX6 Linux I2C device& driver hacking * 声明: * 1. 本文主要是对Linux I2C驱动进行代码跟踪,主要是为了能够对I2C驱动框架有个全面的了解: * 2. 本文源代码来自myzr_android4_2_2_1_1_0.tar.bz2: * 3. 如果你有兴趣,…
1. 框架1.1 硬件协议简介1.2 驱动框架1.3 bus-drv-dev模型及写程序a. 设备的4种构建方法a.1 定义一个i2c_board_info, 里面有:名字, 设备地址 然后i2c_register_board_info(busnum, ...) (把它们放入__i2c_board_list链表) list_add_tail(&devinfo->list, &__i2c_board_list); 链表何时使用: i2c_register_adapter > i2…
  linux i2c驱动架构-dm368 i2c驱动分析   在阅读本文最好先熟悉一种i2c设备的驱动程序,并且浏览一下i2c-core.c以及芯片提供商的提供的i2c总线驱动(i2c-davinci.c).标题党请见谅! 其实i2c接口非常的简单,即使用51单片的gpio来模拟i2c,编写一个e2prom或者其他i2c接口的驱动程序,也不是什么难事,几百行代码就能搞定. 但是Linux的i2c驱动体系结构却有相当的复杂度,不管是叫linux i2c驱动还是单片机i2c驱动,其根本还是操作so…
目录 更新记录 一.Linux I2C 体系结构 1.1 Linux I2C 体系结构的组成部分 1.2 内核源码文件 1.3 重要的数据结构 二.Linux I2C 核心 2.1 流程 2.2 主要函数 三.Linux I2C 适配器驱动 3.1 I2C 适配器驱动的注册于注销 3.2 probe 成员函数 四.Linux I2C 设备驱动 4.1 设备驱动一般过程 4.2 Linux 的 i2c-dev.c 文件分析 4.3 AT24xx EEPROM的I2C设备驱动实例 五.应用程序开发…
一:Linux i2c子系统简介: 1.Linux 的 I2C 体系结构分为 3 个组成部分: (1) I2C 核心. I2C 核心提供了 I2C 总线驱动和设备驱动的注册.注销方法,I2C 通信方法(即“algorithm”)上层的.与具体适配器无关的代码以及探测设备.检测设备地址的上层代码等. (2) I2C 总线驱动. I2C 总线驱动是对 I2C 硬件体系结构中适配器端的实现,适配器可由 CPU 控制,甚至可以直接集成在 CPU 内部. I2C 总线驱动主要包含了 I2C 适配器数据结构…
最近需要操作24C02,封装了一下函数方便以后操作. 参考链接: https://my.oschina.net/handawei/blog/68526 http://blog.csdn.net/onetwothreef/article/details/49488443 源码: #include <stdio.h> #include <linux/i2c.h> #include <linux/i2c-dev.h> #include <sys/stat.h> #…
前言 主要是想对Linux I2c驱动框架有一个整体的把控,因此会忽略协议上的某些细节,同时里面涉及到的一些驱动基础,比如平台驱动.设备模型.sysfs等也不进行详细说明原理,涉及到i2c协议部分也只会简单带过,因为linux内核里面已经实现了该协议,我们以后并不需要重新实现这些,只需要对协议有个简单的了解.如果有任何错误地方,请指出,谢谢! 注:图片来自互联网 内核版本:2.6.35.6 I2c介绍 I2C是"Inter Integrated Circuit Bus"的缩写,中文译成…
Linux I2C 驱动结构 i2c体系结构由三部分组成 i2C core i2c core提供了i2c 总线驱动 和 设备驱动的注册,注销方法 i2C and SMBus protocol 实现 i2C "bus" driver algorithm driver adapter driver i2c device driver chip drivers, 包括多种类型,如RTC, EEPROM, I/O expander, hardware monitoring, sound, vi…
前文<Android(Linux)控制GPIO的方法及实时性分析>主要使用Linux shell命令控制GPIO,该方法可在调试过程中快速确定GPIO硬件是否有问题,即对应的GPIO是否受控.实际项目中,一般需要对GPIO做特殊控制,如车载导航系统开机就给GPS模块上电,或在daemon程序中控制GPIO给一个脉冲以Reset蓝牙模块等,就不便用shell 命令来控制,而需要另想办法. http://elinux.org/RPi_GPIO_Code_Samples#sysfs介绍了如何在C代码…
Linux I2C 总线浅析 ㈠ Overview Linux的I2C体系结构分为3个组成部分: ·I2C核心: I2C核心提供了I2C总线驱动和设备驱动的注册.注销方法,I2C通信方法(即“algorithm”)上层的.与具体适配器无关的代码以及探测设备.检测设备地址的上层代码等.这部分是与平台无关的. ·I2C总线驱动: I2C总线驱动是对I2C硬件体系结构中适配器端的实现.I2C总线驱动主要包含了I2C适配器数据结构i2c_adapter.I2C适配器的algorithm数据结构i2c_a…
s3c2440的i2c控制器驱动(精简DIY),直接上代码,注释很详细: #include <linux/kernel.h> #include <linux/module.h> #include <linux/i2c.h> #include <linux/init.h> #include <linux/time.h> #include <linux/interrupt.h> #include <linux/delay.h>…
/********************************************************************** * I.MX6 KEY_ROW4 can't as GPIO pin * 说明: * Tony遇到KEY_ROW4作为GPIO口时无法设置高.低电平问题,后来通过在 * 相关patch中找到方法,很特殊. * * 2016-11-26 深圳 南山平山村 曾剑锋 ***********************************************…
在(一)中简述了Linux I2C子系统的三个主要成员i2c_adapter.i2c_driver.i2c_client.三者的关系也在上一节进行了描述.应该已经算是对Linux I2C子系统有了初步的了解.下面再对他们之间的关系进行代码层的深入分析,我认为对他们的关系了解的越好,越有助于I2C设备的驱动开发及调试. 带着问题去分析可能会更有帮助吧,通过对(一)的了解后,可能会产生以下的几点疑问: i2c_adapter驱动如何添加? i2c_client与i2c_board_info究竟是什么…
/** ****************************************************************************** * @author    暴走的小哥哥 * @version   V1.0.0 * @date       2016-02-19 ****************************************************************************** * <  Beijing university…
/** ****************************************************************************** * @author    暴走的小哥哥 * @version   V1.0.0 * @date       2016-02-19 ****************************************************************************** * <  Beijing university…
/** ****************************************************************************** * @author    暴走的小哥哥 * @version   V1.0.0 * @date       2016-02-23 ****************************************************************************** * <  Beijing university…
原文网址:http://www.cnblogs.com/biglucky/p/4059582.html 在(一)中简述了Linux I2C子系统的三个主要成员i2c_adapter.i2c_driver.i2c_client.三者的关系也在上一节进行了描述.应该已经算是对Linux I2C子系统有了初步的了解.下面再对他们之间的关系进行代码层的深入分析,我认为对他们的关系了解的越好,越有助于I2C设备的驱动开发及调试. 带着问题去分析可能会更有帮助吧,通过对(一)的了解后,可能会产生以下的几点疑…
i2c总线是一种十分常见的板级总线,本文以linux3.14.0为参考, 讨论Linux中的i2c驱动模型并利用这个模型写一个mpu6050的驱动, 最后在应用层将mpu6050中的原始数据读取出来 i2c子系统框架 下图就是我理解的i2c驱动框架示意图, 类似中断子系统, i2c子系统中也使用一个对象来描述一个物理实体, 设备对象与驱动分离, 驱动结合设备对象对硬件设备的描述才可以驱动一个具体的物理设备, 体现了分离的设计思想, 实现了代码的复用, 比如: 一个i2c控制器就对应一个i2c_b…
"./drivers/i2c/busses/i2c-s3c2410.c"是3.14.0内核中三星SoC的i2c控制器驱动程序, 本文试图通过对这个程序的分析, 剥离繁复的细节, 总结一套编写i2c主机控制器驱动的框架以及一个分析内核驱动的流程. 匹配之前 1287 static int __init i2c_adap_s3c_init(void) 1288 { 1289 return platform_driver_register(&s3c24xx_i2c_driver);…
/* This software uses a BSD license. Copyright (c) 2010, Sean Cross / chumby industriesAll rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:…
问题: linux i2c 的通信函数i2c_transfer在什么情况下出现错误描述: linux i2c设备驱动 本人在写i2c设备驱动的时候使用i2c transfer函数进行通信的时候无法进行读写,返回值函数是-11,这个返回值是什么意思, 解决方案1: 参考errno-base.h #define EPERM  1 /* Operation not permitted */#define ENOENT  2 /* No such file or directory */#define…
1. Linux内核支持I2C通用设备驱动(用户态驱动:由应用层实现对硬件的控制可以称之为用户态驱动),实现文件位于drivers/i2c/i2c-dev.c,设备文件为/dev/i2c-0 2. I2C通用设备驱动以字符设备注册进内核的 static const struct file_operations i2cdev_fops = { .owner = THIS_MODULE, .llseek = no_llseek, .read = i2cdev_read, .write = i2cde…
1. Linux I2C子系统架构 (1)I2C核心(I2C-Core):I2C 总线和I2C 设备驱动的中间枢纽,它提供了I2C 总线驱动和设备驱动的注册.注销方法等 (2)I2C控制器驱动(adapter):对控制器的驱动实现,控制器可在外部,也可以集成在CPU 内部. (3)I2C设备驱动:对I2C从设备的驱动实现,如AT24C02的驱动 (4)Linux I2C子系统提供了两种设备文件供应用层使用: ① 把I2C设备文件当做普通字符设备,通过读写文件来实现对从设备的读写(通过I2C-Co…
转自:http://blog.csdn.net/lugandong/article/details/48092397 版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[-] 前言 方式一 方式二 方式三 方式四 方式五 方式六 前言: 因为工作是音频驱动,所以经常涉及到I2C.I2S等常用的总线,想将I2C相关的东西总结一下,让自己更加了解I2C. 基于:Linux3.10 方式一: 使用arch/arm/mach-s3c24xx/mach-mini2440.c举例: stati…
i2c设备:ts.camera.audio.gsensor.e2prom I2C基本协议: 写:开始 -> 设备地址 -> 写标志 -> 应答 -> 内部地址 -> 应答 -> 数据 -> 应答 -> 停止 读:开始 -> 设备地址 -> 写标志 -> 应答 -> 内部地址 -> 应答 -> 停止 -> 开始 -> 设备地址 -> 读标志 -> 应答 -> 数据 -> 应答 ->…
linux的GPIO通过sysfs为用户提供服务,下面是linux kernel里的说明文档,学习一下. GPIO Sysfs Interface for Userspace ================================== Platforms which use the "gpiolib" implementors framework may choose to configure a sysfs user interface to GPIOs. This is…
本文转载自:http://blog.chinaunix.net/uid-21558711-id-3959287.html 分类: LINUX 原文地址:Linux I2C驱动分析(三)----i2c_dev驱动和应用层分析 作者:apple_guet 一.i2c-dev驱动分析 1.1.设备驱动注册 分析这个驱动,还是从module_init()和module_exit()开始,程序如下: 点击(此处)折叠或打开 static int __init i2c_dev_init(void) { in…
目录 前言 linux子系统 gpio子系统 gpio子系统实战-系统调用 前言 目前不涉及驱动源码 参考链接 linux子系统 在 Linux 系统中 绝大多数硬件设备都有非常成熟的驱动框架 驱动工程师使用这些框架添加与板子相关的硬件支持 建立硬件与Linux内核的联系 内核再通过统一文件系统接口呈现给用户 用户通过对应的设备文件控制硬件. gpio子系统 gpio子系统相关描述可在内核源码 Documentation/gpio 了解. 但是新版本(linux4.19左右)不再维护这个路径的A…
结合实际代码和书中描述,可能跟书上有一定出入.本文后续芯片相关代码参考ZYNQ. 15.1 总体结构 如下图,i2c驱动分为如下几个重要模块 核心层core,完成i2c总线.设备.驱动模型,对用户提供sys文件系统访问支持:为i2c内部adpter等提供注册接口. adpter,适配器,实际就是CPU集成的IIC控制器,有cpu控制,完成i2c物理总线操作,busses文件夹里,有各个cpu adapter的具体实现:algorithm集成到这个模块里,而且是adapter的一部分,主要实现总…