当前位置: 首页 > news >正文

信誉好的营销网站建设徐州市铜山新区建设局网站

信誉好的营销网站建设,徐州市铜山新区建设局网站,北京外贸网站建设,推荐的网站制作IMX6ULL平台I2C数据结构分析 文章目录 IMX6ULL平台I2C数据结构分析i2c_clienti2c_adapterimx_i2c_structimx_i2c_hwdataimx_i2c_dma 在 i.MX 平台的 I2C 驱动中#xff0c;存在多个相关的结构体#xff0c;它们之间的联系和在内核中的作用如下#xff1a; struct i2c_client…IMX6ULL平台I2C数据结构分析 文章目录 IMX6ULL平台I2C数据结构分析i2c_clienti2c_adapterimx_i2c_structimx_i2c_hwdataimx_i2c_dma 在 i.MX 平台的 I2C 驱动中存在多个相关的结构体它们之间的联系和在内核中的作用如下 struct i2c_client表示一个 I2C 从设备的结构体用于描述从设备的信息。它包含了从设备的地址、名称、适配器等信息并提供与从设备进行通信和交互的接口。 struct i2c_adapter表示一个 I2C 控制器适配器的结构体用于管理 I2C 控制器的相关信息。它提供了控制器的配置、数据传输和中断处理等功能。struct i2c_adapter 中包含了 struct i2c_client 的列表用于存储该适配器上已检测到的从设备。 struct imx_i2c_dma在 i.MX 平台上用于描述 I2C 控制器的 DMA 相关信息的结构体。它包含了 DMA 的通道号、描述符链表等信息用于实现 I2C 数据的 DMA 传输。 struct imx_i2c_hwdata在 i.MX 平台上用于描述 I2C 控制器的硬件相关信息的结构体。它包含了寄存器的物理地址、时钟频率、中断号等信息用于与硬件进行直接的寄存器访问。 struct imx_i2c_struct在 i.MX 平台上用于描述 I2C 控制器的主要数据结构。它包含了控制器的状态、配置、传输缓冲区等信息并提供了与 I2C 控制器进行交互的接口函数。struct imx_i2c_struct 中包含了 struct i2c_adapter、struct imx_i2c_dma 和 struct imx_i2c_hwdata用于与控制器的适配器、DMA 和硬件相关信息进行交互和管理。 这些结构体在 i.MX 平台的 I2C 驱动中协同工作通过它们之间的联系实现了对 I2C 控制器和从设备的管理、配置、数据传输和中断处理等功能。 i2c_client struct i2c_client {//描述一个从设备的信息不需要在代码中创建i2c adapter帮我们创建unsigned short flags; /* div., see below */unsigned short addr;//从设备地址来自于设备树中reg/* chip address - NOTE: 7bit *//* addresses are stored in the *//* _LOWER_ 7 bits */char name[I2C_NAME_SIZE];//用于i2c driver进行匹配来自于设备树中compatiblestruct i2c_adapter *adapter;//指向当前从设备所存在的i2c_adapter/* the adapter we sit on */struct device dev; //继承了父类/* the device structure */int irq; //设备申请的中断号/* irq issued by device */struct list_head detected;//设备申请的中断号 #if IS_ENABLED(CONFIG_I2C_SLAVE)i2c_slave_cb_t slave_cb; /* callback for slave mode */ #endif };struct i2c_client 是在 I2C 驱动中表示从设备的结构体用于描述一个从设备的信息。 以下是该结构体的各个字段的作用 flags标志位用于存储一些标志和属性信息。 addr从设备的地址通常是 7 位地址。 name从设备的名称用于与驱动程序进行匹配。 adapter指向当前从设备所存在的 I2C 适配器i2c_adapter的指针。 dev继承自 struct device 的设备结构体用于管理设备的相关信息。 irq设备申请的中断号。 detected已检测到的从设备列表。 slave_cb在从设备模式下使用的回调函数仅在启用 I2C 从设备支持时可用。 通过使用 struct i2c_client驱动程序可以获取从设备的地址、名称、适配器和中断等信息并与从设备进行通信和交互。 i2c_adapter struct i2c_adapter {//描述一个i2c控制器struct module *owner;//模块计数unsigned int class; //允许探测的驱动类型/* classes to allow probing for */const struct i2c_algorithm *algo;//算法,指向适配器的驱动程序/* the algorithm to access the bus */void *algo_data; //指向适配器的私有数据根据不同的情况使用方法不同/* data fields that are valid for all devices */struct rt_mutex bus_lock;//对总线进行操作时将获得总线锁int timeout; /* in jiffies */int retries;struct device dev; //继承父类也会加入到i2c bus/* the adapter device */int nr;//标号char name[48];//适配器名称struct completion dev_released; //用于同步的完成量struct mutex userspace_clients_lock;struct list_head userspace_clients; //连接总线上的设备的链表struct i2c_bus_recovery_info *bus_recovery_info;const struct i2c_adapter_quirks *quirks;}; 这个结构体描述了一个I2C控制器适配器。 结构体成员的含义如下 owner: 模块计数用于引用计数追踪使用该适配器的模块。 class: 允许探测的驱动类型表示该适配器支持的I2C驱动类型。 algo: 算法指向适配器的驱动程序所实现的I2C算法用于访问I2C总线。 algo_data: 指向适配器的私有数据根据不同的情况使用方法不同由驱动程序自行定义和使用。 bus_lock: 对总线进行操作时使用的互斥锁用于保护对总线的并发访问。 timeout: I2C传输的超时时间以jiffies为单位。 retries: I2C传输失败时的重试次数。 dev: 继承自struct device表示适配器的设备结构。 nr: 适配器的标号用于标识不同的适配器。 name: 适配器的名称描述该适配器的唯一标识符。 dev_released: 用于同步的完成量用于在设备释放时进行同步。 userspace_clients_lock: 用户空间客户端的互斥锁用于保护对用户空间客户端列表的并发访问。 userspace_clients: 连接到该总线上的设备的链表用于跟踪用户空间客户端。 bus_recovery_info: I2C总线恢复信息包含了用于总线恢复的相关数据。 quirks: I2C适配器的特性包含了适配器的特殊行为或限制。 该结构体用于描述一个I2C控制器适配器的属性和状态包括所支持的驱动类型、算法、设备名称等信息。它也包含了用于同步访问和管理总线的锁和链表。通过这些成员驱动程序可以正确地初始化、配置和操作I2C控制器适配器并提供给用户空间的设备访问接口。 imx_i2c_struct struct imx_i2c_struct {struct i2c_adapter adapter; // i2c_adapter结构体struct clk *clk; // 时钟void __iomem *base; // 基地址wait_queue_head_t queue; // 等待队列unsigned long i2csr; // I2CSR寄存器值unsigned int disable_delay; // 停止延迟int stopped; // 是否停止unsigned int ifdr; /* IMX_I2C_IFDR */ // I2C时钟分频器unsigned int cur_clk; // 当前时钟unsigned int bitrate; // 位速const struct imx_i2c_hwdata *hwdata; // I2C硬件数据struct imx_i2c_dma *dma; // DMA传输 };该结构体定义了i.MX系列芯片上I2C控制器的相关信息。 结构体成员的含义如下 adapter: i2c_adapter结构体表示I2C适配器包含了I2C总线的通用属性和操作函数。 clk: 时钟表示I2C控制器使用的时钟。 base: 基地址表示I2C控制器的寄存器基地址。 queue: 等待队列用于进程等待I2C传输完成的等待队列头。 i2csr: I2CSR寄存器值表示I2C控制和状态寄存器的值。 disable_delay: 停止延迟表示在停止I2C传输后的延迟时间。 stopped: 是否停止表示当前I2C传输是否停止。 ifdr: IMX_I2C_IFDR表示I2C接口分频器寄存器的值用于配置I2C时钟的分频。 cur_clk: 当前时钟表示当前使用的I2C时钟频率。 bitrate: 位速表示I2C总线的位速通信速率。 hwdata: I2C硬件数据指向一个结构体imx_i2c_hwdata包含了I2C控制器的硬件相关配置信息。 dma: DMA传输指向一个结构体imx_i2c_dma用于管理I2C控制器的DMA相关信息。 这个结构体的作用是在驱动程序中管理和控制I2C控制器的各种属性和状态。它包含了I2C适配器、时钟、寄存器地址、等待队列、传输状态、时钟分频器、位速等重要信息以便驱动程序能够正确地配置和操作I2C控制器并实现与外部设备的通信。此外结构体中的成员还包括了硬件相关配置和DMA传输信息以支持更高效和可靠的数据传输 imx_i2c_hwdata struct imx_i2c_hwdata {enum imx_i2c_type devtype; // 设备类型unsigned regshift; // 寄存器偏移量struct imx_i2c_clk_pair *clk_div; // 分频器值和寄存器值对应关系unsigned ndivs; // 分频器值和寄存器值对应关系的数量unsigned i2sr_clr_opcode; // 清除INT标志的操作码unsigned i2cr_ien_opcode; // 启用模块的操作码 };该结构体定义了i.MX系列芯片上I2C控制器的硬件相关数据。 结构体成员的含义如下 devtype: 设备类型表示I2C控制器的具体型号或类型。 regshift: 寄存器偏移量表示寄存器地址的偏移量用于计算具体寄存器的地址。 clk_div: 分频器值和寄存器值对应关系是一个指向imx_i2c_clk_pair结构体的指针数组。该数组存储了分频器的值和对应的寄存器值的映射关系用于设置I2C时钟频率。 ndivs: 分频器值和寄存器值对应关系的数量表示clk_div数组中的元素个数。 i2sr_clr_opcode: 清除INT标志的操作码表示执行清除I2C状态寄存器INT标志的操作码用于清除中断状态。 i2cr_ien_opcode: 启用模块的操作码表示执行启用I2C控制器模块的操作码用于启用I2C控制器。 这个结构体的作用是在驱动程序中存储和管理I2C控制器的硬件相关数据。通过使用这些数据驱动程序可以正确配置和操作I2C控制器并与外部设备进行通信。结构体中的成员提供了关于设备类型、寄存器地址、时钟频率等重要信息以便驱动程序能够正确地配置和控制I2C控制器的行为。 imx_i2c_dma struct imx_i2c_dma {struct dma_chan *chan_tx; // 传输通道发送struct dma_chan *chan_rx; // 传输通道接收struct dma_chan *chan_using; // 正在使用的传输通道struct completion cmd_complete; // 命令完成标志dma_addr_t dma_buf; // DMA缓冲区地址unsigned int dma_len; // DMA传输长度enum dma_transfer_direction dma_transfer_dir; // DMA传输方向enum dma_data_direction dma_data_dir; // DMA数据方向 };该结构体定义了i.MX系列芯片上I2C控制器使用的DMA相关信息。 结构体成员的含义如下 chan_tx : 传输通道发送表示用于I2C发送数据的DMA通道。 chan_rx : 传输通道接收表示用于I2C接收数据的DMA通道。 chan_using : 正在使用的传输通道表示当前正在使用的DMA通道。 cmd_complete : 命令完成标志是一个completion类型的变量用于标记DMA传输是否完成。 dma_buf : DMA缓冲区地址表示用于DMA传输的数据缓冲区的物理地址。 dma_len : DMA传输长度表示要传输的数据的长度。 dma_transfer_dir : DMA传输方向表示DMA数据传输的方向可以是从内存到外设DMA_MEM_TO_DEV或从外设到内存DMA_DEV_TO_MEM。 dma_data_dir : DMA数据方向表示DMA传输数据的方向可以是从内存读取数据DMA_FROM_DEVICE或向内存写入数据DMA_TO_DEVICE。 这个结构体的作用是在驱动程序中管理和控制I2C控制器与DMA传输的相关信息。DMA可以提高数据传输的效率和性能通过使用这些DMA相关的数据驱动程序可以配置和管理DMA传输通道并将数据从内存传输到外设或从外设传输到内存。结构体中的成员提供了DMA传输通道、缓冲区地址、传输长度、传输方向等重要信息以便驱动程序能够正确地进行DMA传输操作并实现高效的数据传输。
http://www.w-s-a.com/news/492849/

相关文章:

  • 建行网站关于我们山西seo和网络推广
  • 1m带宽做网站怎么样深圳网站建设制作开发公司
  • 网站建设 服务内容 费用郴州网站建设公司哪里有
  • 网站关键词重要性育才网站建设
  • 网络安全形势下怎么建设学校网站wordpress最新主题下载
  • 自己建设网站需要什么条件.gs域名做网站怎么样
  • 网上做公益的网站推广手机卡返佣平台
  • 网站是公司域名是个人可以南京建设银行官方网站
  • 做互联网网站的会抓百度网盟推广 网站
  • 商务网站开发设计结论微信报名小程序怎么制作
  • 网站建设销售简历wordpress七比2
  • 制作网站报价工程项目查询哪个网站
  • 深圳移动网站建设制作公司网站建设的认识
  • 网站建设脚本语言有哪些想开网店哪个平台好
  • 视频网站用什么做的好深圳的小程序开发公司
  • 南京网站定制开发商城网站免费模板
  • 青海学会网站建设公司照片组合拼图
  • 中国建设银行福清分行网站爱站网权重查询
  • 外贸通网站建设网站建设7个主要流程图
  • 元气森林网络营销方式医疗网站优化怎么做
  • 手机网站制作报价表做网站公司做网站公司
  • 湖州网站设计吉林网站建设哪家好
  • 做存储各种环境信息的网站使用tag的网站
  • 阿里云用ip做网站网站开发员属于
  • 外链网盘下载南宁seo推广优化
  • 网站的推广方案有哪些此网站可能有
  • wordpress更改链接后网站打不开一键生成个人网站
  • 网站建设后台有哪些东西前端开发培训一般多少钱
  • 高端建设网站公司网站开发 源码
  • 企业网站的劣势园林景观设计公司简介范文