嵌入式技术点总结(持续更新)
·
Linux知识点
常用命令:
cd /path/ # 移动到指定目录
cd - # 返回上一次目录
cd .. # 返回上一层目录
pwd # 显示当前目录
touch /file_path # 创建文件
mkdir /path # 创建目录
rm /file_path # 删除文件、目录要-r
mv /source_path /target_path # 移动文件、目录
cp /source_path /target_path # 复制文件、目录要-r
ln -s /source_file_path /target_file_path # 软链接 硬链接等于重起一个名字,不需要-s
ls -lah # 查看目录下文件
tree # 查看目录下文件(树状图)
lsusb # 查看USB设备
top # 查看所有任务
ps -ef | grep "app_name" # 查看指定任务
ps -fp PID # 查看指定PID的是执行的什么
dmesg -w | grep "xxx" # 持续监测端口信息,如USB
cat /file_path # 常用于查看端口值、log文件 -s压缩空行 -n显示行号
tail -n 10 /file_path # 显示文件后面内容,-n指定行数 -f实时显示
find /path -name "config.yml" 2>/dev/null # 查找文件
diff /file1_path /file2_path # 查看文件差异,三文件用diff3
scp -l 50000 /local_path /remote_path # 远程传输,传目录用 -r, 限速用-l(小写L) <xxxx>
chmod +x /file_path # 修改文件权限,1执行2写4读, 递归修改-R
chown user:group /file_path # 修改文件的所有人和组, 可只改一个 :group
df -h # 常用于查看整体系统的内存占用
du -ah /path # 显示目录及递归的文件占用内存
tar -zcvf file.tar.gz directory # 压缩文件,排除指定文件 --exclude='*.log'
tar -zxvf file.tar.gz -C directory # 解压文件,解压到指定目录 -C
zip -r file.zip directory # 压缩文件,排除指定文件 -x '*.log',加密-e
unzip file.zip -d directory # 解压文件,解压到指定目录 -d
apt update && apt upgrade # 更新软件库
apt install -y package_name # 安装软件包
apt install --fix-broken # 修复软件包
apt remote package_name # 删除软件包
arp-scan -q --localnet # 查看所有存在子网ip
service服务:
-
存放路径:
/etc/systemd/system/
-
服务控制命令:
systemctl start/stop/restart/status/enable/disable myapp
systemctl daemon-reload
-
服务内容:
[Unit]
Description=my_app # 描述
Documentation=www.baidu.com # 文档链接
# 依赖关系
Requires=network.target # 强依赖
Wants=syslog.target # 弱依赖(会尝试拉起该服务,失败也正常运行)
BandsTo=dev-sda.service # 绑定依赖(依赖停止,服务也会停止)
Conflicts=shutdown.target # 冲突,不能共存
# 启动顺序
After=network-online.target # 在列出的依赖后运行
Before=mysql.service multi-user.target # 在列出的依赖前运行
# 条件
ConditionPathExists=/etc/my_app/config.yml # 判断文件是否存在
ConditionPathIsDirectory=/etc/my_app/image # 判断是不是目录
# 断言
AssertPathExists=/etc/my_app/model.bin # 文件是否存在
AssertFileIsExecutable=/opt/my_app/run # 文件是否为可执行文件
-
查看服务日志:
# 常用
journalctl -u myapp -f
-x 查看错误日志
-e 调到最新的end
-u 指定服务日志
-f 阻塞并刷新实时日志
-n 指定多少行
--vacuum-size=500M 清理到500M
-b 按照启动的次数过滤 如 journalctl -b 1 上一次启动的日志 -b 不带数字代表当前启动的日志
-since 按照时间筛选 如--since "2025-09-01 10:00:00" --until "2025-09-01 11:00:00"
-p 优先级过滤 0: emerg(紧急)1: alert(警报)2: crit(严重)3: err(错误)
4: warning(警告)5: notice(注意)6: info(信息)7: debug(调试)
制作设备镜像:
-
系统瘦身(镜像更小)
# 清理APT缓存
sudo apt autoremove --purge # 确认软件包是否需要留下
# 将重要包标记为手动安装(这样就不会被autoremove删除)
sudo apt-mark manual package1 package2
sudo apt clean
sudo rm -rf /var/cache/apt/archives/*
sudo rm -rf /var/lib/apt/lists/*
# 日志文件清空,文件不删除
sudo find /var/log -type f -exec truncate -s 0 {} \;
# 清理用户缓存
rm -rf ~/.cache/*
sudo rm -rf /root/.cache/*
sudo rm -rf /home/*/.cache/*
# 删除压缩包
find / -type f \( -name "*.tar" -o -name "*.tar.gz" -o -name "*.tgz" -o -name "*.zip" -o -name "*.rar" -o -name "*.7z" \) -size +10M 2>/dev/null -exec rm -f {} \;
# 空闲空间填零
sudo dd if=/dev/zero of=/zero.fill bs=1M status=progress
sudo rm -f /zero.fill
sync
-
制作镜像
# 制作初步镜像
dd if=/dev/sda of=arm4_backup.img conv=sync status=progress bs=1M
# 下载压缩脚本
wget https://raw.githubusercontent.com/Drewsif/PiShrink/master/pishrink.sh
# 压缩镜像
chmod +x ./pishrink.sh && ./pishrink.sh -z arm4_backup.img
-
下载到SD卡

git使用:
C++代码调试:
# 小工具
ldd /share_library # 查看共享库依赖
md5sum /file_path # 查看文件的一致性,以防文件损坏
file /file_path # 查看文件属性,如可执行文件、共享库等
-
gdb的调试
Python代码调试:
# 创建虚拟环境
sudo apt install python3-venv python3-full -y # 下载所需工具
python3 -m venv /env_path # 创建环境文件
source /env_path/bin/activate # 加载虚拟环境
pip3 install package_name # 单独下载 安装最新包-U 指定包的版本如 package_name=1.3.2
pip3 install -r requirements.txt # 批量下载所需的包,虚拟环境下载的包都手动备份到此文件
ROS2常用命令:
# 查看存在列表 节点/话题/服务/参数/动作
ros2 node/topic/service/param/action list
# 查看信息
ros2 node info <node_name>
ros2 topic info <topic_name>
ros2 service info <service_name>
ros2 action info <action_name>
ros2 interface show <type_name>
# 直接启动节点
ros2 run <package_name> <node_executable>
# 重映射启动节点, 可更改节点名称、命名空间、话题名称、服务名称、动作名称
ros2 run <package_name> <node_executable> --ros-args --remap <old_name>:=<new_name>
# 配置文件启动节点
ros2 launch <package_name> <launch_file>
openvela 操作系统专为 AIoT 领域量身定制,以轻量化、标准兼容、安全性和高度可扩展性为核心特点。openvela 以其卓越的技术优势,已成为众多物联网设备和 AI 硬件的技术首选,涵盖了智能手表、运动手环、智能音箱、耳机、智能家居设备以及机器人等多个领域。
更多推荐


所有评论(0)