
Linux
文章平均质量分 76
“逛丢一只鞋”
这个作者很懒,什么都没留下…
展开
-
FFT频谱分析(补零、频谱泄露、栅栏效应、加窗、细化、频谱混叠、插值),Matlab、C语言代码
文章目录引言Matlab FFT函数频谱混叠栅栏效应细化技术什么是细化技术?细化FFT技术的应用:Zoom-FFT算法介绍及MATLAB实现Zoom-FFT根本没有实现“细化“?到底该怎么实现“细化”?补零补零对频谱的影响补零与离散傅里叶变换的分辨率补零与插值对FFT的影响频谱泄露信号的截断频谱泄露定义窗窗的概念常用窗函数如何选择“窗函数”?频谱泄漏的原因加窗应用(汉宁窗)加窗对频率和幅值的影响FFT变换的幅值和能量校正幅值修正谱能量修正谱转换的比例因子关系引言在对信号进行谐波分析的过程中,对时域信号进原创 2021-12-01 22:02:31 · 27056 阅读 · 7 评论 -
补零、插值后FFT变换的影响以及频率分辨率的理解
频率分辨率我们在对DTFT的频谱进行采样后自然会涉及到分辨率这个问题,频率分辨率的计算公式为:由于DFT是对DTFT频谱的采样,所以我们往往会认为频率分辨率与采样的点数即N有关,即采样点数越多,频率分布越密集,分辨率越高。而实际上对采集到的信号序列进行“高密度”的FFT变换时(即FFT变换的点数大于信号的点数),只是将确定的频谱分割的细一点,不能区分的频率仍旧不能区分。真正与频率的分辨能力有关的应该是谱线的宽度!我们用matlab显示频谱的时候,如果没有放大,几乎看不出谱线宽度的区别,实际上我们对任何信原创 2021-12-01 21:53:44 · 13008 阅读 · 1 评论 -
C语言总谐波失真(THD)实现,从理论到应用分析改进详解
文章目录引言测试信号生成THD分析代码引言从Matlab总谐波失真(THD)仿真到C语言总谐波失真(THD)应用对于如何实现THD,上篇文章中已经叙述的比较清晰,但是,正如结尾中表述,实际计算数据与理论数据差距过大,无法应用在实际的系统中。测试信号生成为了更好的分析THD,依然是生成一个测试正弦信号通过matlab生成,然后再去使用au软件进行处理M=8192*8;%fft采样点Fs=48000; %采样频率,一秒多少个采样点N=48000*4; %序列长度,总数据有多少个点f1=50;原创 2021-11-26 15:46:27 · 9959 阅读 · 2 评论 -
wav音频文件解析读取 定点转浮点分析 幅值提取(C语言实现)
文章目录引言音频编码音频编码基本原理频谱掩蔽效应时域掩蔽效应压缩编码方法音频采样音频量化PCM格式PCM 音频数据的存储PCM 音频数据的参数WAV格式WAV 格式定义WAV 文件头解析WAV解析定点数转换浮点数代码引言在之前的研究中,实现了arm平台C语言对FFT的频谱分析以及失真度测试从Matlab平台进行FFT到ARM平台C语言FFT频谱分析从Matlab谐波失真仿真到C语言谐波失真应用上述文章分析通过sine生成的信号,实际工作中需要解析外部传入的音频文件,然后再进行fft等操作音频编码原创 2021-11-25 10:26:54 · 6499 阅读 · 3 评论 -
C语言函数如何正确返回数组?
一个错误的例子#include<stdio.h>int* function(){ int a[5]; a[0] = 1; a[1] = 2; a[2] = 3; return a;}int main(){ int* b; b = function();// printf("123\n"); printf("第一次%d%d%d%d\n",b[0],b[1],b[2],b[3]); printf("第二次%d%d%d%d\n",b[0],b[1],b[2],b[3]);转载 2021-10-20 14:04:30 · 19305 阅读 · 2 评论 -
C语言读取写入 ini 配置文件
文章目录一、了解什么是INI文件?二、INI文件的格式三、解析上述文件四、测试如下一、了解什么是INI文件?ini 文件是Initialization File的缩写,即初始化文件,这是用来配置应用软件以实现不同用户的要求。二、INI文件的格式INI文件由节、键、值组成。一个简单的的INI文件例子如下:[Setting]INIT_FLAG=0;VOLUME=1;LANGUAGE=1;如上例子,[Setting]就是节,=号左边的值是键,=号右边的是值。三、解析上述文件/*ini.h原创 2021-10-17 13:41:08 · 8349 阅读 · 2 评论 -
Linux设备模型 Bus, Class, Device和Device Driver的概念
文章目录Bus, Class, Device和Device Driver的概念设备模型的核心思想Bus, Class, Device和Device Driver的概念硬件拓扑描述Linux设备模型中四个重要概念中三个:Bus,Class和Device(第四个为Device Driver,后面会说)。Bus(总线):Linux认为(可以参考include/linux/device.h中struct bus_type的注释),总线是CPU和一个或多个设备之间信息交互的通道。而为了方便设备模型的抽象,所原创 2021-09-30 14:04:22 · 2152 阅读 · 0 评论 -
重温四大基础数据结构:数组、链表、队列和栈
文章目录前言数组链表队列栈前言数组、链表、队列、栈,是数据结构中最基础的四大结构,数组和链表更是基础中的基础,后续所有复杂的数据结构都是在它们的基础上演变而来的。本节,我们就来重温这四大结构。数组关于数组,大家都比较熟悉了。它是一种线性数据结构,使用一组连续的内存空间存储一组具有相同类型的数据。这个概念中有三个关键词:线性、连续、相同类型。线性,表示没有分叉,任意元素的前后元素最多只有一个,同样是线性结构的还有链表、队列等。连续,它在内存空间中的存储是连续的,不间断的,前后两个元素紧挨着转载 2021-09-06 15:43:53 · 2127 阅读 · 0 评论 -
嵌入式Linux | 核心板 自制底版不启动问题排查及解决(飞凌iMX6q为例)
文章目录前言USB转网口供电模块电容极性反接Boot Mode拨码Debug串口检查核心板工作条件核心板低压区前言项目中需要对底版进行裁剪重新绘制采用了飞凌的嵌入式核心板iMX6q型号底版经过重新设计之后,插上核心板,发现底版没有任何反应Debug调试接口没有任何的打印信息U-Boot都没有正常启动,现在开始排查USB转网口供电模块电容极性反接板子不能正常启动,首先就是要排查电压的问题电容或者有极性器件有没有接反果然,usb转网口的供电 出现了问题,电容因为SMT下单过程中排查疏忽,接反原创 2021-09-03 19:00:26 · 1386 阅读 · 0 评论 -
嵌入式通信必会知识点 C/C++内存对齐(详解)
1、什么是内存对齐还是用一个例子带出这个问题,看下面的小程序,理论上,32位系统下,int占4byte,char占一个byte,那么将它们放到一个结构体中应该占4+1=5byte;但是实际上,通过运行程序得到的结果是8 byte,这就是内存对齐所导致的。//32位系统#include<stdio.h>struct{ int x; char y;}s;int main(){ printf("%d\n",sizeof(s); // 输出8 retur转载 2021-09-03 16:49:05 · 503 阅读 · 0 评论 -
C语言开发必会 宏定义、宏函数
文章目录宏定义宏函数宏定义之闰年判断宏定义宏定义是C中三种预处理方式(宏定义、文件包含、条件编译)的一种,只做替换、不求解。宏定义分为有参宏定义和无参宏定义两种。应特别注意有参宏定义的括号问题。c语言编译工具会在预处理阶段,将宏名替换为字符串。所以,我们可以把宏定义理解为,发生在程序编译之前的字符串替换操作。#include<stdio.h>#define VAL 2.5int main(){ float res = VAL*2; printf("%.2f\n",原创 2021-09-03 16:44:31 · 3495 阅读 · 0 评论 -
嵌入式Linux永久修改MAC和IP(特别适用多个网卡设计)
板子上根据设计需求设计了四个网口其中三个是从USB hub扩展来的使用了USB转网口的芯片因为没有USB转网口电路中EEPROM的烧写工具,所以没有办法直接固化到里面MAC地址和IP之类的信息所以要通过Linux的ifconfig进行配置先介绍一种临时更改的方法临时更改所谓临时更改,是指在重新启动系统后就失效的短期更改方法,较简单。Linux网卡的物理地址设置是在网络设置时进行的。首先确定你在使用root用户。假设对eth0进行设置。对要修改MAC的网卡先“关闭”ifconfig e原创 2021-09-03 15:25:43 · 3978 阅读 · 0 评论 -
嵌入式Linux测试USB接口读写速度
嵌入式Linux板子设计了一个USB Hub,然后扩展出来的USB现在要测试一下USB的性能是不是达到了设计标准使用的方法是从U盘读取一个比较大的文件,然后看读写时间找到U盘插上U盘ls /media里面的sda1就是我们挂载的U盘然后查看里面的内容使用time命令time cp ./'Adobe Acrobat DC 2020 SP.rar' /work复制文件 ‘Adobe Acrobat DC 2020 SP.rar’ 到板子的目录/work下最后可以看到读原创 2021-09-03 14:51:07 · 1641 阅读 · 0 评论 -
分布式存储 基础知识储备学习
文章目录Linux内存管理进程如何使用内存?进程如何组织这些区域?内核空间和用户空间进程内存空间接着分布式存储面试的学习,把Linux基础知识,内部的一些东西也都系统的学习一下Linux内存管理进程如何使用内存?毫无疑问,所有进程(执行的程序)都必须占用一定数量的内存,它或是用来存放从磁盘载入的程序代码,或是存放取自用户输入的数据等等。不过进程对这些内存的管理方式因内存用途不一而不尽相同,有些内存是事先静态分配和统一回收的,而有些却是按需要动态分配和回收的。对任何一个普通进程来讲,它都会涉及到5种原创 2021-08-22 17:14:28 · 846 阅读 · 0 评论 -
QT Linux平台屏蔽按键事件(installEventFilter使用) 自定义拦截按键输入
文章目录背景焦点focusfocusPolicykeypress和keyreleaseinstallEventFilter重写事件过滤器过滤组件的按键事件最终效果Qt是一个跨平台开发的框架,可以实现一套代码多平台编译运行。但是有时候我们想实现的功能却和平台深度挂钩,比如本文想要描述的键盘钩子,也就是KeyBoard Hook。在Windows平台开发时,如果我们需要监听键盘的操作或者屏蔽一些键盘操作时,比较容易的办法就是使用Windows 自带的API,包含SetWindowsHookEx、CallNe原创 2021-08-19 18:22:39 · 3861 阅读 · 0 评论 -
QT程序 与 Linux应用程序 进程间数据通信实例(TCP/IP方案)
Qt 提供了四种进程间通信的方式:使用共享内存(shared memory)交互:这是 Qt 提供的一种各个平台均有支持的进程间交互的方式。TCP/IP:其基本思想就是将同一机器上面的两个进程一个当做服务器,一个当做客户端,二者通过网络协议进行交互。除了两个进程是在同一台机器上,这种交互方式与普通的 C/S 程序没有本质区别。Qt 提供了 QNetworkAccessManager 对此进行支持。D-Bus:freedesktop 组织开发的一种低开销、低延迟的 IPC 实现。Qt 提供了 QtDB原创 2021-08-16 20:40:53 · 5541 阅读 · 1 评论 -
Linux I2C 驱动 24C256 E2PROM
文章目录I2C 总线驱动I2C 设备驱动i2c_client 结构体i2c_driver 结构体I2C 设备和驱动匹配过程1、i2c_adapter 注册/注销函数2、i2c_driver 注册/注销函数I.MX6q 的I2C 适配器驱动分析I2C 总线驱动之前类似于input输入设备都是挂载在platform总线上,platform 是虚拟出来的一条总线,目的是为了实现总线、设备、驱动框架。对于I2C 而言,不需要虚拟出一条总线,直接使用I2C总线即可。I2C 总线驱动重点是I2C 适配器(也就是原创 2021-08-01 14:46:08 · 2712 阅读 · 8 评论 -
Linux AT24C256芯片 数据手册解读
文章目录AT24C256 地址AT24C256页AT24C256写操作AT24C02读操作注意AT24C256 地址前四位(1010)是固定的,A2, A1, A0 与硬件连接有关系,外部输入电压为高时是1,外部电压输入为低是0。本设计中A2, A1, A0都是接地,所以我的设备地址是1010000X,也就是10100000 或10100001。最后一位R/W是读写位,读操作时为0,写操作时为1。对于linux IIC子系统,读写位驱动会自动添加,实际设备地址位高七位 1010000B 也原创 2021-07-28 14:17:46 · 8869 阅读 · 3 评论 -
Linux 查看设备树关系 方便好用的tree命令
官网下载http://mama.indstate.edu/users/ice/tree/打开makefile,可能需要稍微修改一下makefile文件,使用自己的j交叉编译器make交叉编译后复制交叉编译后得到的可执行文件tree,放到板子的/bin/文件夹下方可使用...原创 2021-07-27 18:09:02 · 1127 阅读 · 0 评论 -
嵌入式Linux 使用iperf3同时压力测试4个网口 解决方案
文章目录iperf介绍安装iperf被测Linux板子PC主机iperf使用Linux网口初始化配置同时测试4个网口网络性能Linux板子linux后台运行和关闭、查看后台任务fgctrl + zkillbgwindows 电脑结果iperf介绍iperf是一种命令行工具,用于通过测量服务器可以处理的最大网络吞吐量来诊断网络速度问题。它在遇到网络速度问题时特别有用,通过该工具可以确定哪个服务器无法达到最大吞吐量。安装iperf被测Linux板子板子是Linux环境,一般情况都会有iperf3,在原创 2021-07-27 09:48:00 · 9376 阅读 · 2 评论 -
Linux 输入设备 自定义键盘 input输入子系统 gpio-keys按键驱动
文章目录nano /proc/bus/input/devices原创 2021-07-21 19:13:28 · 6204 阅读 · 3 评论 -
WSL2 BIOS已经开启了VT-x 但windows内安装显示不支持
WSL 2兼容性问题WSL 2与VMWare(或其他使用Intel VT-x技术的虚拟机)虽然可以一起运行,但是安装WSL2后不禁用虚拟平台的话无法安装采用VT-x技术的软件(比如Android Studio自带的虚拟机以及VMWare等)为了安装安卓虚拟机在这里折腾好久,明明bios已经开启了VT-x但是windows内安装死活都说不支持。其实只要在安装需要VT-x支持的软件时关闭虚拟平台,安装后再开启就可以了。如需使用VMWare等软件那么需要执行如下命令禁用虚拟平台Disable-Windo原创 2021-07-21 16:26:14 · 3761 阅读 · 0 评论 -
Linux LED子系统调试与应用 设备树官方文档与 gpio-leds.c 源码详解
文章目录查看官方说明文档①、Required properties②、gpiosGPIO说明文档③、label查看官方说明文档打开文档Documentation/devicetree/bindings/leds/leds-gpio.txtnano ./Documentation/devicetree/bindings/leds/leds-gpio.txt此文档详细的讲解了Linux 自带驱动对应的设备树节点该如何编写LEDs connected to GPIO linesRequired原创 2021-07-17 11:18:32 · 6284 阅读 · 1 评论 -
Linux debugfs使用分享 软件查看gpio状态
文章目录查看gpio状态查看regulator查看clk在调试中加入debugfs有时可以起到事半功倍的效果:adb shell mkdir data/mkdir debug/创建完成目录 /data/debug 之后运行指令mount -t debugfs debugfs /data/debug可以看到安装的内容ls /data/debug 查看gpio状态cat gpio查看regulatorls /data/debug/regulator/查看clk c原创 2021-07-16 14:50:00 · 414 阅读 · 0 评论 -
Linux 设备树 status 详解
device tree中的status标识了设备的状态,使用status可以去禁止设备或者启用设备,看下设备树规范中的status可选值valueDescription“okay”表示设备正在运行“disabled”表示该设备目前尚未运行,但将来可能会运行“fail”表示设备无法运行。 在设备中检测到严重错误,确实如此没有修理就不可能投入运营“fail-sss”表示设备无法运行。 在设备中检测到严重错误,它是没有修理就不可能投入运营。 值的sss部分特定于设备原创 2021-07-15 16:44:40 · 3242 阅读 · 0 评论 -
I2S音频总线介绍
文章目录Inter-IC Sound说明I2S有3个主要信号(数据线)数据格式数据存储PCM / I2S / AC97/PDM1.PCM(脉冲编码调制)2.I2S3.AC974.PDM(脉冲密度调制)Inter-IC SoundI2S(Inter-IC Sound)总线, 又称 集成电路内置音频总线,是飞利浦公司为数字音频设备之间的音频数据传输而制定的一种总线标准,该总线专门用于音频设备之间的数据传输,广泛应用于各种多媒体系统。它采用了沿独立的导线传输时钟与数据信号的设计,通过将数据和时钟信号分离,避免原创 2021-05-31 14:05:31 · 9485 阅读 · 0 评论 -
Linux MPlayer使用手册
播放文件使用 MPlayer 播放媒体文件最简单的方式是:mplayer <somefile>MPlayer 会自动检测文件的类型并加以播放,如果是音频文件,则会在命令行中显示该播放文件的状态信息;而假如是视频文件的话,则会打开一个新的播放窗口。倒退与快进在播放文件的时候,你可以通过以下三组快捷键来对播放进程进行倒退与快进操作:左方向键和右方向键:分别执行倒退 10 秒和快进 10 秒操作下方向键和上方向键:分别执行倒退 1 分钟和快进 1 分钟操作下翻页键和上翻页键:分别执行转载 2021-05-31 11:35:13 · 3595 阅读 · 0 评论