嵌入式Linux调整分区表
16MB Flash,新增功能的时候发现flash不够用了,查看分区表,备份分区占了三千多K,所以想研究一下能不能通过调整分区,将备份分区尽量变小以腾出空间添加新功能。由于之前没有做过此类尝试,故留下此文以便不时之需。
分区现状分区信息dev: size erasesize namemtd0: 00030000 00001000 "uboot"mtd1: 00510000 00001000 "boot"mtd2: 00530000 00001000 "system"mtd3: 00530000 00001000 "bk"mtd4: 00050000 00010000 "userdata"mtd5: 00010000 00001000 "productdata"
分区说明
分区
大小(KB)
name
mtd0
192
uboot
mtd1
5184
boot
mtd2
5312
system
mtd3
5312
bk
mtd4
3 ...
音视频扫盲
编解码音视频专业名词速查表视频相关
名词
解释
帧率,FPS
每秒显示的图像帧数,单位是 fps(Frames Per Second)
码率,bitRate
单位时间内视频或音频的数据量,通常以 kbps 或 Mbps 为单位
分辨率
图像或视频的像素尺寸,如 1920x1080(1080p)
GOP
图像组(Group of Pictures),两个 I 帧之间的帧序列
YUV
一种颜色编码系统,常用于视频处理与压缩
NV12
YUV 4:2:0 格式的一种,属于半平面(semi-planar)格式
H265
高效视频编码(HEVC),比 H264 压缩效率更高
H264
目前最常用的视频编码标准,兼容性好
MP4
常见的多媒体容器格式,可存储视频、音频、字幕等
I帧 / P帧 / B帧
视频压缩中的帧类型:I帧为关键帧,P帧为前向预测帧,B帧为双向预测帧
RGB
红绿蓝三原色色彩空间,常用于图像采集和显示
色度抽样
如 4:2:0、4:2:2,表示色度信息的采样方式
量化参数(QP)
控制编码质量和压缩率 ...
iperf3网络性能测试工具指南
工具简介iperf3 是一款专业的开源网络性能测试工具,用于主动测量IP网络所能达到的最大带宽。它支持调整时序、缓冲区和协议(TCP、UDP、SCTP)等多种参数,并能报告带宽、延迟抖动、丢包率等关键网络性能指标。
核心功能与特点
多协议支持:支持 TCP、UDP、SCTP(支持 IPv4 和 IPv6)
性能指标测量:
带宽 (Bandwidth):测量网络最大吞吐量
抖动 (Jitter):数据包延迟的变化,尤其适用于UDP测试
丢包率 (Packet Loss):适用于UDP测试,统计丢失的数据包比例
客户端/服务器模式:采用C/S架构,测试时需同时运行服务端和客户端程序
参数灵活调整:支持调整数据包大小、测试时长、并行流数量、TCP窗口大小等
结果输出多样:支持常规文本输出,也可使用 -J 参数以 JSON格式 输出,便于自动化处理
安装指南Linuxsudo apt-get install iperf3
交叉编译如果编译的版本是3.19.1,编译过程报错va_list参考iperf 3.19: missing header #1890解决
wget ...
C语言命令行传参
命令行传参命令行传参函数原型为int main(int argc, char *argv[])或者int main(int argc, char **argv),其中argv是参数个数,argv是实际传参。
#include <stdio.h>int main(int argc, char *argv[]){ for(int i = 0; i < argc; i++) printf("No.%d parm is %s\n", i, argv[i]); return 0;}
编译运行由运行结果可以看到,第一个参数为程序名称,在处理命令行参数的时候要注意从第二个参数开始才是真正需要处理的参数
$gcc -o test test.c $./test hello worldNo.0 parm is ./testNo.1 parm is helloNo.2 parm is world
命令行参数处理函数查询man手册,c语言提供了下面几个命令行参数处理函数,下面给出函数原型和所在头文件。
#include <unistd. ...
Ubuntu交叉编译Bluez
交叉编译均在Ubuntu 22.04环境操作
交叉编译前准备目录结构 由于bluez编译过程中依赖项比较多,所以创建一个文件夹,作为编译目录,文件目录结构如下
bluez-cross-complier/├── download #源码下载在此处操作└── output #编译产物输出到此目录└── source-code #源码存放目录
源码下载BlueZ Readline Ncurses D-Bus Expat Glib Zlib libffi gettext
cd bluez-cross-complier/download/wget http://www.kernel.org/pub/linux/bluetooth/bluez-5.66.tar.xzwget ftp://ftp.cwru.edu/pub/bash/readline-8.2.tar.gzwget https://ftp.gnu.org/gnu/ncurses/ncurses-6.4.tar.gzwget https://dbus.freedesktop.org/releases/dbus/ ...
Linux性能分析-网络
资源受限Linux环境 iperf3 udp打流丢包解决方案
方案一:调整程序优先级nice -n 20 your_program &nice -n -20 iperfs -c your_ip -t 60 -u -b 100M -R
方案二:修改发送、接收缓冲区buffer缓冲区buffer调整到2MB# 2M# echo 2097152 > /proc/sys/net/core/rmem_default# echo 2097152 > /proc/sys/net/core/rmem_max# echo 2097152 > /proc/sys/net/core/wmem_default# echo 2097152 > /proc/sys/net/core/wmem_max
C语言使用syslog
syslogd和klogdsyslogd是Linux系统日志守护进程,负责接收、记录和分发系统日志,通常配合/etc/syslog.conf使用。klogd是Linux内核日志守护进程,符合收集和处理内核信息,通常配合syslogd使用,但是也可以独立使用。
配置文件解析配置文件的语法: facility.level actionfacility: 标识符
kern 内核信息,首先通过 klogd 传递; user 用户进程; mail 邮件; daemon 后台进程; authpriv 授权信息; syslog 系统日志; lpr 打印信息; news 新闻组信息; uucp 由uucp生成的信息 cron 计划和任务信息。 mark syslog 内部功能用于生成时间戳 local0~local7 与自定义程序使用* 通配符代表除了 mark 以外的所有功能
level: 日志等级
syslog 级别如下:(按严重程度由高到低的顺序列出了所有可能的优先级。) emerg 或 panic ...
1.从零开始学Linux内核源码 - 源码下载及配置编译
所有操作均是linux-6.8.2版本
kernel源码下载
官方网站
linux-6.8.2
kernel目录结构
目录说明
目录
说明
arch
包含了各种不同的CPU体系架构的代码,如果ARM、x86、MIPS等
block
包含块设备相关的代码
crets
包含了用于签名和验证内核模块的证书文件和工具
crypto
包含加密相关的代码
Documentation
包含了内核的文档,包括各种文档、注释和帮助文件
drivers
含了设备驱动程序的源代码,如输入输出设备、网络设备等
fs
包含了文件系统相关的代码,如 ext4、NTFS、FAT 等
include
包含了一些头文件,用于引入定义和声明
init
包含了启动和初始化代码
io_uring
包含了与 io_uring 框架相关的代码
ipc
包含了进程间通信相关的代码
kernel
包含了内核的核心代码
lib
包含了一些通用的函数库
mm
包含了内存管理相关的代码
net
包含了网络协议栈相关的代码
rust
引入了一些rust特性
samp ...