Linux驱动--触摸显示屏适配
触摸屏驱动本文档使用驱动为gt9xx,使用I2c通信。
设备树配置通讯地址为0x14,挂载在i2c5总线上。中断引脚和复位引脚为gpio3的PC0和PC1,根据硬件方案修改。
12345678910111213141516&i2c5 { status = "okay"; /*********************** GT 方案**********************/ gt9xx: gt9xx@14 { status = "okay"; compatible = "goodix,gt9xx"; reg = <0x14>; touch-gpio = <&gpio3 RK_PC0 GPIO_ACTIVE_HIGH>; //中断IO reset-gpio = <&gpio3 RK_PC1 GPIO_ACTIVE_LOW>; //复位IO max-x = <1920>; max-y = <1200&g ...
通讯协议--CAN
通讯协议CAN 协议CAN有两种通信标准:高速CAN和低速CAN。高速CAN属于闭环总线,速率可以达到1Mbps,总线长度<40m,适用需要快速数据传输的环境,如汽车内部网络
低速CAN速率只能达到250kbps,属于开环总线,总线长度可达到1000m,适合于工业自动化和远程监控等场景。
CAN总线信号CAN总线上,信号表现为电压形式,通过CAN_H和CAN_L线上的电位差来表示CAN信号,它们之间的电压差决定了信号的状态。分为显性电平(dominant)和隐性电平(recessive)两种类型。具体表现如下:
显性电平(Dominant):在CAN协议中,显性电平表示为逻辑0。当总线上的电压差满足特定的范围时(例如1.5V至2.5V),则认为总线上的信号是显性电平。
隐性电平(Recessive):隐性电平则表示为逻辑1。如果CAN_H和CAN_L之间的电压差不在显性电平的范围内,则信号被认为是隐性电平。
CAN信号传输
graph LR
A[CPU]--信号-->B[CAN控制器]
B--逻辑电平-->C[CAN收发器]
C--差分信号--> ...
Linux系统--优化开机启动
开机启动优化开机启动优化是提高计算机启动速度和性能的重要步骤。以下是一些优化开机启动的策略和命令。
系统开机启动服务分析首先,使用系统分析工具来查看各服务的启动时间,并关闭那些不必要的服务
123456789# 打印各服务耗时systemd-analyze # 服务启动耗时从大到小排序 systemd-analyze blame # 查看拖累启动速度的致命链 systemd-analyze critical-chain
启动服务管理systemctl 是systemd 管理系统主命令 ,可以用来Start/Stop/Restart/Reload 服务,用于控制和查询服务状态
123456789101112131415161718192021222324252627282930# 启动服务systemctl start [service-name]# 停止服务systemctl stop [service-name]# 重启服务systemctl restart [service-name]# 重新加载服务systemctl reload [servic ...
Linux驱动--WIFI驱动-RTL8822CU
WIFI 驱动场景需求:适配基于RK3568芯片,适配一款USB WiFi模块
型号选用:RTL8822cu最后字母代表工作方式,“S”为SDIO,“P”为pcie,“U”则为usb
代码环境:Liunx5.10 内核
该模块属于大功率的wifi模块,仅支持单模的wifi信号,不带蓝牙,通讯距离方面相对其他模块较好。
kernel 部分因为只要使用usb,所以只需要usb口,开启usb供电就行。内核部分也仅仅只需要编译相应驱动代码即可。
dts12345678910# 这是一个开启usb供电的gpio /*************WIFI 电源控制 **************/ gpio-keys { compatible = "gpio-keys"; pinctrl-names = "default"; pinctrl-0 = <&wifi_key>; gpios = <&gpio3 RK_PC4 GPIO_ACTIVE_LOW>; // 1016 label = "GPI ...
Git--diff和patch使用
Git_diff和patch使用Git 提供了两种补丁方案,一种是通过 git diff 生成的 .diff 文件,第二种是通过 git format-patch 生成的 .patch 文件。diff文件不会有commit信息。
git diff使用git diff 指令能够生成diff文件也可以指定生成patch文件
12345678git diff --cached 需要add 到本地,比较本地暂存区与上一版本的差异git diff (文件名)--cached 比较指定文件与上版本差异git diff HEAD^ -- ./>diff_sdk.patch 比较当前目录提交内容和上一提交版本差异输出到xxx.patch,若没add,则只显示已存在的文件修改git diff <tagname> > xxx.patch 比较当前与tag 上 差异输出到xxx
git patch使用git format-patch 指令可以生成patch文件,通过commit信息生成patch文件
1234git format-patch -M master 当前分支所有超前 m ...
通讯协议--UART
通讯协议任何通讯都是需要有一个载体,通过载体分类,分为有线或者无线通讯。通讯方式也有同步和异步,同步是两个设备通过时钟信号进行同步,异步是两个设备通过数据信号进行同步。同步通信是阻塞的,异步通信是非阻塞的。常见同步通讯有I2C、SPI等,异步通讯有TCP、UDP等。
串口协议构成帧:数据帧,即数据帧由起始位、数据位、停止位、校验位组成。
空闲位:数据线在空闲状态的时候为逻辑“1”状态。起始位:当要传输数据的时候先将数据线拉低,表示开始数据传输。数据位:即要传输的数据,数据位数可选择 5~8 位,低位在前,先传输,高位最后传输。奇偶校验位:这是对数据中“1”的位数进行奇偶校验用的,可不使用。停止位:数据传输完成标志位,停止位的位数可以选择 1 位、1.5 位或 2 位高电平,一般都选择 1 位停止位。
波特率:波特率就是 UART 数据传输的速率,也就是每秒传输的数据位数。
UART和USART区别串口是有线通讯一种,也是最简单常用的一种。UART和USART都是单片机串口通讯协议。区别:USART:通用同步和异步收发器UART:通用异步收发器
USART在异步通信的时候,它与UAR ...
Linux工具--busctl使用
busctl 命令使用busctl 命令简介busctl 是一个用于 introspect 和 monitor D-Bus 总线的命令行工具。它提供了一组命令,可以用于查看总线上的对等体、监视消息交换、显示对象树、调用方法等操作。
busctl 命令的基本用法
list:显示总线上的所有对等体。
status:显示总线服务的进程信息和凭证。
monitor:监视消息交换。
capture:类似于 monitor,但将输出写入 pcapng 格式的文件。
tree:显示一个或多个服务的对象树。
introspect:显示指定对象的接口、方法、属性和信号。
call:调用方法并显示响应。
emit:发出信号。
get-property:检索一个或多个对象属性的当前值。
set-property:设置对象属性的当前值。
help:显示命令语法帮助。
busctl命令的示例用法busctl call:
12# 调用 org.freedesktop.systemd1.Unit 的 Restart 方法busctl call org.freedesktop.systemd1 /org/freed ...
Linux--upower机制和使用
UPower机制什么是UPowerUPower是一个用于管理电源的工具,它是Linux桌面环境中的一个组件,负责处理电源管理相关的任务。UPower提供了守护进程、API和一组命令行工具,用于获取系统中关于电池、电源适配器等电源设备的信息,并提供相关的控制功能。
通过UPower,用户可以查询电源设备的状态、剩余电量、是否正在充电等信息。此外,UPower还可以监控电源设备的状态变化,例如当电源适配器被插入或拔出时,UPower会相应地更新电源状态信息。
UPower使用
upower –help查看帮助信息
--enumerate 枚举设备的对象路径123456-d, --dump 转储所有对象的所有参数-w, --wakeups 获取唤醒数据-m, --monitor 监视来自电源守护程序的活动--monitor-detail 详细监控-i, --show-info 显示对象路径信息-v, --version 打印客户端和守护程序的版本
upower -e查看当前电池相关的设备
12345# upower -e/org/freedesktop/UPower/devices/bat ...