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

网站后台如何取消验证码登陆企业网站的建设与管理论文

网站后台如何取消验证码登陆,企业网站的建设与管理论文,湖北黄石网站建设,自适应企业网站引言#xff1a;在嵌入式 Linux 系统中#xff0c;I2C#xff08;Inter-Integrated Circuit#xff09;是一种常用的通信协议#xff0c;用于连接低速设备#xff08;如传感器、显示器、存储器等#xff09;与主控制器。I2C 系统驱动程序模型通过层次化的设计#xff0… 引言在嵌入式 Linux 系统中I2CInter-Integrated Circuit是一种常用的通信协议用于连接低速设备如传感器、显示器、存储器等与主控制器。I2C 系统驱动程序模型通过层次化的设计使得 I2C 总线设备和驱动程序能够高效、灵活地进行通信和管理。 本分析旨在详细介绍 I2C 驱动程序框架重点分析其核心组成部分如 i2c_driver 和 i2c_client以及 I2C 总线、设备和驱动程序的交互关系。 目录 1. I2C驱动程序的层次 3. I2C总线-设备-驱动模型 2.1 i2c_driver 2.2 i2c_client 1. I2C驱动程序的层次 I2C Core就是I2C核心层它的作用 提供统一的访问函数比如i2c_transfer、i2c_smbus_xfer等 实现I2C总线-设备-驱动模型管理I2C设备(i2c_client)、I2C设备驱动(i2c_driver)、I2C控制器(i2c_adapter) 上述内容也是我们之前讲过的想深度了解也可以回顾之前的文章学习。 2. I2C总线-设备-驱动模型 2.1 i2c_driver i2c_driver表明能支持哪些设备 使用of_match_table来判断 设备树中某个I2C控制器节点下可以创建I2C设备的节点 如果I2C设备节点的compatible属性跟of_match_table的某项兼容则匹配成功 i2c_client.name跟某个of_match_table[i].compatible值相同则匹配成功 使用id_table来判断 i2c_client.name跟某个id_table[i].name值相同则匹配成功 i2c_driver跟i2c_client匹配成功后就调用i2c_driver.probe函数。 可以观察上述的代码内容也就是通过match来实现配对的。 上述我们任意拿一个IIC设备当例子我们也可以看出之前分析的匹配结构。 2.2 i2c_client 其次就是这个结构体是非常重要的如下所示 之前位于驱动屏的IIC驱动一文也讲过重点是这个设备树会自动解析成I2C设备 i2c1 {status okay;ts5d {compatible goodix,gt9xx;reg 0x5d;tp-size 89;max-x 1280;max-y 800;touch-gpio gpio1 RK_PA0 IRQ_TYPE_LEVEL_LOW;//复位引脚reset-gpio gpio1 RK_PA1 GPIO_ACTIVE_LOW;}; }; 上述代码就是在 Linux 内核中I2C_client 是用来表示一个通过 I2C 总线连接的设备的结构体。设备树描述了硬件设备的信息而 I2C_client 是内核中用于管理这些设备的关键数据结构。当设备树加载时内核会解析其中的硬件描述并与相应的驱动程序进行匹配自动生成并管理 I2C_client 结构体。 详细解释 设备树与 I2C_client在你的设备树片段中ts5d 节点描述了一个 I2C 设备并且设置了设备的 I2C 地址reg 0x5d。当 Linux 内核启动时它会读取设备树并识别出这个 I2C 设备ts5d。内核会根据这个设备树节点生成一个 I2C_client 结构体。 I2C_driver 和匹配内核通过设备树中的 compatible 字段在这个例子中是 goodix,gt9xx来选择相应的驱动程序。在这种情况下内核会找到与 goodix,gt9xx 匹配的 I2C 驱动通常是 goodix_gt9xx 驱动然后由内核调用该驱动的 probe() 函数进行设备初始化。 设备树与 I2C_client 关联I2C_driver 中的 probe() 函数会接收到一个 I2C_client 参数这个参数就是内核在启动时为该设备ts5d生成的 I2C_client 结构体。在 probe() 函数中你可以获取设备的详细信息并使用该结构体进行设备的进一步操作。 I2C_client 的作用I2C_client 结构体包含了与 I2C 设备相关的信息如设备的 I2C 地址、设备的父设备I2C 控制器、设备的驱动程序等。通过这个结构体驱动可以与硬件进行交互。 过程简述 内核启动时解析设备树发现 ts5d 节点并识别出该设备是通过 I2C 总线连接的设备。内核根据 compatible goodix,gt9xx 字段匹配到相应的驱动程序例如 goodix_gt9xx。驱动的 probe() 函数被调用并且设备信息被封装到 I2C_client 结构体中。驱动通过 I2C_client 与硬件设备进行通信并进行初始化操作。 i2c1 是 I2C 总线的标识符 设备树中定义的 i2c1 是一个对 I2C 总线的引用它代表着 I2C 控制器硬件设备。通常在设备树中i2c1 是指特定的 I2C 总线而 i2c1 是用来告诉内核这个设备连接到哪一个 I2C 总线。它是 I2C 设备连接的父节点。通常i2c1 这样的标识符指向一个 I2C 控制器的节点这个控制器的硬件资源会在设备树中被描述出来例如I2C 控制器的基地址、时钟等配置。 ts5d 节点描述了一个 I2C 设备 在你提供的设备树片段中ts5d 是一个 I2C 设备的子节点。它的 5d 表示该设备的 I2C 地址为 0x5d即通过 reg 0x5d 字段指定。这个节点描述了一个具体的 I2C 设备它与 i2c1 连接ts5d 代表的设备将会通过 I2C 总线进行通信。 compatible 字段compatible goodix,gt9xx 字段指定了该设备是 goodix,gt9xx 类型的触摸屏设备。内核会使用这个 compatible 字段来匹配驱动程序。例如在内核中可能已经有一个与 goodix,gt9xx 兼容的驱动程序。 reg 字段reg 0x5d 指定了 I2C 地址这告诉内核这个设备应该使用地址 0x5d 来进行通信。 自动注册为 I2C_client 内核根据设备树的内容和驱动程序之间的匹配机制自动注册设备并为其创建 I2C_client 结构体。这个过程是通过 I2C_driver 实现的具体流程如下 I2C 总线设备的驱动程序匹配内核在启动时会通过 compatible 字段查找与设备树节点匹配的驱动程序。例如如果你在内核中定义了一个 I2C_driver它的 of_match_table 中包含 goodix,gt9xx那么这个驱动就会被选中与设备树中的 ts5d 设备节点匹配。 设备创建 I2C_client在设备树中当节点 ts5d 被解析时内核会自动为该设备创建一个 I2C_client 结构体。这个结构体包含设备的 I2C 地址0x5d和与其相关的其他信息。 驱动 probe 函数调用内核通过 I2C_driver 的 probe() 函数来初始化设备。在 probe() 函数中内核将 I2C_client 结构体传递给驱动程序驱动程序可以使用这个结构体进行设备的初始化和数据交互。 通过I2C bus number来创建 int i2c_register_board_info(int busnum, struct i2c_board_info const *info, unsigned len); 通过设备树来创建 i2c1: i2c400a0000 {/* ... master properties skipped ... */clock-frequency 100000;flash50 {compatible atmel,24c256;reg 0x50;};pca9532: gpio60 {compatible nxp,pca9532;gpio-controller;#gpio-cells 2;reg 0x60;};}; 方法2 有时候无法知道该设备挂载哪个I2C bus下无法知道它对应的I2C bus number。 但是可以通过其他方法知道对应的i2c_adapter结构体。 可以使用下面两个函数来创建i2c_client i2c_new_device static struct i2c_board_info sfe4001_hwmon_info {I2C_BOARD_INFO(max6647, 0x4e),};int sfe4001_init(struct efx_nic *efx){(...)efx-board_info.hwmon_client i2c_new_device(efx-i2c_adap, sfe4001_hwmon_info);(...)} i2c_new_probed_device static const unsigned short normal_i2c[] { 0x2c, 0x2d, I2C_CLIENT_END };static int usb_hcd_nxp_probe(struct platform_device *pdev){(...)struct i2c_adapter *i2c_adap;struct i2c_board_info i2c_info;(...)i2c_adap i2c_get_adapter(2);memset(i2c_info, 0, sizeof(struct i2c_board_info));strscpy(i2c_info.type, isp1301_nxp, sizeof(i2c_info.type));isp1301_i2c_client i2c_new_probed_device(i2c_adap, i2c_info,normal_i2c, NULL);i2c_put_adapter(i2c_adap);(...)} 差别 i2c_new_device会创建i2c_client即使该设备并不存在 i2c_new_probed_device 它成功的话会创建i2c_client并且表示这个设备肯定存在 I2C设备的地址可能发生变化比如AT24C02的引脚A2A1A0电平不一样时设备地址就不一样 可以罗列出可能的地址 i2c_new_probed_device使用这些地址判断设备是否存在 方法3(不推荐)由i2c_driver.detect函数来判断是否有对应的I2C设备并生成i2c_client 方法4通过用户空间(user-space)生成 调试时、或者不方便通过代码明确地生成i2c_client时可以通过用户空间来生成。 // 创建一个i2c_client, .name eeprom, .addr0x50, .adapter是i2c-3# echo eeprom 0x50 /sys/bus/i2c/devices/i2c-3/new_device// 删除一个i2c_client# echo 0x50 /sys/bus/i2c/devices/i2c-3/delete_device
http://www.hkea.cn/news/14330154/

相关文章:

  • 大连中山网站建设设计广告图片
  • 深圳营销型网页设计公司西安网站seo报价
  • 大型网站建设需要化工企业商城网站建设公司
  • 平顶山有做网站的公司wordpress同步到新浪微博
  • 公司网站建设需要显示什么软件深圳企业网站建设制作
  • 做直播网站宽带凡客系统
  • 蝙蝠做等级的网站做网站都要会些什么
  • 内蒙古网站建设信息云服务器永久免费
  • 东圃手机网站建设电话mysql的网站开发
  • 风云办公ppt模板网站美工招聘信息
  • asp.net 获取网站的绝对路径软件开发咨询服务
  • 公司平台网站建设电脑怎样做幻灯片的网站
  • 游戏网页制作模板最新网站排名优化方法
  • 动漫做暧昧视频网站安徽网站推广优化
  • 百度信息流商城网站优化方案
  • 做代练去什么网站安全站点怎么建网页
  • 杭州手机网站制作苏州网页服务开发与网站建设
  • 怎么做自己的简历网站wordpress更改域名 后台
  • 网站搭建后台.mom域名可以做网站吗
  • jsp mysql 网站开发房地产门户网站
  • 网站里的图片是怎么做的做汉字网站的外国人
  • 昆明网站建设排名网站建设经营范围怎么写
  • 网页设计与网站建设有区别吗物联网应用技术就业前景
  • 上海网站开发与自己做网站赚钱吗
  • 中国交通建设集团英语网站做网站挂广告赚钱犯法吗
  • 网站推广seo软件成都彩票网站开发
  • 网页二级网站怎么做山西运城网站建设
  • 电商网站开发需求文档建设部网站已经公布黑名单
  • 免费的网站在哪里下载权威的赣州网站建设
  • 什么软件能创建网站wordpress更新关闭