我们首先利用i2c-gpio.c和i2c-algo-bit.c做好总线驱动。在i2c-gpio.c中,module_initi2c_gpio_initplatform_driver_probe(&i2c_gpio_driver,i2c_gpio_probe);将其注册为platform虚拟总线的驱动。
创新互联成立于2013年,我们提供高端网站建设公司、成都网站制作、成都网站设计公司、网站定制、网络营销推广、微信平台小程序开发、微信公众号开发、seo优化排名服务,提供专业营销思路、内容策划、视觉设计、程序开发来完成项目落地,为餐厅设计企业提供源源不断的流量和订单咨询。
i2c_register_board_info:根据总线编号、设备名字(“at24c08”)、设备地址(0x50)注册一个字符驱动。这种方法最简单、最粗暴,最贴近平时在开片机上开发i2c器件的。
I2c总线驱动填充I2c_adapter和I2c_algorithm结构体,I2c设备驱动填充I2c_driver和i2c_client结构体并实现其本身所对应设备类型的驱动。
i2c-core.c文件实现了I2Ccore框架,是Linux内核用来维护和管理的I2C的核心部分,其中维护了两个静态的List,分别记录系统中的I2Cdriver结构和I2Cadapter结构。
先创建一个spi_board_info结构描述spi设备信息,调用spi_register_board_info将这个结构添加到board_list中。
i2c_register_board_info:根据总线编号、设备名字(“at24c08”)、设备地址(0x50)注册一个字符驱动。这种方法最简单、最粗暴,最贴近平时在开片机上开发i2c器件的。
I2C是通过每个设备有自己不同的地址,通过地址来进行软件切换。对于board_info使用的是spidev,drivers/spi/spidev.c文件,该文件的内容是注册一个spidev驱动。该驱动是一个字符设备驱动。
1、to_i2c_client(dev) 这个函数返回值是一个指针,这个指针是个struct i2c_client 类型的指针,这个指针指向块内存,内存中存放着 to_i2c_client(dev)这个函数产生的数据。
2、方法一:修改/proc下内核参数文件内容 直接修改内核参数ip_forward对应在/proc下的文件/proc/sys/net/ipv4/ip_forward。
3、内核工具KGDB调试环境需要为Linux 内核加上 kgdb补丁,补丁实现GDB远程调试所需要的功能,包括命令处理、陷阱处理及串口通信3个主要的部分。KGDB补丁的主要作用是在Linux 内核中添加了一个调试Stub。
4、我们首先利用i2c-gpio.c和i2c-algo-bit.c做好总线驱动。在i2c-gpio.c中,module_initi2c_gpio_initplatform_driver_probe(&i2c_gpio_driver,i2c_gpio_probe);将其注册为platform虚拟总线的驱动。
5、将最高的1G字节(从虚拟地址0xC0000000到0xFFFFFFFF),供内核使用,称为内核空间.而将较低的3G字节(从虚拟地址 0x00000000到0xBFFFFFFF),供各个进程使用,称为用户空间)。
6、#include linux/kernel.h void barrier(void) 这个函数通知编译器插入一个内存屏障,但对硬件没有影响。编译后的代码会把当前CPU寄存器中的所有修改过的数值保存到内存中,需要这些数据的时候再重新读出来。