自定义博客皮肤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”的博客

随心所欲,不逾矩

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

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

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

2024-07-20 18:18:55 764

原创 fdisk刷启动盘

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

2024-07-20 16:46:59 113

原创 Uboot启动流程梳理

Uboot初识

2024-07-20 16:20:20 262

原创 【Linux dd 命令】

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

2024-07-15 19:32:06 467

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

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

2024-07-15 18:26:37 312

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

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

2024-06-01 20:45:38 945

原创 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 939

原创 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 979

原创 select函数(Unix系统)

select 介绍

2024-05-27 22:14:00 464

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

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

2024-05-26 21:24:14 423

原创 【Linux signal】

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

2024-05-22 23:21:29 1161

原创 ALSA之dmix插件

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

2024-05-19 23:31:16 992

原创 poll 机制

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

2024-05-12 23:40:17 875

原创 【getopt函数用法】

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

2024-05-12 19:17:47 681

原创 mmap函数小实验

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

2024-04-16 15:30:17 892

原创 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 1332

原创 AVB概述

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

2024-04-11 17:38:05 1342

原创 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 291

原创 【tcpdump 命令】

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

2024-04-02 09:44:50 588

原创 设备树语法

register虽然本意是寄存器,但是ARM系统中寄存器和内存是统一编址的,他们在访问上没有任何区别,所以reg用于描述一段空间,reg属性的值是一系列的address和size。dts文件不需要从头开始写,可以 通过include包含设备树模板,一般命名为XXX.dtsi文件,还可以包含一些.h文件,在.h文件中定义一些宏。此处的reg用于表示这是第几个CPU,设备不同reg属性的含义就不同。上例中表示寄存器的起始地址和大小,设备不同reg属性的含义就不同。

2024-03-30 23:25:04 852

原创 #!/bin/bash与 #!/bin/sh 傻傻分不清?

在Unix-like系统中,脚本语言通常使用所谓的shebang(或hashbang,符号为#!)来指定脚本解释器。它告诉系统应该使用哪个程序来解释和执行脚本。/bin/sh:这指定了脚本应当使用shell的sh版本来执行。sh是Bourne shell的缩写,是Unix系统中最初的脚本语言解释器。这个shebang一行告诉系统,该脚本是一个shell脚本,并且应当使用默认的shell来执行,通常是sh或bash(如果sh不可用)。

2024-03-22 11:51:48 205

原创 insmod与modprobe用哪个?

modprobe 和 insmod 是Linux系统中用于装载内核模块的两个不同的命令,它们各自有不同的用途和特点:。

2024-03-21 20:14:17 372

原创 apt相关命令大全

dpkg 是 Debian 的基础,但它的使用并不限于 Debian,其他如 Ubuntu 的系统中也有 dpkg,但通常在 APT 的封装下使用。年前鼓捣glibc debug版本好一阵,一直用到apt相关的指令,当时觉的很简单,不需要记录,用脑子记住就行,现在看来还是大意了,全忘完了,幸好现在又用到了,还有当时的记录,现总结如下。

2024-03-18 17:05:26 259

原创 内核代码中打印指针用%p行吗?

总结一下:没有指定扩展名的指针(即没有修饰符的%p)被哈希(hash)了,以防止内核内存布局消息的泄露。结果发现第二行的%p打印不出来,而是一个特定的字符串。很奇怪,开始百度之路。找到了一个介绍这个的。

2024-03-17 21:57:55 271

原创 Makefile

最近总是涉及Makefile,说说自己的感悟,现在大的工程Makefile都写好了,或者使用Cmake或者automake生成Makefile,如果要优化,也是看懂即可按自己的想法修改,但是如果需要自己写一个小的测试程序,还需自己懂如何写Makefile,从今天开始做一个Makefile总结,每有所学就记录在此。虽说网上多的是,但也不能全都照搬,我的目的是会用,而不是开培训班上课,但自己写下来带有自己思考的才能是自己的东西。

2024-03-13 08:14:09 176

原创 dl_iterate_phdr函数

需要注意的是,dl_iterate_phdr 是一个系统特定的函数,并不是所有的操作系统都提供这个函数。在某些平台上(如 macOS 11.1),这个函数可能是不存在的。该函数遍历共享对象列表,对每次共享对象调用一次回调函数,知道所有的共享对象都遍历完了或者返回一个非零值。dl_iterate_phdr 函数的主要作用是提供一种机制,让程序能够动态地获取到系统已经加载的所有共享库的信息。通过这个函数,程序可以在运行时进行自我分析或者进行某些操作,比如动态地修改共享库的行为。

2024-03-12 18:19:28 391

原创 开机预留内存的方法

可能会遇到需要开机时预先给用户态APP程序预留一部分内存供用户态程序使用。

2024-03-12 16:21:03 187

原创 【devmem2】

32bit值(WIDTH默认等于32, 可选值为[8, 16, 32, 64]):在地址0x97000000读取16bit值。写入:在地址0x97000000。32bit值0x7777ABCD。在地址0x97000000。现在还没使用,用到再更。

2024-03-10 20:51:38 280

原创 /proc/iomem 目录

proc/iomem 是一个虚拟文件系统,在 Linux 操作系统中用于显示内核映射的 I/O 内存地址空间。这个文件系统是只读的,并且提供了关于系统所有 I/O 内存映射的信息。其中 System RAM 对应的是DDR物理内存。其中通过缩进展示了包含关系。

2024-03-10 20:34:33 176 1

原创 xargs命令

grep是一个能接受标准输入作为参数,所以可以接受将标准输出转化为标准输入的管道命令。但有的不行比如echo。作用在于,大多数命令与管道一起使用时都需要xargs来将标准输入转化为命令行参数。找出所有 TXT 文件以后,对每个文件搜索一次是否包含字符串abc。

2024-03-09 22:40:54 186

原创 标准IO与系统IO

标准IO与系统调用IO。标准IO相关函数:fopen/fread/fwrite/fseek/fflush/fclose系统调用IO相关函数:open/read/write/lseek/fsync/close注:系统调用接口符合POSIX(Portable Operating System Interface for uinX-like system)规则,调用系统调用接口会陷入内核。标准IO为在系统IO基础上引出的函数,核心点为在调用系统IO前引入了用户Buffer。

2024-03-09 10:01:04 132

原创 【jiffies变量】

所以以jiffiy为单位,以当前时刻为基准计时2秒:(jiffies / HZ + 2) * HZ = jiffies + 2 * HZ。如此,可以通过jiffies获取一段时间,比如jiffies/HZ表示自系统启动的秒数。下两秒就是(jiffies/HZ+2)。参考链接:https://zhuanlan.zhihu.com/p/556944786。每秒中产生多少个定时器中断,由在<linux/param.h>中定义的HZ宏来确定。jiffies是内核中关于时间的一个重要概念,是内核时钟的基础。

2024-03-09 09:58:11 160

原创 TLB作用及工作原理

(这只是简单的理解,实际TLB分为硬件TLB或软件TLB,TLB可能在MMU中,也可能由操作系统实现)(TLB可以视作对页表的告诉缓存,所有有人说TLB是页表的cache)答:因为访问内存时通过MMU中的多级页表进行映射速度太慢了,当CPU对一块内存进行频繁访问时,没必要总是查MMU,这就引出了TLB,他能完成一个小区域虚拟地址到物理地址的直接映射,他很快。答:MMU是Memory Management Unit(内存管理单元),作用是完成从虚拟地址到物理地址的映射,映射功能是依靠MMU中的页表完成的。

2024-03-09 09:56:16 423

原创 Linux报 “illegal instruction” 异常的原因以及解决办法

当 Linux 上的程序收到 “Illegal instruction” 错误时,它表示正在尝试执行一种不支持的 CPU 指令,通常是由于使用了错误的 CPU 架构导致的。

2024-03-09 09:54:03 4330

原创 writel 与 ioremap

readl、writel、ioremap函数,前两种只是对寄存器的直接操作,适用于寄存器不多,操作频率不高的场合。而ioremap则主要应用在频繁访问较大的内存区域时使用。

2024-03-09 09:44:56 134

原创 sigaction函数与signal函数

/ 信号的处理函数// 用于SA_SIGINFO标志的信号处理函数// 信号屏蔽字,处理信号时会临时设置此屏蔽字// 控制信号处理方式的标志// 系统保留字段,不应使用sa_handler:这是信号的处理函数,当信号发生时,系统会调用这个函数。sa_sigaction:这是一个更高级的信号处理函数,它可以处理带有多参数的信号(如siginfo_t结构体中包含的额外信息)。如果设置了SA_SIGINFO标志,那么sa_handler字段会被忽略,而使用sa_sigaction作为信号处理函数。

2024-03-07 20:44:29 388 1

原创 火焰图FlameGraph

火焰图好几种,分On-CPU,Off-CPU,还有 Memory,Hot/Cold,Differential 等等,根据处理的场景不同做区分。

2024-03-04 11:26:15 419 1

原创 【git rebase 与 git cherry-pick】

通常,你需要使用 git add 命令来暂存更改,但是使用 -a 选项,Git 会自动暂存所有跟踪文件中的更改。-s:这个选项是 --signoff 的简写,它会在提交信息后面添加一个签名,表明作者的身份。-m “add rest functions”:这是提交信息的正文,说明了对项目的更改。命令用于只需某分支部分代码的改动(如果需要某分支全部代码则需要用git merge好吧)(后面若增加配置项-n,则仅仅会更改工作区和暂存区)。主要用于对当前分支的提交历史进行编辑,如将多个小的提交合并成大的提交。

2024-03-04 09:11:24 917 1

转载 【Linux Phy 驱动解析 (一)】

List item 用轮询/中断的方式通过 mdio 总线读取 phy 芯片的状态。在 phy link 状态变化的情况下,正确配置 mac 的状态。(例如:根据 phy 自协商的速率 10/100/1000M 把mac 配置成对应速率)以太网硬件主要分为MAC和PHY两块,他俩之间有两套接口,一个数据接口,一个管理接口,数据接口可能是管理接口为MDIO总线。

2024-01-18 00:10:04 480 1

原创 串口的空闲中断+DMA接收(附F4代码)

传统串口接受与发送:串口接受一个很长的帧,接受帧时依靠串口中断每次只能传输8位,传一个帧要进入好多次中断,每次进入中断都要判断是否接收完毕。DMA串口接收与发送:1,电脑通过串口1给STM32F407芯片发送数据(不定长,按照645格式来),芯片根据串口接收中断接收到数据后,通过DMA将数据存储在内存。当检测到数据接受完毕,产生接收完成标志位置位。当407检测到这个中断标志位后从TX端向电脑发送这段数据。任务拆分:1.检测到key0按下,由TX发送已经存在存储器的数据到电脑(用DMA存储器-&gt

2021-09-09 15:40:00 11953 2

空空如也

空空如也

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

TA关注的人

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