Linux--USB调试
Linux USB调试USB设备是linux常用设备,以下是针对USB设备协议分析、数据抓取和常见问题调试方法
设备识别与基础信息
查看USB设备树
1lsusb
输出示例:
12345Bus 001 Device 004: ID 2a63:0001Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hubBus 002 Device 003: ID 0e0f:0002 VMware, Inc. Virtual USB HubBus 002 Device 002: ID 0e0f:0003 VMware, Inc. Virtual MouseBus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
如 Bus 001 Device 004: ID 2a63:0001Bus 001 : 指明设备连接到哪条总线Device 004 : 表明这是连接到总线上的第二台设备ID : 设备的IDLinux Foundation 2.0 root hub :生产商 ...
shell--通配符
Shell 通配符一、基础通配符星号*匹配零个或多个任意字符(包括空字符)
示例: 123*.txt # 匹配所有.txt文件(如file.txt、.txt等)doc* # 匹配以doc开头的文件(如document、doc1)*log* # 匹配包含log的文件(如log.txt、error_log)
问号?匹配单个任意字符
示例: 12file?.txt # 匹配file1.txt、fileA.txt(不匹配file10.txt)image?.png # 匹配image1.png、imageX.png
方括号[]匹配指定字符集中的一个字符
扩展用法: 1234[a-z] # 匹配任意小写字母[0-9] # 匹配数字[A-Za-z] # 匹配任意字母[!aeiou] # 排除元音字母(需配合shopt -s extglob)
花括号{}(扩展匹配)生成模式组合的笛卡尔积
示例: 12{2022,2023}-{Q1,Q2} ...
通讯协议--CAN转换模块调试
CAN模块调试在工作中经常会遇到不是原生的CAN通讯接口,可能时通过USB或者串口等接口转换。这时我们可以借助 slcand 工具,将这些设备虚拟成标准的 canX 接口,配合 can-utils 工具包进行调试。
安装调试工具 can-utilscan-utils 是Linux下用于调试CAN总线通信的常用工具包,包含 cansend、candump、canconfig 等命令。
安装方式:
1sudo apt-get install can-utils
slcand 简介slcand 是 SocketCAN 提供的串口CAN驱动桥接工具,用于将基于串口的CAN设备(如slcan协议)桥接为 canX 虚拟接口。
常用参数说明:
-c:打开CAN接口(start interface)
-s6:设置CAN速率,对应500kbps(速率参数详见下表)
-o:开启标准输出(通常用于调试)
-f:进入守护进程模式(fork模式)
-S9600:设置串口波特率(根据硬件要求设置)
/dev/ttyACM3:对应你的串口CAN设备路径
can1:指定映射的虚拟CAN接口名
-s参数值
...
Linux系统--ubuntu20.04更新内核
Ubuntu20.04 更新内核20.04发布时间是2020年,内核版本是5.4.0-xx,最新内核版本是5.15.0-xx。但是该内核不支持如intel i9-13900K显卡,需要更新到支持的版本5.19。
步骤1、更新libc6新内核版本需要,更高的libc6版本,在更新内核前需要先更新libc6版本,但是现有的源仓库中libc6版本较低,需要手动添加高版本源。在/etc/apt/sources.list中添加高版本源
1deb http://th.archive.ubuntu.com/ubuntu jammy main
然后执行更新命令
123sudo apt-get updatesudo apt-get install libc6-dbg libc6-dev libc-bin libc-dev-bin libc6 sudo apt-get install libssl3
2、下载内核包
访问ubuntu官网下载发行内核
下载对应版本和架构的安装包,选择kernel-5.19 amd64。下载完成后目录执行
1dpkg -i ./*.de ...
shell--基础范例
shell基础范例shell 常用写法示例,仅供参考。
文件操作路径获取
12345678# 获取文件绝对路径realpath# 获取当前文件所在目录dirname# 分割字符串echo "1,2,3" | cut -d',' -f2 # 输出 2
文件处理
1234567891011121314151617181920212223# 检查文件是否存在if [ -f "filename" ]; then echo "File exists"else echo "File does not exist"fi# 检查目录是否存在,不存在则创建if [ ! -d "dirname" ]; then mkdir dirnamefi# 复制文件cp sourcefile destfile# 移动文件mv sourcefile destfile# 删除文件rm filename# 删除目录及内容rm -rf dirname
帮助信息usage函数中自定义输出提 ...
Linux系统--安装中文拼音
Ubuntu 安装中文拼音基于fcitx框架linux很多输入法都是基于fcitx框架,百度、谷歌和搜狗都基于fcitx框架,以下是以安装搜狗拼音为例
参考网址
安装搜狗拼音1、安装fcitx框架
1234sudo apt install fcitxsudo apt install libqt5qml5 libqt5quick5 libqt5quickwidgets5 qml-module-qtquick2sudo apt install libgsettings-qt1
2、卸载系统ibus输入法框架
在终端执行
1sudo apt purge ibus
3、添加中文语言支持打开 系统设置——区域和语言——管理已安装的语言——在“语言”tab下——点击“添加或删除语言”
4、切换fcitx在系统设置中的region and language中
5、官网下载搜狗拼音安装包终端执行
1sudo dpkg -i sougouxxx.deb
6、配置添加sougou输入法
7、重启生效
基于ibus框架ubuntu默认安装ibus框架。
fcitx安装后经常会出问题,特别是关机会守护进程 ...
STM32--sc8815寄存器功能
以下是 SC8815 芯片所用到的寄存器以及对应的功能说明:
1、0x00H VBAT_SET 寄存器
功能:用于设置电池电压相关参数。
位描述:Bit 7-6 (IRCOMP):电池阻抗补偿设置。00:0 mΩ01:20 mΩ10:40 mΩ11:80 mΩBit 5 (VBAT_SEL):电池电压设置选择。0:内部设置1:外部设置Bit 4-3 (CSEL):电池串联节数选择(仅在内部设置时有效)。00:1S01:2S10:3S11:4SBit 2-0 (VCELL_SET):每节电池的电压设置(仅在内部设置时有效)。000:4.1V001:4.2V010:4.25V011:4.3V100:4.35V101:4.4V110:4.45V111:4.5V
2、0x01H VBUSREF_I_SET 寄存器
功能:用于设置内部 VBUS 电压的参考电压。
位描述:Bit 7-0 (VBUSREF_I_SET):内部 VBUS 参考电压设置(高 8 位)。计算公式:VBUSREF_I = (4 x VBUSREF_I_SET + VBUSREF_I_SET2 + 1) x 2 m ...
STM32--开漏输出和推挽输出
STM32推挽输出和开漏输出基本概念1、推挽输出(Push-Pull Output)由互补的N-MOS和P-MOS管构成推挽结构:
高电平输出:P-MOS导通,输出直接连接VDD低电平输出:N-MOS导通,输出直接接地典型应用:LED控制、继电器驱动等需要强驱动能力的场景2、开漏输出(Open-Drain Output)仅包含N-MOS管结构:
低电平输出:N-MOS导通高电平状态:MOS管断开,需外接上拉电阻典型应用:I2C总线、电平转换等需要”线与”功能的场景
核心差异对比
特性
推挽输出
开漏输出
输出结构
双MOS推挽结构
单MOS+外部上拉
驱动能力
强(直接驱动高低电平)
弱(高电平依赖外接电阻)
电平类型
固定电源电压
高电平由外部上拉电压决定
总线冲突防护
无
支持多设备”线与”
功耗
静态电流较大
静态功耗较低
电平转换能力
不支持
支持跨电压域通信
配置方法在gpio初始化的时候配置
推挽输出配置流程123456789101112/* 时钟使能 */RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPI ...