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

随心所欲,不逾矩

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

原创 mmap函数小实验

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

2024-04-16 15:30:17 876

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

原创 AVB概述

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

2024-04-11 17:38:05 986

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

原创 【tcpdump 命令】

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

2024-04-02 09:44:50 573

原创 设备树语法

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

2024-03-30 23:25:04 798

原创 #!/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 137

原创 insmod与modprobe用哪个?

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

2024-03-21 20:14:17 310

原创 apt相关命令大全

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

2024-03-18 17:05:26 243

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

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

2024-03-17 21:57:55 219

原创 Makefile

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

2024-03-13 08:14:09 171

原创 dl_iterate_phdr函数

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

2024-03-12 18:19:28 226

原创 开机预留内存的方法

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

2024-03-12 16:21:03 157

原创 【devmem2】

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

2024-03-10 20:51:38 213

原创 /proc/iomem 目录

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

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

原创 xargs命令

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

2024-03-09 22:40:54 179

原创 标准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 120

原创 【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 145

原创 TLB作用及工作原理

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

2024-03-09 09:56:16 206

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

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

2024-03-09 09:54:03 1346

原创 writel 与 ioremap

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

2024-03-09 09:44:56 105

原创 sigaction函数与signal函数

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

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

原创 火焰图FlameGraph

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

2024-03-04 11:26:15 391 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 864 1

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

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

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

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

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

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

原创 FSMC驱动TFTLCD原理详解

摘要:FSMC是什么,有啥用,比直接IO控制的好处,如何控制TFTLCD文章目录1、通信接口介绍80并口介绍4线串行SPI介绍2、ILI9341 液晶控制器1、通信接口介绍80并口介绍4线串行SPI介绍2、ILI9341 液晶控制器1)自带显存2)操作方式3)指令介绍4)基本使用流程3、FMSC-灵活的静态存贮控制器1)框图4、可以把 TFTLCD 当成 SRAM 设备用5、STM32 的 FSMC和外部存储器划的映射6、地址匹配1、通信接口介绍1)80并口介绍8080 并

2021-08-15 19:23:19 3451 4

转载 KILE无法软件仿真

问题描述:STM32F407ZGT的板子想使用仿真器调试设置如下图:,然后点击调试按钮,点击全速运行,无法进入main函数,卡在下图所示位置:此时我怀疑是Dialog.DLL和Parameter参数设置错误,所以查找kile官方Debug文档,说实话找了半天没找到,然后又重新修改问题名称,重新搜索并找到了一篇相同问题的博文,然后在下图位置添加 .ini内存配置文件。发现正点原子有一个 .ini 内存配置文件,如下图,我按照博主的做法操作了一番,发现无法调试,那正点原子这个ini文件是干啥用的

2021-08-12 13:11:57 433

原创 SPI _FLASH芯片W25Q16配置FATFS

一、SPI FLASH芯片能干啥有哪些种类存放数据。SPI FLASH普遍比EEPROM大得多。所以容量SPI FLASH占优势。但是价格,EEPROM占优势.1、IIC EEPROM------容量小,采用的是IIC通信协议;用于在掉电时,存系统配置参数,比如屏幕亮度等。常用芯片型号有 AT24C02、FM24C02、CAT24C02等,其常见的封装多为DIP8,SOP8,TSSOP8等;2、SPI NorFlash------容量略大,采用的是SPI 通信协议;用于存放程序和数据。程序和数据可存放

2021-08-02 18:20:46 7835

原创 SPI通信原理

因为项目需要,学习了一下SPI,避免遗忘,特此记录。一、SPI概述SPI是串行外设接口 (Serial Peripheral Interface) 的缩写。是 Motorola 公司推出的一种同步串行接口技术,是一种高速的,全双工,同步的通信总线。SPI 接口主要应用在 EEPROM,FLASH,实时时钟,AD 转换器,还有数字信号处理器和数字信号解码器之间。SPI没有指定的流控制,没有应答机制确认是否接收到数据,所以跟IIC总线协议比较在数据可靠性上有一定的缺陷。二、SPI接线SPI 接口一般使

2021-07-16 16:18:08 5679 1

原创 STM32F103定时器(未完待续)

STM32F103定时器分类及区别共有8个定时器,它们是:TIM1~TIM8。STM32的定时器分为基本定时器、通用定时器和高等定时器。TIM6、TIM7(基本定时器):基本定时器是只能向上计数的16位定时器,基本定时器只能有定时的功能,没有外部IO口,所以没有捕获和比较通道。TIM2、TIM3、TIM4、TIM5(通用定时器):通用定时器是可以向上计数,也可以向下计数的16位定时器。通用定时器可以定时、输出比较、输入捕捉,每个通用定时器具有4个外部IO口。TIM1、TIM8(高级定时器):高级定时

2021-07-13 00:02:07 4102 1

转载 STM32窗口看门狗

一、介绍STM32看门狗分为独立看门狗和窗口看门狗两种,两者使用调条件如下所示:IWDG和WWDG两者特点如下图所示:二、WWDG原理介绍寄存器控制寄存器(WWDG_CR),只有低八位有效。WDGA 位则是看门狗的激活位。T[6:0] 是7 位计数器 (MSB 到 LSB),这些位用来存储看门狗计数器的值,它每隔PCLK1 个周期递减一次。当它从 0x40 滚动到 0x3F(T6 清零)时会产生复位。配置寄存器(WWDG_CFR),位9EWI:提前唤醒中断 ,位 8:7 计数器时钟分频器

2021-07-11 16:41:33 1081

转载 STM32看门狗简述

概述看门狗一般分为硬件看门狗和软件看门狗,主要用来解决程序CPU异常,程序跑飞挂死等问题,提高系统的可靠性。硬件看门狗是利用一个定时器电路,其定时输出连接到电路的复位端,程序在一定时间范围内对定时器清零(俗称“喂狗”),因此程序正常工作时,定时器总不能溢出,也就不能产生复位信号。如果程序出现故障,不在定时周期内复位看门狗,就使得看门狗定时器溢出产生复位信号并重启系统。软件看门狗原理上一样,只是将硬件电路上的定时器用处理器的内部定时器代替,这样可以简化硬件电路设计,但在可靠性方面不如硬件定时器,比如系统内

2021-07-08 21:48:41 5174

原创 串口 COM口 TTL RS-232 RS-485 区别(转载)

Point:1、串口、COM口是指的物理接口形式(硬件)。而TTL、RS-232、RS-485是指的电平标准(电信号)。2、接设备的时候,一般只接GND RX TX。不会接Vcc或者+3.3v的电源线,避免与目标设备上的供电冲突。3、PL2303、CP2102芯片是 USB 转 TTL串口 的芯片,用USB来扩展串口(TTL电平)。4、MAX232芯片是 TTL电平与RS232电平的专用双向转换芯片,可以TTL转RS-232,也可以RS-232转TTL。5、TTL标准是低电平为0,高电平为1(+5

2021-07-07 12:25:08 1222

空空如也

空空如也

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

TA关注的人

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