草庐IT

信号时延估计算法—Gcc-Phat原理及实现

前言    基于TDOA(到达时间差)作为被广泛应用的声源定位算法之一,其核心即需要估计信号之间的时延,然后通过解方程组获取声源的位置。而广义互相关(GeneralizedCrossCorrelation)是估计时延的常用算法之一,接下来总结一下该算法。信号传播时延     如上图所示,一声源经过时间、分别到达麦克风1和麦克风2,则两个麦克风接收的信号可以表示为:即为信号到达两个麦克风之间的时延。互相关算法   先来看一下互相关计算时延的模型:   将信号带入上述模型:   假设与、均互不相关,则可得到(具体步骤不再赘述,感兴趣的可以自己展开推导一下):    然后假设、是互不相关的高斯白噪声

【ARM 嵌入式 编译系列 4.2 -- GCC 链接规范 extern “C“ 介绍】

文章目录extern"C"介绍extern"C"使用示例1.2.2作用场景上篇文章:ARM嵌入式编译系列4.1–GCC编译属性likely与unlikely学习下篇文章:ARM嵌入式编译系列5–GCC内建函数__builtin介绍extern“C”介绍extern“C”是一种链接规范,它用于告诉C++编译器按照C语言的方式来链接代码。这个关键字主要用于在C++代码中调用C语言的函数库。C++语言对函数进行了名字修饰(NameMangling),也就是说,C++编译器在编译函数的时候会给函数的名字添加一些额外的信息,例如函数的参数类型和数量。这样做的目的是为了支持函数的重载。然而,C语言不支持函

遇到“c++: 错误:unrecognized command line option ‘-std=c++17’”,CentOS升级GCC版本以支持c++17

编译时遇到问题:c++:错误:unrecognizedcommandlineoption‘-std=c++17’原因:GCC版本太低(CentOS7直接yum安装的GCC版本为4.8.5)参考:Linux怎样更新Centos下Gcc版本支持C++17?解决方案:#GCC升级到8以上版本(修改8更换其他版本)sudoyuminstallcentos-release-sclsudoyuminstalldevtoolset-8-gcc*sclenabledevtoolset-8bashsource/opt/rh/devtoolset-8/enable#替换软连接(不执行的话,尽管查看版本升级了,但仍

【ARM 嵌入式 编译系列 2.1 -- GCC 编译参数学习】

文章目录1.1GCC编译参数1.1.1GCCarm-noe-eabi-介绍1.1.1.1ARM和Thumb指令集区别1.1.2GCCCFLAGS介绍1.1.3GCCLDFLAGS介绍1.1.4CXXFLAGS介绍上篇文章:ARM嵌入式编译系列2–GCC编译过程介绍下篇文章:ARM嵌入式C入门及渐进3–GCCattribute((weak))弱符号使用1.1GCC编译参数上篇文章ARM嵌入式编译系列2–GCC编译过程介绍已经介绍过了具体的编译流程,本篇文章主要介绍变过程中常见的一些编译参数

【Ubuntu20.04】安装gcc11 g++11, Ubuntu18.04

#查看当前使用的gcc版本命令:gcc-v#更新软件源指令:sudoapt-getupdate#更新软件指令:sudoapp-getupgrade#添加相应的源sudoadd-apt-repositoryppa:ubuntu-toolchain-r/test#更新软件源指令:sudoapt-getupdate#卸载已有gccsudoaptremovegcc-9g++-9#运行以下命令来清理已卸载软件包的残余文件和依赖项:sudoaptautoremove#安装最新版gccsudoapt-getinstallgcc-11g++-11#使用以下命令将/usr/bin/gcc符号链接指向GCC11的

gcc-buildroot-9.3.0 和 gcc-arm-10.3 的区别

gcc-buildroot-9.3.0和gcc-arm-10.3是两个不同的GCC(GNUCompilerCollection)版本,主要用于编译C、C++和其他语言的程序。它们之间的区别主要体现在以下几个方面:版本号:gcc-buildroot-9.3.0对应的是GCC9.3.0版本,而gcc-arm-10.3对应的是GCC10.3版本。版本号的增加通常意味着修复了一些bug、改进了性能,并且可能引入了新功能和语言特性。构建环境:gcc-buildroot-9.3.0是为Buildroot环境而构建的,Buildroot是一个用于自动化嵌入式Linux系统构建的工具。而gcc-arm-10.

GCC - 基于win10平台搭建Cmake + MinGW + gcc-arm-none 开源开发环境

前言基于GUN开源工具链,搭建Windows平台下ARM编译运行环境!🐱‍🚀文中涉及的开发工具包已打包上传,可点击此处下载。文章速览前言一、安装git-bash二、安装MinGW-w6432位下载地址:  [MinGW-MinimalistGNUforWindows](https://sourceforge.net/projects/mingw/)64位下载地址:  [MinGW-MinimalistGNUforWindows](https://sourceforge.net/projects/mingw-w64/files/mingw-w64/mingw-w64-release/)2.1Mi

Linux升级GCC/G++操作步骤

现在运行C++程序对于G++编译器要求版本提高,centos7默认G++版本为4.8.5,需要将G++版本升级到高版本,以下以G++12.0.1为例。1、下载GCC包方式一  GCC-12.1.0 方式二:命令:wget  (Linux下载文件命令)  格式:wget+空格+参数+文件路径        wget[OPTION]…[URL]…       例:wget http://mirrors.ustc.edu.cn/gnu/gcc/gcc-8.2.0/gcc-8.2.0.tar.gz  参数:-c 端点续传功能        例:wget-chttp://mirrors.ustc.edu

【ARM 嵌入式 编译系列 6 -- GCC objcopy, objdump, readelf, nm 介绍】

文章目录GCCobjcopy简介objcopy常用参数GCCobjdump简介GCCreadelf介绍GCCnm介绍上篇文章:ARM嵌入式编译系列5–GCC内建函数__builtin详细介绍下篇文章:ARM嵌入式编译系列7–ARMGCC链接脚本详细讲解GCCobjcopy简介objcopy是GNU二进制工具集(binutils)的一部分,主要用于复制和转换目标文件。在ARMGCC中,arm-none-eabi-objcopy通常用于从链接后的ELF格式文件中提取出二进制文件或其他格式的内容,这对于嵌入式开发特别有用,因为这样的文件可以直接烧写到微控制器的闪存中。objcopy常用参数下面是一些

vscode+gcc+jlink调试mcu程序(用于替代IDE)

一、前言几年前写过一篇类似的文章,那时是用于调试rtthread系统:使用VSCode、arm-none-eabi-gdb、J-LinkGDBServer调试RTThread。当时有关vscode和gcc调试MCU的文章很少,所以只是写了个大概。最近又遇到了类似的问题,网上搜了一些资料,发现此方面的内容已经比较成熟了,借鉴了一些资料来完善自己这方面的知识。参考资料:1、GD32F307VC+WIN10+VSCODE+GCC+JLINK环境build。2、stm32的调试工具:vscode下jlink或stlink下载及调试+设置快捷键二、Makefile配置基础Makefile模板使用STM3