自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(42)
  • 收藏
  • 关注

原创 c/c++传值和传引用的区别

函数中只是被复制了一份,对复制的值的增加不会影响到原来的。函数接受一个指向整数的指针,通过这个指针可以直接修改。函数中使用的是传值方式传递参数,所以。的值,可以通过传递指针的方式修改。这段代码的目的是增加。这个修改后的版本中,的操作就会直接影响到。

2024-04-28 17:39:24 177

原创 core dump进行gdb调试的时候提示no debugging symbols found

gdb调试的时候提示如下:no debugging symbols found,这说明可执行文件编译时没有包含了调试符号,所以需要修改makefile,编译时要-g。CFLAGS = $(INCLUDES) -g -Wall -march=mips32r2(改为这个)修改makefile如下。

2024-04-23 14:31:38 155

原创 注意libaudioProcess.so和libdevice.a是不一样的,一个是动态链接,一个是静态

libaudioProcess.so是动态链接,修改需要改根文件系统,需要bsp重新配置。libdevice.a是静态链接,直接替换就行。然后执行fw_update.sh。

2024-04-22 17:04:49 221

原创 君正dsp开发注意点

其中 60 是音量设置的一个临界点,在这个值上软件不对音量做增加或减小,当音量值小于 60 时,每下降 1,音量减小 0.5dB;当音量值大于60 时,每增加 1,音量增加 0.5dB。其中 60 是音量设置的一个临界点,在这个值上软件不对音量做增加或减小,当音量值小于 60 时,每下降 1,音量减小 0.5dB;当音量值大于60 时,每增加 1,音量增加 0.5dB。如果 AEC 开启了,就无需再调用单独开启 AGC,NS,HPF 的函数了,因为配置文件中使能了的话,就直接在 AEC 中进行处理数据。

2024-04-22 08:56:07 151

原创 结构体指针

所以p_stu->age = stu.age;是可以连等的,只是结构体的指针和数据的两种不同表示方式,其实都是代表一个数据。

2024-04-21 22:48:35 52

原创 音视频开发常用名词

较长的GOP长度意味着更多的帧依赖于之前的帧进行解码,可以实现更高的压缩率,但也可能增加解码的延迟和错误传播的风险。较高的码率可以提供更高的图像质量,因为更多的数据被用来表示视频的细节,但也会导致更大的文件大小和更高的传输成本。在数字视频中,码率决定了视频的质量和文件大小,因为更高的码率通常意味着更高的图像质量和更大的文件大小。具体来说,较低的QP值会导致更精细的量化和更高的图像质量,但也会产生更大的码率。相反,较高的QP值会导致粗糙的量化和较低的图像质量,但可以获得更高的压缩率。

2024-04-21 12:58:14 418 2

原创 c语言指针相关的用法理解

通过传递指向指针的指针,函数可以修改指针的内容,从而改变调用函数中指针的值。0.指针本身占4个字节(32位操作系统),u32 * p和u8*p,其中的u32 *,u8 *指的是指针指向的地址的数据的解析方式。1.u32 * p和u8*p都是指向一个地址,不同的只是对地址的解析方式不同,如下的。使用方法是对的,都是指向一个地址,只是对地址的中存放的数据的解析方式不一样。根据你的需求和数据类型,你可以选择使用适当类型的指针。指向的是一个32位无符号整数的内存地址。指向的是一个字节的内存地址。

2024-04-19 19:43:40 194

原创 读书笔记目录

1.

2024-04-04 21:25:19 72

原创 终端操作命令合集

【代码】终端操作命令合集。

2024-03-29 14:16:21 98

原创 Linux命令

【代码】Linux命令。

2024-03-29 14:15:03 88

原创 audacity导出不同采样率和bit和格式的音频文件

2024-03-29 11:59:47 159

原创 使用while (i--)时候计时不准,有可能是编译器优化了,加上volatile能解决问题

2024-03-15 16:17:06 85

原创 音频数据如果在中断中会随机给的那就放入队列或者缓冲区;队列缓冲区对音频的作用

回采的数据是在中断函数au0_dma_isr_data_output里面给的,而给算法的时候是在主程序karaok_sdadc_process,这样子就会出现中断给的数据和当前的mic帧不匹配,或者说每次的差值不一定,算法就会有问题,解决办法是讲回采数据放入队列,给个缓冲区来循环取放值,这样子缓存去的数据先进先出,就可以实现存取长时间的数据,在这长时间的情况下,一定能轮到另外一边主程序karaok_sdadc_process运行,以拿到数据。错误模型如下,没加循环缓存。正确模型如下,加循环缓存。

2024-03-15 10:25:29 646

原创 c语言宏定义中涉及到运算一定要加括号,不然展开会有出错的风险

2024-03-08 14:16:55 103

原创 单片机的boot升级和双备份升级

同时boot升级还会有一个策略来防止单片机变成砖:就是boot的升级程序写在boot中,这个部分的的升级程序是不会改动的,如果检测到升级失败,会一直等待,直到升级正确的程序。

2024-03-06 15:42:11 149

原创 m++和++m

2024-02-29 16:03:50 238

原创 中科蓝讯板子中段打印注意事项

如下,au0_dma_isr_data_output是会在中断中调用的,所以打印这里参数必须要放到.com区。错误示范:其中%d\n没有放到.com区,系统会一直重启。正确示范:将打印放到.com区。

2024-02-22 14:04:24 191

原创 嵌入式面试合集

【嵌入式面试】2022年嵌入式经典面试题汇总(C语言)_嵌入式软件面试题-CSDN博客

2024-02-21 20:09:41 76

原创 添加adb功能;添加lrzsz工具;添加core dump的gdb分析功能

core dump文件复制到linux,执行gdb指令,注意,gdb需要和你的编译工具链配合,如我的编译工具链是/opt/rockchip-linux/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-gcc。首先在rcS文件里面添加如下指令,使得在启动应用程序之前,先打开core dump功能,并指定core dump保存的地址和大小,设置完后,当产生错误,程序会产生。添加core dump功能。

2024-02-02 21:38:46 169

原创 注意,问gpt应该问的是嵌入式Linux系统上干嘛干嘛,如下载源码,交叉编译,不该是Linux上面,不然回给出ubantu这种牛逼的操作系统,和平时的开发不相符合

不该是Linux上面,不然回给出ubantu这种牛逼的操作系统,和平时的开发不相符合。注意,问gpt应该问的是。嵌入式Linux系统。

2024-02-02 20:47:59 91

原创 rcS文件详解

1.rcS文件里面指定了开机之前要运行的一些终端操作,如d40运行应用程序hunter,所以要添加在运行应用程序之前要运行的指令,可以在此添加。2.同时在rk3308里面也有这个文件,地址是etc/init.d/rcS,也可以通过vi直接在芯片上面修改。

2024-02-02 17:20:30 186

原创 Linux终端指令集

是一个常用的 Linux 命令,用于以长格式列出目录中的文件和文件夹,并显示它们的详细信息,包括权限、所有者、大小等。将以长格式列出目录中的所有文件和文件夹,并以人类可读的方式显示它们的大小。这对于查看文件的权限、所有者、修改日期、大小等信息非常有用。命令,你可以查看目录中的所有文件和文件夹,并获取有关它们的详细信息。df -h 以人类可看懂的方式显示Linux各个文件夹可用的空间。

2024-02-01 21:03:57 109 1

原创 信号量同步数据,实现d40的speark提示音和播放数据流同步;不阻塞的进程需要注意了

注意信号量初始化应该为0,这样子在awi_audio2_speaker_proc准备好可以开始awi_alsa_play2_write的时候,在给出满信号量,实现数据的开始同步。线程严禁在做一些简单的判断标志位的操作同时,去在其他的线程改变标志位。信号量同步数据,实现d40的speark提示音和播放数据流同步。其他:线程严禁不加阻塞。

2024-02-01 17:21:12 198 1

原创 死锁的程序例子

【代码】死锁的程序例子。

2024-01-31 14:09:00 112 1

原创 反汇编操作, 找出错误的地址对应的函数;以及添加错误堆栈打印函数后怎么使用addr2line -e hunter.debug 0x40b180

3.在刚刚烧录的文件对应的hunter文件,执行如下操作 ,得出反汇编文件hunter1_elf。然后反汇编文件中通过地址可以找出相应的函数,这里可以看出是失败了,没有找出,正常是会有找出的。2.烧录代码运行后看到错误打印如下。1. 需要在代码中加入,并编译。当然也可以在服务器通过指令。来定位具体问题出在哪个函数。

2024-01-30 21:56:26 284 1

原创 d40注意如果一个线程非常频繁访问一个变量,而其他线程又去改变这个变量的值会导致前面的线程因为读错误卡死;最简单的办法就是volatile,加线程不要空转浪费资源,应该加阻塞或者休眠;

线程不要空转浪费资源,应该加阻塞或者休眠;注意如果一个线程非常频繁访问一个变量,而其他线程又去改变这个变量的值会导致前面的线程因为读错误卡死。

2024-01-25 20:50:58 334

原创 alsa read报错-5,uac播放无声问题

可以看出是uac_out数据送太快,awi_alsa_record2_read来不及读引起的,在看代码在awi_audio2_uac_out_proc中AWI_AUDIO2_UAC_OUT_MSG_EVENT_CONNECT和AWI_AUDIO2_UAC_OUT_MSG_EVENT_DISCONNECT导致了一开始没有直接read。问题:电脑一直播放音乐的情况下,反复插拔d40的电源,就会概率性出现放音乐无声的问题,切换成电脑的喇叭播放后切回d40后,又能恢复播放。查看报错-5的错误类型。

2024-01-16 18:03:30 376 1

原创 git+小乌龟还原回退版本

1.日志处选择要回退的版本,右键点击 重置“a22"到此版本(E)...2.然后选择还原,此时才成功回退。

2024-01-10 11:53:25 623 1

原创 spi的通讯波形解析,clk引脚波形

1.当发送完一个字节的时候,spi的时钟脚会拉高一段时间来准备下个字节的发送。当cs脚拉高不发送数据时,时钟的引脚输出的是稳定的高电平,而不是时钟。想要研究波形,不用抓,逻辑分析仪的软件可以直接模拟看。

2023-11-30 10:37:11 468 1

原创 spi的波特率和时钟的关系

综上可以看出spi的clk引脚最终输出的时钟是波特率的大小,spi的时钟是spi从芯片得到的时钟,而不是最终输出的clk时钟,这个clk时钟是通过spi的总时钟分频得到的即spi的clk时钟=spi波特率=spi总时钟/分频系数,同时还需注意的是波特率和时钟的单位为是同频的,波特率是每秒传输的位数,时钟是每秒变化的位数。答:SPI的波特率单位是"波特"(bps,即每秒传输的位数)。spi波特率的单位是什么,时钟的单位是什么,两者之间怎么计算。- SPI时钟频率以赫兹为单位,表示时钟信号的频率。

2023-11-24 20:45:06 1551 1

原创 audacity音频录音看是不是丢帧,丢了多少ms

然后选择波形,放大可以看到丢的帧,选中可以看时间,可以看出图中丢了4ms。首先选频谱图,听声音,听噼啪声,找到竖线,

2023-11-24 14:54:43 177 1

原创 定时器初始化在初始化函数中要尽量早,否则当某个模块调用到定时器去控制其他模块的时候,可能定时器初始化过晚,而不能使用,导致卡死

如下,若此模块初始化早于定时器那么在调用定时器的时候,可能定时器还未初始化,这样子会导致空指针卡死,所以需要把定时器初始化提前,并且在此处加上指针的判断。定时器初始化在初始化函数中要尽量早,否则当某个模块调用到定时器去控制其他模块的时候,可能定时器初始化过晚,而不能使用,导致卡死。

2023-11-24 11:24:45 51 1

原创 a22 dfu升级到最后一点会重启、ram不够问题、malloc和静态变量申请内存的位置、freertos的malloc大小设置、

通过看keil的打印可以看出RAM=RW-data+ZI-data=50444+751856=802,300字节小于单片机内存的总大小1M,所以总的大小是够的,进一步看是静态变量的大小不够了。来获取动态内存堆剩余可申请空间的大小。该函数会返回当前剩余的可用堆空间大小(以字节为单位),通过此函数发现malloc还有较大的空间。问题:a22在添加插值算法的时候,发现播放功能正常,但是dfu升级到最后一点会重启的问题,定位发现是因为申请了一个很大的静态变量。

2023-11-21 18:57:16 37 1

原创 hid usb抓包器的使用流程EZU200、Device Monitoring Studio、Bus Hound

1.先不插设备,然后点击开始采集数据,然后插usb,这样才能获得设备的枚举信息,通过枚举信息来看到对应的接口描述符,然后通过筛选接口描述符好来筛选查看要看的数据。

2023-11-09 19:48:19 119

原创 微信alt+a轻松实现翻译和图片文字识别

2023-11-02 13:07:00 60 1

原创 应用程序查看系统运行时间

注意使用纳秒的时候可能会超出后循环。

2023-10-26 14:34:46 35

原创 1.am10p通过sn发送给http数据库,得到唯一的mac地址,用于管理 2.上位机从http数据库拿数据,设置数据 3.C# 发送http网络请求

1.am10p通过sn发送给http数据库,得到唯一的mac地址,用于管理 2.上位机从http数据库拿数据,设置数据 3.C# 发送http网络请求。POST函数,及其返回值,以及可以问后端的工程师有没有收到数据来对自己是不是发送成功,并且在发送之前一定要对好post的数据。使用C#发送HTTP的Get和Post请求_c# 发送get请求-CSDN博客。使用C#发送HTTP的Get和Post请求_c# 发送get请求-CSDN博客。//注意POST请求的格式,是json还是其他。

2023-10-12 10:48:18 31

原创 vs studio中c#开发使用

2.打印的方法、c# 如果监视看不了变量值,可以去自动窗口,或者局部变量窗口看,还可以使用打印函数Console.WriteLine(需要打印的变量);并在输出窗口查看变量值。3.C#中String字符串的解析及String的各种方法,问gpt。4.C#中json解析及json的各种方法。0.c#比较成熟,编程可以直接问gpt。6.添加库后git需要上传哪些。

2023-10-12 10:32:04 27

原创 d40蓝牙产测问题:0.dangle配对提示未检测到耳机设备1.通过串口echo进去的sn会带有/n,所以写sn要用上位机写才行2.dangle配对成功后还是不能连接上蓝牙可能是蓝牙mac地址不对

2.dangle配对成功后还是不能连接上蓝牙可能是蓝牙mac地址不对,看awi_ats_set_btmac.c,可以通过手机连上蓝牙后,查看蓝牙的mac地址,如果mac地址不是sn对应的后几位,而是默认值,那就是sn没设成功,可以断电重启试试。1.通过串口echo进去的sn会带有/n,所以在复制sn后,还是会校验失败,通过调试可以看到sn中有/n,所以写sn要用产测上位机写才行。

2023-10-08 15:58:49 97 1

原创 git如何取消git status的忽略文件

1.在工程文件下添加.gitignore文件,里面添加需要忽略的文件或者文件夹。3.上传云端,以后下拉.gitignore文件就会起效果。

2023-09-27 21:31:07 78

空空如也

空空如也

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

TA关注的人

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