自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

“Struggle”的博客

随心所欲,不逾矩

  • 博客(69)
  • 收藏
  • 关注

原创 数字音频接口(I2S,PCM/TDM)概念总结

DAI: Digital Audio Interface. 数字音频接口。古时候都是一堆芯片组成的音频电路,电路板上还得走模拟信号,对硬件工程师的要求是相当高。但随着半导体的发展,一堆音频芯片被集成到了一颗音频芯片上。MPU直连codec芯片传输数字音频数据,codec输出模拟信号连接到硬件音频插孔就完啦。硬件工程师的九阳神功慢慢失传了。

2025-04-01 10:11:35 871

原创 【VirtualBox 安装 Ubuntu 22.04】

网上教程良莠不齐,有一个优快云的教程虽然很全面,但是截图冗余,看蒙了给我,这里记录一个整洁的教程链接。UP还在记录生活,看的我好羡慕,呜呜。

2025-03-28 14:16:40 297

原创 Linux Device Drivers-第四章 调试技术

Linux 程序调试方法,学会通过监视调试如控制printk,学会使用各种调试工具如gdb。

2025-03-25 09:32:35 592

原创 Vim 编辑器-实现基础跳转

vim + ctags + cscope 实现跳转到定义,跳转到调用。

2025-03-17 22:10:20 569

原创 【strace命令】

让Linux管理员在没有源码的情况下跟踪系统调用(系统调用为用户空间程序向内核请求更高运行权限的服务)。常显示有关进程的系统调用,用于快速定位系统调用过程中失败的原因。

2025-03-05 08:27:07 320

原创 Linux DMA Engine 基础

讲解Linux DMA 子系统中如何查看DMA的使用情况,查看DMA哪些channel在使用。如何使用DMA engine接口编写M2M测试代码。

2025-02-23 16:48:21 768

原创 【GIC LPI 及 ITS 介绍】

参考arm官网。这个文档为需要理解MSI是如何被GIC转换的、LPI是如何被管理的人以及需要在裸核条件下配置GIC的人设计的。

2025-02-23 15:31:39 973

原创 Linux I2C 命令

Linux I2C设备的读取方法与相关命令总结。

2025-02-19 09:39:55 347

原创 【kernel内核时间函数】

该文件还包含一些对struct timespec64类型结构体变量的处理API:如下。用于将转换成ns值,返回值为u64类型。计算时间差,返回同样类型的结构体变量。二、 测量某段代码执行时间。

2025-01-03 18:57:43 496

原创 eDMA驱动调试总结

zephyr中调试eDMA总结

2025-01-02 09:35:34 722

原创 CACHE 操作

常用的两条刷cache操作,主要用于高速通信,DMA传输等场景,写数据后需要调用FLUSH_CACHE,读数据前需要INVAL_CACHE。

2024-12-17 14:41:02 332

原创 linux 内核传参 module_param_cb

module_param_cb 是 Linux 内核模块中用于定义可通过命令行将 用户态参数传递给内核模块的参数 的宏。

2024-12-13 11:46:19 275

原创 Zephyr 入门

讲解zephyr设备树的作用,如何访问设备树,驱动程序如何通过API和宏得到设备树,application如何得到驱动程序。

2024-12-01 11:04:44 746

原创 nvim编辑器,tmux配置

记录自己配置vim到放弃的全过程

2024-11-18 22:29:42 925

原创 C Primer Plus-第四章-字符串和格式化输入输出

书中解释原因:因为printf会先将n1, n2, n3, n4的值入栈,这些值占用对应类型的字节数。然后printf开始读取字节,但是pirntf会按照引号内的解释说明指定的字节数从栈中依次提取提取字节数,当然第一次错了后面也会出错。limits.h头文件提供了一系列宏定义,如INT_MAX,INT_MIN为int类型的最大最小值。, 用错误的转换说明来打印浮点数,书中作者打印出来发现四个值都错误,来警示读者。可见,可以手动指定想要输出数值的宽度,神奇吧。4.3.2 明示常量。

2024-11-18 21:57:43 446

原创 Linux Device Drivers-第三章 字符设备驱动程序

看了半个月了,但感觉自己这样毫无目标的看效率太低,网上看到大佬十年前就看英文原版书籍了,同时在做读书笔记,,,实在是惭愧

2024-11-08 09:06:51 858

原创 awk工具使用

比grep好用的搜索工具(默认情况下会忽略一些版本控制系统目录(如 .git、.svn)和不需要搜索的文件类型(如图片和二进制文件)。),但是可惜我的板子上没有这个工具,只能在虚拟机(Ubuntu)上玩玩。

2024-11-06 08:54:20 237

原创 更新 meson 与 ninja

在编译dpdk的过程中,我发现我修改dpdk后死活不能编译,重新克隆后的设备还是不行,最后我定位到问题可能是这俩工具版本太老了。于是搜索更新的方法。

2024-09-05 14:20:40 262

原创 Linux配置交叉编译工具链

配置交叉编译工具链,需要三个东西,记住:ARCH, CROSS_COMPILE,和PATH。

2024-09-01 16:20:09 699

原创 Linux kernel 宏展开竟然如此方便,惊了

太多了,尼玛有完没完了到底 😊. 遂立即使用新方法。(Five years later…在我看Per CPU 变量的过程中偶遇一个方法,记录一下。

2024-08-03 16:44:03 232

原创 Linux PSCI框架

PSCI(Power State Coordinate Interface)是ARM定义的电源管理接口规范,由firm来实现。Linux系统通过smc/hvc指令(设备树可查看是那种)调用对应的实现。代码路径:arch/arm64/kernel/psci.c drivers/firmware/psci.c

2024-08-03 16:01:54 416 1

原创 Uboot下的命令与环境变量

help + 命令 你可以得到大部分命令的用法介绍。

2024-07-20 18:18:55 1011

原创 fdisk刷启动盘

fdisk:用法简单,先让你选择主分区还是拓展分区,选择分区号,选择分区起始位置(要选在上一个扇区后面否则不重叠了嘛),扇区大小。mkfs:该格式化工具有很多,我常用mkfs.ext4。指定哪个盘哪个分区。df -T : 查看文件系统类型,占用。file -s /dev/vdb :也可也查看文件系统类型。mount: 挂载,在解除挂载时可能会遇到问题,fsck.ext4 /dev/vdb :在超级块受损时,尝试修复问题。

2024-07-20 16:46:59 258

原创 Uboot启动流程梳理

Uboot初识

2024-07-20 16:20:20 340

原创 【Linux dd 命令】

最初为磁盘设备涉及的工具,也可在其他类型文件操作。

2024-07-15 19:32:06 672 1

原创 【TFTP工具(Trivial File Transfer Protocol)】

TFTP分为服务端和客户端,想要通信,一个配成服务端另一个配成客户端。TFTP 用于 UDP 端口号 69 其文件传输活动要想使用TFTP需要的步骤:① 本地安装客户端工具② 服务器安装TFTP服务端工具③ 服务端开启 TFTP服务并配置TFTP上传和下载的目录。

2024-07-15 18:26:37 1227

原创 【IEEE Std 802.1Qat-2010 协议解读(一)】

此协议修订了协议、过程、管理对象,这些对象可由现有更高层机制使用,这些协议允许穿越桥接局域网设备的特定的流预留网络带宽。

2024-06-01 20:45:38 1440

原创 AVB协议分析(二) SRP协议介绍

SRP协议,流预留协议,英文名Stream Registration Protocol(SRP) ,在2010年SRP标准化成为IEEE802.1Qat,并入IEEE 802.1Q-2011标准中。SRP定义了OSI模型第2层的流概念。简单说,SRP协议通知整个网络路径上的各个节点,让每个节点都知道应该预留多少带宽,以及汇报自身的带宽是否还足够预留。但SRP没有描述各个节点如何来实现带宽预留这个动作,这个事情需要各个节点自行完成。

2024-05-30 23:46:40 1567

原创 AVB协议分析(一) FQTSS协议介绍

IEEE Std 802.1 Qav:流量整形协议(Forwarding and Queuing for time-sensitive streams,简称FQTSS),目前被整合在IEEE Std 802.1Q-2011 第34章。所以,凡是提到FQTSS或Qav或者 “时间敏感性流的转发和队列协议”,就是一个东西。作用:对接收到的帧按流量类别以及优先级排队有序发送,也限制高优先级一直占用网络导致的低优先级无法发送。就是解决了同时到达某switch端口的数据谁先被转发的问题。

2024-05-29 22:38:14 1418

原创 select函数(Unix系统)

select 介绍

2024-05-27 22:14:00 525

原创 【poll函数ppoll函数与epoll函数的区别】

epoll 是一个更现代、更高效的IO多路复用机制,特别适合于需要处理大量并发连接的应用程序,如网络服务器和负载均衡器。而 poll 和 ppoll 则提供了基本的多路复用功能,适用于对性能要求不是特别高的场景,或者需要处理信号的场景。

2024-05-26 21:24:14 605

原创 【Linux signal】

信号集(signal set)是指一个能够包含多个信号的数据类型,它用于表示一组信号。信号集通常用于信号掩码(signal mask)和信号处理的相关操作中。进程可以使用信号集来指定它希望阻塞的信号(sigprocmask)、它希望等待的信号(sigwait或sigtimedwait),或者它想要处理的信号(sigpending)。在Linux中,信号集通过sigset_t类型来表示,这是一个能够包含所有信号的数据类型。函数作用初始化一个信号集,使其不包含任何信号。sigfillset。

2024-05-22 23:21:29 1223

原创 ALSA之dmix插件

ALSA是Advanced Linux Sound Architecture的简称。ALSA是为了克服OSS的一些局限性而开发的,它提供了更多高级功能,如多音频设备支持、多重采样率转换等,并逐渐取代OSS成为Linux内核中默认的音频子系统。(在ALSA成为主流之后,为了保持向后兼容性,ALSA提供了模拟OSS的兼容模式,使得原本为OSS设计的应用程序可以在ALSA上运行而无需修改。ALSA 是一个完全开放源码的音频驱动程序集,是由志愿者维护的开源项目,而 OSS 则是由公司提供的商业产品。

2024-05-19 23:31:16 1397

原创 poll 机制

① APP不知道是否有事件发生,调用poll函数并传入超时时间。此时线程先放入队列。② APP进入内核态,如果有事件发生,则poll立即返回。线程也出队列,APP被唤醒。③ 如果没数据,就休眠一段时间。④ 如果在休眠期间,有中断被调用,唤醒了队列中的线程,APP被唤醒。⑤ 当超时时间到了之后,内核也会唤醒 APP。⑥ APP根据函数的返回值就知道是否有数据,如果有数据就调用read读数据。

2024-05-12 23:40:17 1041

原创 【getopt函数用法】

getopt每次调用会返回main的输入中带“-”的参数。参数argc和argv是由main()传递的参数个数和内容,最后一个参数为选项字符串。这个字符串规定了选项中字符串的内容是否要带参数。看我分析

2024-05-12 19:17:47 885

原创 mmap函数小实验

为了深入理解mmap的参数length与offset对mmap函数行为的影响,从而更好地理解内存映射。

2024-04-16 15:30:17 1024

原创 AVB简介(二): gPTP简介

介绍AVB协议族中的精确时钟同步协议gPTP(IEEE Std 802.1AS-2011)(Precision Time Protocol standardized in IEEE1588-2008 (or IEC61588-Ed.2)),仅作学习用。

2024-04-15 16:02:17 1749

原创 AVB概述

采样需要确定采样间隔,需要用参考时钟,有的采样系统用系统时钟为参考时钟,有的以外部时钟做参考时钟,可想而知,不采样系统同的参考时钟如果不同呢,必定或多或少不同步(比如A时钟的1ms可能对应实现世界的0.9ms,B时钟的1ms可能对应现实世界额1.1ms)。现实世界中音视频都是连续的模拟量,而以太网中传输的都是数字量,音视频采集过程中需要采样、量化、编码过程,其中涉及采样频率,而播放的过程中需要相同的频率进行播放,此为。对于单一的音视频流,解决了媒体时钟恢复的问题,一般就能正常播放了。

2024-04-11 17:38:05 1945

原创 patch 与 diff

一般用法:diff -Nur Oldfile Newfile > file.patch其中-r 为递归比较两个目录对应文件差异,-N 为将不存在的文件视为空文件,-u 为默认输出每个修改的前后三行。刚开始我觉得-u参数不重要,但实验后发现,不加-u参数根本打不上patch.经观察,是否加-u参数生成的patch文件还有差异如下:所以以后乖乖用 -Nur。通过输入patch --help查看用法,发现用法如此之多,有输入的,有输出的,我用到哪些再研究哪些,现仅总结我常用的。

2024-04-03 09:54:37 334

原创 【tcpdump 命令】

tcpdump很牛哇,牛逼之处在于你可以通过他监控什么数据在网络中流通,在大多的类 Unix 系统操作系统(如 Linux,BSD 等)都能用(前提你必须是系统管理员),他可以识别很多协议:ARP、RARP、ICMP、TCP、UDP、IP、IPv6等。

2024-04-02 09:44:50 636

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除