首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

26.3.4.2内核下的I2C驱动(一)

1.硬件协议 1.1mini2440 I2C设备如图所示 ? 1.2 I2C协议如下: ? 1.3启动和停止信号如下图 ? 1.4 I2C总线数据传输时序: ?...1.5 2440只负责发送,不知道数据含义,只有外设知道。如何写一个字节?参考AT24CXX手册 。 ? 注意:I2C设备读之前先写! ?...linux-2.6.22.6\Documentation\i2c\instantiating-devices 2.2如何构造I2C_CLIENT?设备的4种构建方法 2.1方法一: ?...mach-mini2440.c static struct i2c_board_info mini2440_i2c_devs[] __initdata = { { I2C_BOARD_INFO("...2.4第四种 从I2C总线上分辨出某个设备 ?   前面的3种方法都要事先确定适配器(I2C总线,I2C控制器)    如果我事先并不知道这个I2C设备在哪个适配器上,怎么办?

1.1K20
您找到你想要的搜索结果了吗?
是的
没有找到

32.Linux-2440下的DMA驱动(详解)

而我们之前用的内存分配kmalloc()函数,是不能用在DMA上,因为分配出来的内存可能在物理地址上是不连续的. 1.2 那么2440开发板如何来启动DMA,先来看2440的DMA寄存器 (PS:实际这些...1.2.2 且每个通道都可以处理以下4种情况: 1) 源和目标都在系统总线上(比如:两个物理内存地址) 2) 当目标在外设总线上时,源在系统总线上(外设指:串口,定时器,I2C,I2S等) 3) 当目标在系统总线上时...1.2.5 2440中的DMA寄存器如下图所示: ?...        0:PCLK同步     1:HCLK同步 (PS:如果有设备在HCLK上,该位应当设为1,比如:(SDRAM)内存数组, 反之当这些设备在PCLK上,应当设为0,比如:ADC,IIS,I2C.../module.h> #include #include #include #include <linux/delay.h

3.8K90

第019课 I2C协议详解及裸机程序分析

第002节_S3C2440I2C控制器 在嵌入式系统里面的主控芯片一般都会有I2C控制器,要是没有可以根据I2C协议用GPIO管脚模拟,但是非常麻烦,我们要发送数据时,可以把数据放到某个寄存器,它就会自动的发出时钟...void s3c2440_i2c_con_add(void) { register_i2c_controller(&s3c2440_i2c_con); } 第005节I2C控制器编程中断 中断控制器是...控制器 */ s3c2440_i2c_con_add(); /* 选择某款I2C控制器 */ select_i2c_controller("s3c2440"); /*...调用它的init函数 */ p_i2c_con_selected->init(); } select_i2c_controller(“s3c2440”)用于选择s3c2440i2c控制器。...p_i2c_con_selected->init()调用s3c2440i2c控制器结构体中init初始化函数,初始化s3c2440i2c控制器。

1.3K20

Linux系统驱动之I2C协议

资料下载 coding无法使用浏览器打开,必须用git工具下载: git clone https://e.coding.net/weidongshan/linux/doc_and_source_for_drivers.git...视频观看 百问网驱动大全 I2C协议 参考资料: i2c_spec.pdf 1....硬件连接 I2C在硬件上的接法如下所示,主控芯片引出两条线SCL,SDA线,在一条I2C总线上可以接很多I2C设备,我们还会放一个上拉电阻(放一个上拉电阻的原因以后我们再说)。 2....传输数据类比 怎么通过I2C传输数据,我们需要把数据从主设备发送到从设备上去,也需要把数据从从设备传送到主设备上去,数据涉及到双向传输。...下图:白色背景表示"主→从",灰色背景表示"从→主" 3.3 I2C信号 I2C协议中数据传输的单位是字节,也就是8位。但是要用到9个时钟:前面8个时钟用来传输8数据,第9个时钟用来传输回应信号。

2.8K20

Linux I2C驱动入门,建议收藏!

Linux内核将 I2C 驱动分为两部分: I2C 总线驱动, I2C总线驱动就是SOC的 I2C控制器驱动,也叫做 I2C适配器驱动。...I2C驱动 i2c_driver 类似 platform_driver,是我们编写 I2C 设备驱动重点要处理的内容, i2c_driver 结构体定义在 include/linux/i2c.h 文件中...I2C设备 I2C设备结构体i2c_client 结构体定义在 include/linux/i2c.h 文件中,内容如下: struct i2c_client { unsigned short...Linux 内核将 SOC 的 I2C 适配器(控制器)抽象成 i2c_adapter, i2c_adapter 结构体定义在 include/linux/i2c.h 文件中,结构体内容如下: /*...Linux I2C总线的运行机制: 注册I2C驱动 将I2C驱动添加到I2C总线的驱动链表中 遍历I2C总线上的设备链表,根据i2c_device_match函数进行匹配,如果匹配调用i2c_device_probe

2.9K20

Linux系统驱动之I2C视频介绍

资料下载 coding无法使用浏览器打开,必须用git工具下载: git clone https://e.coding.net/weidongshan/linux/doc_and_source_for_drivers.git...I2C硬件框架 在一个芯片(SoC)内部,有一个或多个I2C控制器 在一个I2C控制器上,可以连接一个或多个I2C设备 I2C总线只需要2条线:时钟线SCL、数据线SDA 在I2C总线的SCL、SDA...I2C控制器驱动 它根据I2C协议发出各类信号:I2C设备地址、I2C存储地址、数据 它根据I2C协议判断 3....我们讲什么 3.1 对于Linux 从上到下: 先讲I2C协议 APP可以通过两类驱动程序访问设备 I2C设备自己的驱动程序 内核自带的i2c-dev.c驱动程序,它是i2c控制器驱动程序暴露给用户空间的驱动程序...: 先讲I2C协议 APP I2C Device Driver I2C Controller Driver(也被称为adapter)

2.3K40

2.移植3.4内核-支持烧写yaffs2,裁剪内核并制作补丁

因为mtd的kernel分区只有2M大,而实际内核有2.37MB,所以需要裁剪到小于2M(或者修改mtd分区值) 5.1首先裁剪内核里无关的CPU/单板文件 1)通过vi .config,然后搜索2440...如上图所示,CPU下只选择2440,单板文件下只选择SMDK2440以及MINI2440相关 5.2 裁剪无关的文件系统ext2、ext3、ext4 重新make menuconfig,进入File systems...legacy /dev/psaux device //PS2鼠标鼠标指向的鼠标设备文件 [ ] Mice ---> //其它各种鼠标驱动,包括PS2鼠标、I2C...mv linux-3.4.2 linux-3.4.2_new //更改文件名 tar -xjf linux-3.4.2.tar.bz2 //解压需要比较的源文件 diff...-urN linux-3.4.2 linux-3.4.2_new > linux-3.4.2_new.patch //生成补丁文件linux-3.4.2_new.patch 未完待续,下章来移植以前

1.3K30

Linux I2C 驱动入门,建议收藏!!!

第一时间看干货文章 1 Linux内核将 I2C 驱动分为两部分: I2C 总线驱动, I2C总线驱动就是SOC的 I2C控制器驱动,也叫做 I2C适配器驱动。...I2C驱动 i2c_driver 类似 platform_driver,是我们编写 I2C 设备驱动重点要处理的内容, i2c_driver 结构体定义在 include/linux/i2c.h 文件中...I2C设备 I2C设备结构体i2c_client 结构体定义在 include/linux/i2c.h 文件中,内容如下: struct i2c_client { unsigned short...Linux 内核将 SOC 的 I2C 适配器(控制器)抽象成 i2c_adapter, i2c_adapter 结构体定义在 include/linux/i2c.h 文件中,结构体内容如下: /*...Linux I2C总线的运行机制: 注册I2C驱动 将I2C驱动添加到I2C总线的驱动链表中 遍历I2C总线上的设备链表,根据i2c_device_match函数进行匹配,如果匹配调用i2c_device_probe

2.6K20

LinuxI2C驱动框架分析

I2C总线、USB总线、PCI总线等等。以I2C总线为例,在同一组I2C总线上连接着不同的I2C设备。 设备 设备代表真实的、具体的物理器件,在软件上用器件的独特的参数属性来代表该器件。...Linux总线设备框架的工作原理 如果想要弄清楚I2C驱动框架,必须深刻的理解Linux的总线设备框架。之所以会形成这样的框架,很重要的原因是为了代码的复用性。...为了提高驱动的可移植性,Linux抽象出一套管理资源的函数。设备是存在的硬件,在设备里包含自己的属性,也包含需要用到的资源。...3.LinuxI2C驱动程序的体系结构 ---- 对于Linux下的I2C驱动,其体系结构的组成主要分为三个部分 (1)I2C核心:I2C核心提供了I2C总线驱动和设备驱动的注册,注销方法,I2C通信方法...(3)I2C设备驱动:I2C设备驱动(也称为客户驱动)是对I2C硬件体系结构中设备端的实现,设备一般挂接在受CPU控制的I2C适配器上,通过I2C适配器与CPU交换数据。 ?

4.6K11

S3C2440① | JZ2440开发板上手

2019新年伊始,为了系统的学习嵌入式系统的开发,入手了一块韦东山的JZ2440,入坑之旅开始~ 1. 开发板 开发板如名字JZ一样,精致,话不多说,上高清大图: ? ? 开发板资源如下: ? ?...JZ2440开发板供电采用5V火牛接口供电: ? 3.如何查看串口调试信息? 3.1.串口硬件连接及驱动安装 ?...在Linux系统下可以使用minicom或putty查看,参考我的另一篇博客: 【嵌入式LinuxLinux下的串口助手 —— minicom或putty (https://blog.csdn.net...JZ2440开发板烧写程序使用oflash/openJATG。 4.1. oflash烧写器硬件连接 ?...如何运行程序 烧写完bin文件后,需要运行程序,JZ2440有两种启动方式: 从Nor启动 Nand Flash启动 选择开关如图所示: ?

1.7K41

第001课 不要再用老方法学习单片机和ARM

所以,从教程的丰富程度来看,S3C2440为首选开发板; 我们后面会考虑使用TI的芯片重新录制一套视频,但需要2-3年的功夫,所以,现在还是使用S3C2440吧。...我们首先来看看一个芯片是怎么组成的,里面有CPU、外设串口、I2C、SPI、LCD等。 ? 我们写程序的时候,是去操作这些模块的寄存器,访问这些模块,并不是去操作CPU。...这个软件框架对于所有的芯片都是一样的,因为都是用Linux内核。 而这个硬件操作,你在2440上掌握了串口操作,I2C操作、SPI操作,掌握了这些硬件的语言,你换一种芯片,是完全类似的。 ?...我假设你选择了2440开发板,那么怎么使用2440开发板来学习单片机的开发呢?又使用什么开发工具呢?...使用S3C2440开发板,在Linux环境(Ubuntu)下使用arm-Linux-gcc工具来编译程序。

1.5K10

S3C2440② | arm-linux-gcc交叉编译工具链

1.为什么需要交叉编译工具 宿主机运行的是标准Linux操作系统,编译出的程序却需要在目标处理器(S3C2440@ARM920T)上跑,这就叫交叉编译,编译器叫做交叉编译器。...之前我们已经使用过gcc编译Linux本地主机的程序(Linux C语言编程(上篇) | gcc的使用),而我们现在需要的这个编译器的目标系统是ARM,不运行操作系统,仅运行裸机程序,需要在Linux主机上编译出可以运行在...S3C2440@ARM920T芯片上跑的程序,所以不能使用这个编译器,需要使用arm-linux-gcc交叉编译器。...2.arm-linux-gcc的安装 arm-linux-gcc是ARM官方基于Linux平台的arm编译器,其特点有: 开源免费 支持的ARM芯片多 功能强大,稳定 2.1.下载arm-linux-gcc...5.嵌入式开发中常用的两个arm-linux-工具 5.1.格式转换工具arm-linux-objcopy 在Linux主机上编译生成的可执行程序通常为.out或者.elf格式,但是我们烧写到ARM芯片中运行的是

3.9K40
领券