Linux下利用shell简单调试udp和tcp
Linux下利用shell简单调试udp和tcp背景Linux环境下,有时候需要简单地进行下udp和tcp的测试,又不想去写C之类的代码,可以尝试下用Python或者直接用Shell来处理,简单方便,高效快捷。这里主要讲讲使用Shell的方式。
服务端主要使用 nc (netcat) 。
客户端主要使用/dev/tcp、/dev/udp。
nc: — arbitrary TCP and UDP connections and listens
The nc (or netcat) utility is used for just about anything under the sun involving TCP, UDP, or UNIX-domain sockets. It can open TCP connections, send UDP packets, listen on arbitrary TCP and UDP ports, do port scan‐ ning, and deal with both IPv4 and IPv6.
/dev ...
使用Gstreamer进行RTSP推流
使用Gstreamer进行RTSP推流背景以前使用 Gstreamer 推过RTP流,主要涉及到 rtph264pay 插件:
gst-launch-1.0 videotestsrc ! video/x-raw,framerate=30/1 ! clockoverlay ! mpph264enc ! queue ! h264parse ! rtph264pay ! udpsink host=192.168.1.104 port=1234
使用vlc打开需要配置sdp文件,前面有提到过:https://notes.z-dd.online/2024/06/08/RTP%E8%A7%86%E9%A2%91%E6%B5%81%E7%9A%84SDP%E6%96%87%E4%BB%B6/
最近尝试了推RTSP流,要稍微麻烦点:
# 1. 运行mediamtx流媒体服务器
./mediamtx &
# 2. 运行gstreamer命令
gst-launch-1.0 videotestsrc ! video/x-raw, ...
Linux内核之blktests简单介绍
Linux内核之blktests简单介绍blktests最近遇到了个补丁引起的blktests测试问题,顺便了解了下blktests。
blktests是Linux内核块设备和存储堆栈的一个测试框架。它的灵感来自于xfstests文件系统测试框架。
blktests is a test framework for the Linux kernel block layer and storage stack. It is inspired by the xfstests filesystem testing framework. It was originally written by Omar Sandoval and announced in 2017.
简单使用安装依赖确保安装相关依赖:
bash (>= 4.2)
GNU coreutils
GNU awk
util-linux
fio
gcc
make
有些测试可能要求更多组件:
e2fsprogs and xfsprogs
multipath-tools (Debian, openSUSE, Arch Linu ...
RTP视频流的SDP文件
RTP视频流的SDP文件背景直接通过URL地址(rtp://192.168.1.104:1234)用vlc打开RTP网络流的时候报错:
SDP required:
A description in SDP format is required to receive the RTP stream. Note that rtp:// URIs cannot work with dynamic RTP payload format (96).
后来才想起是需要写sdp文件,所以顺便记录下。
SDP文件
会话描述协议(Session Description Protocol或简写SDP)描述的是流媒体的初始化参数。此协议由IETF发表为 RFC 2327。– 来自百度百科
SDP(Session Description Protocol) 是一种通用的会话描述协议,例如在音视频通话前通话双方需要进行媒体能力协商,比如协商双方都可支持的编解码类型,交换候选地址等,因此通话前都会发送一个 SDP,描述自己的会话和媒体等信息。– 来自CSDN :https://blog.c ...
Linux之多媒体应用接口v4l-utils及摄像头简单使用
Linux之多媒体应用接口v4l-utils及摄像头简单使用简述V4LV4L(Video For Linux, or Video4Linux):
The V4L API is essentially a kernel interface for analog video capture and output drivers, and is applicable to most video streams that are not related to DVB devices (see explanation below) or graphics cards – though, the V4L API also entails a few oddities such as analog radio and RDS services. Examples of devices which fall within the scope of V4L are, amongst others, webcams, MPEG encoders/decoders, digital video strea ...
Linux内核之MMC框架
Linux内核之MMC框架背景之前简单说了说SDIO、SD、MMC之间的区别与联系,具体可见以下链接:
https://notes.z-dd.online/2024/01/19/MMC%E5%92%8CSD%E4%B8%8ESDIO/
最近刚好看到这块,今天来看看Linux内核中关于它们的MMC框架。
软件架构Linux内核中,SDIO、SD、MMC相关的驱动都由MMC框架来管理。其主要的软件架构如下图所示:
和一般的框架类似,可以分为横向的“从左到右”和纵向的“从上到下”两个种层次结构。
横向的“从左到右”MMC属于一种总线驱动,所以主要包括Host、Bus、Card三类实体(从左到右),软件上也是一一对应:
host,负责驱动Host controller,提供诸如访问card的寄存器、检测card的插拔、读写card等操作方法。从设备模型的角度看,host会检测卡的插入,并向bus注册MMC card设备;
bus,是MMC bus的虚拟抽象,以标准设备模型的方式,收纳MMC card(device)以及对应的MMC driver(driver);
card,抽象具体的MMC ...
Linux之Gstreamer实现视频OSD
Linux之Gstreamer实现视频OSD背景何为OSD?
OSD(on-screen display)即屏幕菜单式调节方式。一般是按Menu键后屏幕弹出的显示器各项调节项目信息的矩形菜单,可通过该菜单对显示器各项工作指标包括色彩、模式、几何形状等进行调整,从而达到最佳的使用状态。—— 百度百科
简单点说就是在视频上叠加一个自定义的图层显示,主要包括字符,图片,图形等。
Gstreamer是啥?
GStreamer is a library for constructing graphs of media-handling components. The applications it supports range from simple Ogg/Vorbis playback, audio/video streaming to complex audio (mixing) and video (non-linear editing) processing.
Applications can take advantage of advances in codec and filte ...
红外热成像下篇--叠加字符OSD
红外热成像下篇–叠加字符OSD背景前段时间不是玩了下红外热成像,视频可见我的公众号和视频号:
还有个瑕疵:视频上没有实时显示相应的温度(叠加在视频上),这段时间就把它给实现了,视频可见我的公众号和视频号。
在视频上实现温度信息叠加,里面一个主要技术点就是字符OSD,这里使用了一种IPC芯片通用的字符OSD方案(RK、海思等方案都适用):freetype + sdl + Soc的图层处理硬件模块。
首先介绍下前面这3个东东:
freetype:
FreeType库是一个完全免费(开源)的、高质量的且可移植的字体引擎,它提供统一的接口来访问多种字体格式文件,包括TrueType, OpenType, Type1, CID, CFF, Windows FON/FNT, X11 PCF等。
sdl:
SDL(Simple DirectMedia Layer)是一套开放源代码的跨平台多媒体开发库,使用C语言写成。SDL提供了数种控制图像、声音、输出入的函数,让开发者只要用相同或是相似的代码就可以开发出跨多个平台(Linux、Windows、Mac OS X等)的应用软件。现SDL多 ...
Linux内核之设备树插件DTO
Linux内核之设备树插件DTO什么是DTO(Device Tree Overlay)Linux4.4以后引入了动态设备树(Dynamic DeviceTree),我们这里翻译为“设备树插件”,或者称“设备树叠加层”。设备树插件(Device Tree Overlay,叠加层)是一种用于设备树(Device Tree)的扩展机制,可以理解为主设备树的“补丁”它动态的加载到系统中,无需重新编译整个设备树。它允许在运行时动态修改设备树的内容,以便添加、修改或删除设备节点和属性,这样就提供了一种灵活的方式来配置和管理硬件设备,而无需重新编译整个设备树。
几个概念
FDT: Flattened Device Tree
DTS: Devicetree Sources,是用于描述 FDT(设备树) 的源文件
DTO: Devcie Tree Overlay,设备树插件(或者说叠加层)
DTC: Device Tree Compiler,顾名思义,是FDT(设备树) 的编译器
DTB: Device Tree Blob,DTS经过DTC编译后而生成
DTBO: Device Tree Bl ...
Linux内核之Kselftests
Linux内核之Kselftests简介Linux内核包含了一套开发者可用的单元测试和回归测试(Kselftests),这些测试位于内核源代码的tools/testing/selftest目录下。这些测试旨在针对内核中的各个代码路径进行小规模的测试。测试应该在构建、安装和启动内核之后运行。
它每天都会在不同的Linux内核树(即代码库)的内核集成测试环境上运行,主要是为了确保内核代码在合并到主干之前,在各种场景和配置下都能正常工作,从而提高内核的整体稳定性和可靠性。
kselftest的一些特性:
快速执行测试的能力(目前的目标是不到20分钟)
一些开发人员希望在几秒钟内运行测试
运行不同测试组的能力
测试源代码保存在内核源代码树中,任何使用内核源代码的人都可以很容易地访问它
可以在 Kselftest-wiki 上找到关于Kselftest框架的其他信息,以及如何使用该框架编写新的测试。
编译运行及安装相关的命令如下:
#编译
$ make headers
$ make -C tools/testing/selftests
#运行tests
$ make -C tools/t ...
重新梳理OpenHarmony的HDF
概述重新梳理下OpenHarmony下HDF的有关概念及从应用到驱动自上而下的整个流程。主要包括:
HDF架构
HDI接口
内核KHDF移植
以Light设备为例,看看整个调用流
注:这里讨论的只针对L2标准系统。
HDF架构图HDF(Hardware Driver Foundation)驱动框架,为驱动开发者提供驱动框架能力,包括驱动加载、驱动服务管理、驱动消息机制和配置管理。并以组件化驱动模型作为核心设计思路,让驱动开发和部署更加规范,旨在构建统一的驱动架构平台,为驱动开发者提供更精准、更高效的驱动管理的开发环境,力求做到一次开发,多系统部署。
驱动加载HDF驱动框架提供把和配置的设备列表匹配成功的驱动程序加载起来的功能
驱动服务管理HDF框架可以集中管理驱动服务,开发者可直接通过HDF框架对外提供的能力接口获取驱动相关的服务
驱动消息机制HDF框架提供统一的驱动消息机制,支持用户态应用向内核态驱动发送消息,也支持内核态驱动向用户态应用发送消息
配置管理HCS是HDF驱动框架的配置描述源码,内容以Key-Value为主要形式。它实现了配置代码与驱动代码解耦,便于开发者进行配置 ...
Linux调试中的各种trace
Linux调试中的各种traceLinux中有很多调试手段,很多trace,很让人迷糊,弄得云里雾里。今天简单介绍下其中的几种trace:ptrace, strace, ltrace, ftrace 。只是简单介绍它们的基本概念,对其有基本的了解,后面有机会的话,再逐个深入。
ptrace官方手册说明:https://man7.org/linux/man-pages/man2/ptrace.2.html
The ptrace() system call provides a means by which one process (the “tracer”) may observe and control the execution of another process (the “tracee”), and examine and change the tracee’s memory and registers. It is primarily used to implement breakpoint debugging and system call tracing.进程跟踪器,类 ...