BeagleBoneBlack学习(3)——U-Boot中的I2C驱动分析
来源:互联网 发布:国际淘宝网 编辑:程序博客网 时间:2024/06/08 08:51
BeagleBoneBlack等TI开发板上都有一块eeprom芯片,u-boot根据eeprom芯片不同的内容对开发板进项配置,芯片属于I2C接口,下面对u-boot中的I2C驱动进行分析。
在u-boot-2016.03中,i2c的初始化是在get_dpll_ddr_params(board/ti/am335x/board.c)函数中。
enable_i2c0_pin_mux()函数用于引脚功能配置,i2c_init(CONFIG_SYS_OMAP24_I2C_SPEED, CONFIG_SYS_OMAP24_I2C_SLAVE)函数用于i2c的配置。
i2c_init位于/drivers/i2c/i2c_core.c中,属于弱函数定义,传入参数为i2c总线速度以及从机(AM3358)的地址。
i2c_init调用i2c_init_bus函数,i2c_get_bus_num函数用于获取当前i2c总线的编号,即为gd->cur_i2c_bus(默认是0,对应i2c0)
i2c用结构体i2c_adapter来描述:
宏I2C_ADAP为当前i2c总线的i2c_adapter结构体指针,展开后即为i2c_get_adapter(gd->cur_i2c_bus)。
U_BOOT_I2C_ADAP_COMPLETE宏用于将实际i2c驱动与结构体绑定,注意最后一个参数_hwadapnr就相当于当前i2c总线的编号,与gd->cur_i2c_bus对应,0就对应i2c0。
总结:
如果芯片有N组i2c总线,在对应驱动程序中利用U_BOOT_I2C_ADAP_COMPLETE宏注册N组i2c_adapter结构体,在进行i2c操作时,首先利用I2C_ADAP=i2c_get_adapter(gd->cur_i2c_bus)函数获取当前i2c总线的i2c_adapter结构体(adap指针),每组结构体都有不同的_hwadapnr参数,其与实际芯片寄存器地址对应。
- BeagleBoneBlack学习(3)——U-Boot中的I2C驱动分析
- BeagleBoneBlack学习(1)——启动流程与u-boot编译
- BeagleBoneBlack学习(1)——启动流程与u-boot编译
- U-Boot移植(二)——U-Boot编译过程分析(3)
- MTD中的nand驱动初步分析---面向u-boot
- MTD中的nand驱动初步分析---面向u-boot
- u-boot uart 驱动分析
- 学习驱动:移植u-boot
- linux驱动学习(八) i2c驱动架构(史上最全) davinc dm368 i2c驱动分析
- linux驱动学习(八) i2c驱动架构(史上最全) davinc dm368 i2c驱动分析
- linux驱动学习(八) i2c驱动架构(史上最全) davinc dm368 i2c驱动分析
- linux驱动学习(八) i2c驱动架构(史上最全) davinc dm368 i2c驱动分析
- linux驱动学习(八) i2c驱动架构(史上最全) davinc dm368 i2c驱动分析
- linux驱动学习(八) i2c驱动架构(史上最全) davinc dm368 i2c驱动分析
- linux驱动学习(八) i2c驱动架构(史上最全) davinc dm368 i2c驱动分析
- linux驱动学习(八) i2c驱动架构 i2c驱动分析
- I2C驱动情景分析——怎样控制I2C时序
- I2C驱动情景分析——怎样增加I2C设备
- eclipse自动补全失效解决办法
- hessian学习
- 用两个栈实现队列的操作
- python win32api.ExitWindows() 恶作剧好东西
- 开发人员必备的几款bug管理工具
- BeagleBoneBlack学习(3)——U-Boot中的I2C驱动分析
- 每天一个linux命令:ln 命令
- 数据库主键的设计和思考
- Android 图文混排spannableStringBuilder简单使用
- http请求报文介绍
- strcat
- Android 性能典范
- Java Web -- Servlet(5) 开发Servlet的三种方法、配置Servlet详解、Servlet的生命周期(2)
- linux下PHP错误警报开启与关闭