st7735s驱动详解(st7735s驱动程序)

st7735s驱动详解(st7735s驱动程序)svg xmlns http www w3 org 2000 svg style display none svg

大家好,我是讯享网,很高兴认识大家。



 <svg xmlns="http://www.w3.org/2000/svg" style="display: none;"> <path stroke-linecap="round" d="M5,0 0,2.5 5,5z" id="raphael-marker-block" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></path> </svg> 

讯享网
  • 命令:/usr/sbin/hwinfo
  • 名称
    hwinfo - 探测系统中的硬件
  • 用法
    hwinfo [选项]
  • 描述
    hwinfo 用于探测系统中存在的硬件。它可以用来生成系统概览日志,以便后续用于支持。
  • 选项
    注意,不带任何选项运行 hwinfo 大致相当于 ‘hwinfo --all --log=-’。
    • - -<硬件项目>
      此选项可以多次给出。用于探测特定的硬件项目。可用的硬件项目包括:
      讯享网
    • - -short
      仅显示摘要。将此选项与硬件探测选项结合使用。
    • - -listmd
      通常 hwinfo 不报告 RAID 设备。添加此选项以查看它们。
    • - -only DEVNAME
      此选项可以多次给出。如果添加此选项,则仅显示设备列表中与 DEVNAME 匹配的条目。请注意,您还必须指定 --<硬件项目> 以触发任何设备探测。
    • - -save-config SPEC
      将特定设备的配置存储在 /var/lib/hardware 下。SPEC 可以是设备名称、UDI 或 ‘all’。此选项必须与硬件探测选项一起给出。
    • - -show-config UDI
      显示特定设备的保存配置数据。
    • - -map
      如果磁盘名称已更改(例如,在内核更新之后),则打印磁盘名称映射列表。请注意,您必须在此之前已经使用了 --save-config,此功能才能工作。
    • - -debug N
      将调试级别设置为 N。调试信息仅显示在日志文件中。如果指定了日志文件,则调试级别将隐式设置为合理值(N 是各个标志的位掩码)。
    • - -verbose
      增加详细程度。仅与 --map 结合使用。
    • - -log FILE
      将日志信息写入 FILE。不要忘记还要指定 --<硬件项目> 以触发任何设备探测。
    • - -dump-db N
      转储硬件数据库。N 为 0 表示转储 /var/lib/hardware 中的外部数据库,1 表示转储内部数据库。
    • - -version
      打印 libhd 版本。
    • - -help
      打印用法。
  • 环境
    hwprobe 可以包含一个由 ‘+’ 或 ‘-’ 开头的探测标志的逗号分隔列表,以打开或关闭它们。要获取支持的标志的完整列表,请运行 ‘hwinfo -all’(注意:不是 ‘–all’)并查看输出的顶部。

hwinfo 还会查看 /proc/cmdline 以获取 hwprobe 选项。

  • 示例
    • 仅显示概览
      hwinfo --short --block
    • 显示特定磁盘
      hwinfo --disk --only /dev/sdb
    • 保存磁盘配置状态
      hwinfo --disk --save-config=all
    • 尝试 4 个图形卡端口以获取显示器数据(默认:3)
      hwprobe=bios.ddc.ports=4 hwinfo --monitor
    • 显示器检测运行视频 BIOS 以获取显示器数据;将完整的 BIOS 代码执行跟踪转储到日志
      hwprobe=bios.ddc.ports=1,x86emu=trace:dump:trace.only=0:dump.only=0 hwinfo --monitor --log=foo
    显示所有磁盘
    hwinfo --disk

1.1驱动类型

  • 内核模块:
    • 扩展Linux内核的功能
    • 允许内核提供对硬件的访问
    • 可以在运行时加载或卸载
  • 用户空间驱动程序:
    • 在用户空间中工作

  为了理解Linux如何处理硬件,首先必须了解“设备”和“接口”这两个术语之间的区别。用户、管理员甚至软件开发者经常会混淆这两个术语。本文采用以下定义:
● 设备:设备是指物理硬件,如PCI网卡、AGP图形适配器或USB打印机。
● 接口:接口是与设备相关联的软件组件。要使用物理硬件,需要通过软件接口进行访问。一个设备可以有多个接口。


讯享网

  接口通常由驱动程序创建。在Linux中,驱动程序通常是可以加载到Linux内核中的软件模块。驱动程序可以被视为设备和其接口之间的“粘合剂”。设备驱动程序访问和使用设备。

  设备驱动程序有两种基本类型:
● 内核模块:可以通过添加内核模块来扩展Linux内核的功能。它们允许内核在运行时提供对硬件的访问,并且可以在运行时加载或卸载。
● 用户空间驱动程序:有些硬件需要额外的在用户空间中工作的驱动程序。这类硬件的例子包括打印机或扫描仪。
在这里插入图片描述

1.2内核设备驱动

  • 内核模块:
    /lib/modules/&lt;kernel-version&gt;/*/
  • 硬件驱动内核模块:
    /lib/modules/&lt;kernel-version&gt;/kernel/drivers/

   安装在/boot/目录中的内核支持广泛的硬件。除非你想测试实验性功能或驱动程序,否则通常不需要编译自定义内核。

  Linux内核的驱动程序和功能既可以编译进内核中,也可以作为内核模块加载。这些模块可以在系统运行期间稍后加载,而无需重新启动计算机。

  这对于系统启动时不必需的内核模块尤其如此。通过在系统启动后将其作为组件加载,可以保持内核相对较小。

  内核模块作为文件存储在/lib/modules/&lt;内核版本&gt;/目录的子目录中。

  硬件模块存储在/lib/modules/&lt;内核版本&gt;/kernel/drivers/目录中。

  模块通常仅与它们为之构建的内核版本一起工作,因此每安装一次内核更新,都会创建一个新目录。

  模块存储在具有.ko(内核对象)文件扩展名的多个子目录中。使用modprobe加载模块时,可以省略扩展名,而仅使用模块名称。

1.3设备驱动如何加载

  • initrd
  • systemd
  • udev
  • X Server
  • Manually

  用于自动加载内核模块的几种方法,特别是针对SUSE Linux Enterprise Server中设备驱动程序的加载方式:

● initrd:initrd是一个特殊的文件,由引导加载程序加载到内存中。从initrd中加载对访问根分区至关重要的重要设备驱动程序,例如SCSI主机控制器和文件系统驱动程序。

● systemd:某些systemd服务文件用于加载和设置硬件设备。例如,ALSA声音脚本用于加载声卡驱动程序。

● udev:用于加载内核模块。

● X服务器:虽然显卡驱动程序不是内核模块,但X服务器会加载特殊驱动程序以启用硬件3D支持。

● 手动加载:您可以使用modprobe命令从命令行或在脚本中手动加载内核模块。

1.4维护内核模块

  要从命令行管理模块,您可以使用以下命令:

  • lsmod:列出内核中当前已加载的模块,例如:
    在这里插入图片描述
    列表中包含模块名称、模块大小、模块使用次数以及哪些其他模块正在使用它的信息。
  • insmod &lt;模块&gt;:将指定的模块加载到内核中。模块必须位于/lib/modules/&lt;版本号&gt;/目录中。
    但是,我们建议您使用modprobe而不是insmod来加载模块。
  • rmmod &lt;模块&gt;:从内核中移除指定的模块。只有当没有进程正在访问与该模块连接的硬件或相应服务时,才能移除模块。但是,我们建议您使用modprobe -r而不是rmmod来移除模块。
  • modprobe &lt;模块&gt;:将指定的模块加载到内核中或将其移除(如果使用-r选项)。使用modprobe时,会考虑其他模块的依赖关系。modprobe还会读取/etc/modprobe.conf文件,并使用您可能已添加的任何自定义配置设置。
      如果/lib/modules/version/modules.dep文件(由depmod命令创建)存在,则可以使用此命令。该文件用于确定模块的依赖关系。
      modprobe的附加配置文件位于/etc/modprobe.d/目录中。modprobe会自动评估此目录中的所有文件。
      自内核版本2.2.x以来,kmod软件包确保使用modprobe自动加载运行操作中所需的模块,例如在访问CD-ROM驱动器时。
  • depmod:创建/lib/modules/version/modules.dep文件。该文件包含各个模块的依赖关系。当使用modprobe加载模块时,modules.dep文件确保加载它所依赖的所有模块。
      在SUSE Linux Enterprise Server上,depmod还会创建modules.aliases文件,modprobe使用该文件来确定需要为哪个设备加载哪个驱动程序。
  • modinfo &lt;选项&gt; &lt;模块&gt;:显示有关指定模块的信息(如许可证、作者和描述)。例如:
    在这里插入图片描述
  • modprobe的配置
      modprobe的配置主要涉及对内核模块的加载、卸载以及参数设置等操作,这些操作可以通过modprobe命令及其配置文件来实现。以下是对modprobe配置的详细解释:
    • modprobe命令
      modprobe命令用于智能地添加或移除Linux内核中的模块。它会自动处理模块的依赖关系,并根据需要加载或卸载相关模块。modprobe命令的基本语法如下:
      modprobe [选项] 模块名 [模块参数…]
      其中,常用的选项包括:
      -r:移除指定的模块。
      -l:列出所有可用的模块,或使用通配符匹配特定条件的模块。
      -v:显示详细的信息,包括模块加载或卸载的过程。
      -C:指定配置文件的路径,以覆盖默认的配置文件。
    • 配置文件
      modprobe的配置文件主要包括etc/modprobe.d/目录下的文件。这些文件用于指定模块的加载选项、别名、黑名单等。
      /etc/modprobe.d/:这个目录包含了多个配置文件,modprobe在加载模块时,会依次读取这些文件,并根据其中的配置来加载模块。
    • 配置指令
      modprobe的配置文件中可以包含多种指令,这些指令用于指定模块的加载方式、参数等。以下是一些常用的配置指令:

      <ul><li>alias&#xff1a;为模块指定别名。这可以用于简化模块名称&#xff0c;或解决模块名称冲突的问题。</li><li>options&#xff1a;为模块指定参数。这些参数将在模块加载时传递给内核。</li><li>install 和 remove&#xff1a;这两个指令用于指定加载或卸载模块时执行的自定义命令。这可以用于执行一些额外的操作&#xff0c;如加载额外的依赖模块、设置设备参数等。</li><li>blacklist&#xff1a;将指定的模块列入黑名单&#xff0c;防止其被modprobe加载。这通常用于禁用与当前系统不兼容或存在问题的模块。</li></ul> </li><li> <p>示例<br /> 以下是一些modprobe配置的示例&#xff1a;</p> <ul><li> <p>为模块指定别名&#xff1a;<br /> alias my-mod really_long_modulename<br /> 这表示可以使用modprobe my-mod来加载名为really_long_modulename的模块。</p> </li><li> <p>为模块指定参数&#xff1a;<br /> options module_name param1&#61;value1 param2&#61;value2<br /> 这表示在加载名为module_name的模块时&#xff0c;将param1和param2参数分别设置为value1和value2。</p> </li><li> <p>将模块列入黑名单&#xff1a;<br /> blacklist nouveau<br /> 这表示将名为nouveau的模块列入黑名单&#xff0c;防止其被modprobe加载。</p> </li></ul> </li><li> <p>注意事项<br /> 在修改modprobe的配置文件之前&#xff0c;建议备份原始文件&#xff0c;以防止配置错误导致系统无法启动或硬件无法正常工作。<br /> modprobe的配置文件通常不需要手动编辑&#xff0c;因为大多数现代Linux发行版都使用systemd或其他服务管理器来管理内核模块的加载。但是&#xff0c;在某些情况下&#xff0c;手动编辑这些文件可能是必要的&#xff0c;例如禁用不兼容的模块或调整模块参数等。<br /> 总之&#xff0c;modprobe的配置涉及多个方面&#xff0c;包括命令的使用、配置文件的编辑以及配置指令的设置等。通过合理配置modprobe&#xff0c;可以确保内核模块的正确加载和卸载&#xff0c;从而提高系统的稳定性和性能。</p> </li></ul> </li></ul> 
小讯
上一篇 2025-05-14 09:42
下一篇 2025-05-06 14:59

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/152495.html