2024年2月22日 - mis

root@yy3568-alip:/sys# ls /sys/class/gpio/gpio* -F
/sys/class/gpio/gpio114@      /sys/class/gpio/gpiochip511@
/sys/class/gpio/gpiochip0@    /sys/class/gpio/gpiochip64@
/sys/class/gpio/gpiochip128@  /sys/class/gpio/gpiochip96@
/sys/class/gpio/gpiochip32@

@符号表示该文件是一个符号链接(symbolic link)


tee命令用于将数据从标准输入读取并将其内容写入一个或多个文件。


"FPC" 是 Flexible Printed Circuit(柔性印刷电路板)的缩写。这是一种由薄而柔韧的绝缘材料制成的印刷电路板,其中包含了导电线路和元件。在电子设备中,FPC 通常用于需要高密度互连、重量轻、厚度薄和灵活性高的场合。

在硬盘领域,有时会出现需要将 FPC 接口转换为 SATA 接口的情况,尤其是在一些小型设备或定制化设计中,硬盘可能使用了 FPC 作为数据和电源接口。这时,FPC 转 SATA 转接板就是一个适配器,一端是用于连接硬盘的 FPC 接口,另一端则是标准的 SATA 数据和电源接口,从而使得硬盘可以连接到具备 SATA 接口的主板或其他设备上,实现数据传输和供电。

在Wi-Fi术语中,AP(Access Point)指的是无线接入点,它是一种设备,允许无线设备(如笔记本电脑、智能手机和平板电脑)连接到有线网络。AP创建了一个无线局域网(WLAN),允许无线客户端设备通过无线电波与其通信,进而访问互联网或共享本地网络资源。

`nmcli dev wifi` 是Linux系统中用于管理和操作Wi-Fi网络的命令行工具 NetworkManager 的命令,用来扫描附近的无线接入点(AP)。当你运行这个命令时,它会列出周围的Wi-Fi信号及其相关信息,如SSID(网络名称)、信号强度、加密方式等。

sudo i2ctransfer -f -y 5 w2@0x5d 0x80 0x47 r3 :

  • i2ctransfer:执行I²C总线上的数据传输操作。
  • -f:表示强制执行,即便I²C总线没有准备好也尝试进行操作。
  • -y:允许没有相应设备文件时依然尝试进行操作,通常用于调试尚未建立设备节点的情况。
  • 5:表示使用I²C总线编号为5的总线。
  • w2@0x5d:指定了I²C设备地址为0x5d,并且使用读/写模式(write-then-read,即先写后读)。w2意味着先写入两个字节数据,再读取数据。
  • 0x80 0x47:接下来的两个十六进制数是要写入到设备0x5d的两个字节数据。
  • r3:表示在写入数据后从设备读取3个字节的数据。

/data/share 100.100.100.0/24(rw,sync,root_squash,no_subtree_check) NFS(Network File System,网络文件系统)服务器的一个共享目录配置语句。

  • /data/share:这是NFS服务器上要共享出去的本地目录。

  • 100.100.100.0/24:这是允许访问此共享目录的客户端IP地址范围,表示的是从100.100.100.0到100.100.100.255的整个C类子网。

  • (rw,sync,root_squash,no_subtree_check):这些是NFS共享的选项:

    • rw:表示客户端对该共享目录具有读写权限。

    • sync:同步模式,数据在写入到NFS服务器的共享目录之前,会等待数据完全写入磁盘。这对于数据一致性要求较高的场景很重要,但可能会影响性能。

    • root_squash:当来自客户端的请求是来自root用户时,NFS服务器将该请求映射到匿名用户或nobody用户,从而限制了远程root用户的权限,提高了安全性。

    • no_subtree_check:禁用子树检查,提高NFS性能,但这也意味着如果客户端在共享目录下有其他子目录的挂载,NFS服务器不会检查这些子目录的权限。在某些安全策略严格的环境中,可能需要启用子树检查以增强安全性。

这个配置在NFS服务器的 /etc/exports 文件中,用于定义对外共享的目录及其权限设置。


systemctl 是在基于 systemd 的 Linux 发行版中用于管理系统服务、系统资源、启动目标以及系统运行状态的命令行工具。systemd 是现代 Linux 系统中的初始化系统及服务管理器,它替代了早期的 SysV init 和 Upstart 系统,旨在提高系统的启动速度、降低进程依赖性并简化服务管理。

systemctl 提供了一系列命令行选项和子命令,使得用户和系统管理员能够:

  1. 启动、停止、重启、重载、冻结和解冻系统服务或单一服务单元(.service 文件)。
  2. 查看系统和服务的状态信息。
  3. 更改运行级别或目标(systemd 的术语,对应传统 init 系统的运行级别)。
  4. 查看和管理定时器、挂载点、sockets 等不同类型的单元。
  5. 设置服务的启动模式(例如自动启动、手动启动或禁用)。
  6. 查看和管理 journal 日志。

举例来说,常见的 systemctl 命令有:

  • 启动服务:systemctl start nginx.service
  • 停止服务:systemctl stop nginx.service
  • 重启服务:systemctl restart nginx.service
  • 查看服务状态:systemctl status nginx.service
  • 设置服务开机启动:systemctl enable nginx.service
  • 查看系统运行级别或目标:systemctl get-defaultsystemctl list-units --type=target

systemctl 提供了一个统一且强大的接口,便于系统管理员进行日常维护和故障排查。


SMBus总线是一种二线制串行总线,主要用于系统管理通信。

SMBus,全称为System Management Bus,即系统管理总线,它是基于I²C总线规范设计的一种通信协议。SMBus主要用于在计算机主板上的各种设备之间进行低速的系统管理通信,如电池管理、温度监控、风扇控制等。其特点包括:

  1. 二线制接口:SMBus只需要两根线(数据线SDA和时钟线SCL)就可以实现设备之间的通信,这种简化的接口设计有助于减少电路板上的线路数量。
  2. 基于I²C协议:SMBus大部分基于I²C总线规范,因此在技术上有很多相似之处,它们甚至可以在相似的总线上互操作。
  3. 100kHz工作频率:SMBus的工作频率被限制在100kHz,这是为了确保兼容性和稳定性,同时满足智能电池等慢速设备的需求。
  4. 专为系统管理设计:与I²C相比,SMBus更专注于系统管理功能,如电源管理、传感器数据读取等,而不是通用的数据通信。

总的来说,SMBus总线是一种专门用于系统管理的通信协议,它在硬件设计和软件实现上都提供了便利,使得系统管理工作更加高效和稳定。


AT24C32是一款32Kbit(即4096位)的EEPROM芯片。EEPROM,全称为电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory),是一种非易失性存储技术

AT24C32属于串行EEPROM存储器芯片,通常用于存储系统配置、用户数据、校准参数等信息。这种类型的芯片通过I²C(Inter-Integrated Circuit)接口进行数据传输,支持3.3V和5V的供电电压,并且具有高达100万次的重复写能力,数据保存时间可长达100年。

  1. 存储容量:AT24C32具有32Kbit的存储容量,相当于4096个位或512个字节。
  2. I²C接口:它采用I²C接口与微控制器或其他电子设备通信,这是一种常见的串行通信协议,允许在设备之间进行简洁高效的数据传输。
  3. 供电范围:该芯片能够在3.3V或5V的供电环境下正常工作,这使得它能够适应不同的电源要求。
  4. 耐用性:AT24C32提供了高达100万次的擦写寿命,确保了长期的可靠性和稳定性。
  5. 数据保持:即使在断电的情况下,存储在EEPROM中的数据也能够被保留100年,这对于需要长期保存重要信息的应用来说是非常有用的特性。

gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu 是一个特定版本的 GCC(GNU Compiler Collection)编译器套件,由 Linaro 维护并针对 ARM 64 位架构(也称为 AArch64)进行了优化。这个工具链主要用于在 x86_64 架构的 Linux 系统上交叉编译目标为 AArch64 架构的程序。

  • gcc: 表示这是 GNU 编译器集合,包含 C、C++、Fortran 等语言的编译器。
  • linaro: 指的是 Linaro,这是一个致力于为 ARM 架构开发开源软件的非营利组织。
  • 6.3.1: 这是 GCC 的版本号,表示基于 GCC 6.3.1 版本进行优化和定制。
  • 2017.05: 发布日期,这套工具链于 2017 年 5 月发布。
  • x86_64: 表示该工具链运行于 x86_64 架构的计算机上。
  • aarch64: 表明此工具链的目标架构是 ARM 的 64 位架构(AArch64)。
  • linux-gnu: 表示该工具链生成的代码适用于类 GNU/Linux 系统。

export PATH=$PATH:${sdk目录路径}/prebuilts/gcc/linux-x86/aarch64/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin
export CROSS_COMPILE=aarch64-linux-gnu-
export ARCH=arm64

这三个命令都是在Linux环境中设置环境变量

  1. export PATH=$PATH:${sdk目录路径}/prebuilts/gcc/linux-x86/aarch64/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin
    这条命令将指定的SDK工具链目录下的bin路径添加到了系统的PATH环境变量中。这样,当你在终端中执行命令时,系统会在这些新添加的目录中寻找可执行文件。这里的${sdk目录路径}需要替换为实际的SDK安装目录路径。添加这个路径是为了能够直接调用其中的交叉编译工具,如aarch64-linux-gnu-gcc等。
  2. export CROSS_COMPILE=aarch64-linux-gnu-
    这条命令设置了CROSS_COMPILE环境变量,这是在进行交叉编译时非常重要的一个变量。其值通常用来前缀相关的编译器和链接器命令,例如,当你设置这个变量后,调用"gcc"实际上是调用"aarch64-linux-gnu-gcc"。这对于构建针对ARM64架构的程序非常有用。
  3. export ARCH=arm64
    这条命令设置了ARCH环境变量,它的值指示了目标架构。在这里,设置为arm64意味着你将构建针对ARM 64位架构的软件。许多构建系统和Makefile都会检查并使用这个环境变量来决定编译的目标平台和相关选项。

ALSA(Advanced Linux Sound Architecture,高级Linux声音架构)是Linux操作系统内核的一部分,它是一个用于处理声音和多媒体流的核心子系统,提供对各种音频硬件设备的底层驱动支持。ALSA替代了早期Linux内核中的Open Sound System (OSS),并在Linux 2.6内核及其后续版本中成为默认的声音子系统。

ALSA框架主要包括以下几个关键部分:

  1. 内核模块:包含了一系列音频硬件驱动程序,负责与硬件接口通信,管理音频数据传输和同步,并支持多种音频接口标准。

  2. alsa-lib:一套用户空间库,为应用程序提供API(应用程序编程接口),使得开发者可以轻松地编写利用音频硬件的应用程序,而不必直接与内核模块打交道。

  3. 控制接口:允许用户和应用程序调整音频硬件的各种参数,比如音量、采样率、通道模式等。

  4. 插件架构:ALSA支持一系列插件以增强功能,比如混音器(mixer)组件,能够实现多个音频流的混合和路由。

  5. PCM( Pulse Code Modulation)子系统:用于音频数据的捕获(录音)和回放(播放),支持不同格式和采样率的转换。

  6. MIDI支持:除了音频外,ALSA还提供了对MIDI设备的支持,允许计算机与音乐合成器、控制器和其他MIDI设备之间的交互。


RK平台所使用的MPP库全称为“Media Process Platform”,它是Rockchip(瑞芯微电子)公司为其芯片产品提供的一个媒体处理库。这个库主要用于硬件加速编解码,支持视频编码、解码以及可能的其他媒体处理任务,如视频图像的预处理或后处理。MPP库设计的目的在于简化开发者的工作,通过提供一组接口(如MPI接口),隐藏了硬件级别的复杂操作,使得开发者能够在用户空间方便高效地调用RK芯片的硬件编解码能力。

在RK平台上,通过集成MPP库,开发者能够快速地构建基于RK系列处理器的嵌入式设备上的媒体处理应用程序,如智能电视、安防摄像头、车载娱乐系统以及其他涉及音视频处理功能的设备。借助MPP库,可以充分利用硬件加速优势,提高编解码效率,降低CPU负载,优化系统性能。

你可能感兴趣的:(linux)