技巧类和知识扩展
技巧类和知识扩展
文武先生hh
这个作者很懒,什么都没留下…
展开
-
使用ubantu直接进行代码调试的办法
`-pthread` 参数告诉编译器链接 pthread 库,因为你的程序中使用了 pthread 多线程库。- `-o pthread_example` 指定输出的可执行文件名为 `pthread_example`。- 如果程序中的 `sleep()` 函数没有作用,可以检查是否有其他线程在运行导致程序流程被占用。1. **编写程序文件**:将你的程序保存为一个文件,比如 `pthread_example.c`。- `pthread_example.c` 是你的源代码文件。原创 2024-06-26 16:14:05 · 246 阅读 · 0 评论 -
互斥锁并不能保证任务不能被调度
互斥锁不能保证在临界区的时候,不发送任务调度,所以为了保护共享的资源不被调度访问,需要在两个线程都加互斥锁来保证任务不调度。在多线程环境中,只有当一个线程持有互斥锁并进入临界区时,其他线程才会被阻塞,直到该锁被释放。因此,在你的代码中,即使。这是互斥锁的基本特性,确保在任意时刻只有一个线程可以访问共享资源。使用了互斥锁来保护临界区(即共享资源的访问),而。也可以由调度器选择执行,因为它不需要等待或竞争。的影响,没有在临界区内等待互斥锁。也可以被调度器执行,因为它不受。互斥锁并进入临界区,原创 2024-06-26 15:01:31 · 188 阅读 · 0 评论 -
MobaXterm破解专业版方法
python MobaXterm-Keygen.py "DoubleSine" 20.2 (20.2为MobaXterm版本号,具体版本号可以看MobaXterm的help)最后将新生成的Custom.mxtpro文件复制到MobaXterm的文件夹或者安装目录重启MobaXterm即可。1.安装python3环境,使用vscode打开文件夹,新建终端,在终端中执行命令。原创 2024-06-25 14:09:58 · 4226 阅读 · 0 评论 -
端口复用详解
1. 允许快速重启服务器:当服务器进程异常退出或者被关闭后,如果不设置端口复用,操作系统会在一段时间内保持该端口处于TIME_WAIT状态,这样会导致在该端口上无法立即启动新的服务器进程。3. 解决TIME_WAIT状态资源耗尽问题:如果不设置端口复用,在高并发情况下,大量的TIME_WAIT状态连接会消耗系统资源,甚至导致资源耗尽。2. 提高服务器的健壮性和可用性:在高并发环境下,服务器可能会频繁启动和关闭,如果不设置端口复用,会导致端口资源被长时间占用,从而影响服务器的健壮性和可用性。原创 2024-05-09 16:08:58 · 870 阅读 · 0 评论 -
c/c++传值和传引用的区别
函数中只是被复制了一份,对复制的值的增加不会影响到原来的。函数接受一个指向整数的指针,通过这个指针可以直接修改。函数中使用的是传值方式传递参数,所以。的值,可以通过传递指针的方式修改。这段代码的目的是增加。这个修改后的版本中,的操作就会直接影响到。原创 2024-04-28 17:39:24 · 233 阅读 · 0 评论 -
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 · 736 阅读 · 0 评论 -
注意libaudioProcess.so和libdevice.a是不一样的,一个是动态链接,一个是静态
libaudioProcess.so是动态链接,修改需要改根文件系统,需要bsp重新配置。libdevice.a是静态链接,直接替换就行。然后执行fw_update.sh。原创 2024-04-22 17:04:49 · 274 阅读 · 0 评论 -
使用while (i--)时候计时不准,有可能是编译器优化了,加上volatile能解决问题
原创 2024-03-15 16:17:06 · 130 阅读 · 0 评论 -
音频数据如果在中断中会随机给的那就放入队列或者缓冲区;队列缓冲区对音频的作用
回采的数据是在中断函数au0_dma_isr_data_output里面给的,而给算法的时候是在主程序karaok_sdadc_process,这样子就会出现中断给的数据和当前的mic帧不匹配,或者说每次的差值不一定,算法就会有问题,解决办法是讲回采数据放入队列,给个缓冲区来循环取放值,这样子缓存去的数据先进先出,就可以实现存取长时间的数据,在这长时间的情况下,一定能轮到另外一边主程序karaok_sdadc_process运行,以拿到数据。错误模型如下,没加循环缓存。正确模型如下,加循环缓存。原创 2024-03-15 10:25:29 · 706 阅读 · 0 评论 -
c语言宏定义中涉及到运算一定要加括号,不然展开会有出错的风险
原创 2024-03-08 14:16:55 · 168 阅读 · 0 评论 -
m++和++m
原创 2024-02-29 16:03:50 · 267 阅读 · 0 评论 -
注意,问gpt应该问的是嵌入式Linux系统上干嘛干嘛,如下载源码,交叉编译,不该是Linux上面,不然回给出ubantu这种牛逼的操作系统,和平时的开发不相符合
不该是Linux上面,不然回给出ubantu这种牛逼的操作系统,和平时的开发不相符合。注意,问gpt应该问的是。嵌入式Linux系统。原创 2024-02-02 20:47:59 · 117 阅读 · 0 评论 -
死锁的程序例子
【代码】死锁的程序例子。原创 2024-01-31 14:09:00 · 175 阅读 · 1 评论 -
反汇编操作, 找出错误的地址对应的函数;以及添加错误堆栈打印函数后怎么使用addr2line -e hunter.debug 0x40b180
3.在刚刚烧录的文件对应的hunter文件,执行如下操作 ,得出反汇编文件hunter1_elf。然后反汇编文件中通过地址可以找出相应的函数,这里可以看出是失败了,没有找出,正常是会有找出的。2.烧录代码运行后看到错误打印如下。1. 需要在代码中加入,并编译。当然也可以在服务器通过指令。来定位具体问题出在哪个函数。原创 2024-01-30 21:56:26 · 350 阅读 · 1 评论 -
spi的通讯波形解析,clk引脚波形
1.当发送完一个字节的时候,spi的时钟脚会拉高一段时间来准备下个字节的发送。当cs脚拉高不发送数据时,时钟的引脚输出的是稳定的高电平,而不是时钟。想要研究波形,不用抓,逻辑分析仪的软件可以直接模拟看。原创 2023-11-30 10:37:11 · 1176 阅读 · 1 评论 -
spi的波特率和时钟的关系
综上可以看出spi的clk引脚最终输出的时钟是波特率的大小,spi的时钟是spi从芯片得到的时钟,而不是最终输出的clk时钟,这个clk时钟是通过spi的总时钟分频得到的即spi的clk时钟=spi波特率=spi总时钟/分频系数,同时还需注意的是波特率和时钟的单位为是同频的,波特率是每秒传输的位数,时钟是每秒变化的位数。答:SPI的波特率单位是"波特"(bps,即每秒传输的位数)。spi波特率的单位是什么,时钟的单位是什么,两者之间怎么计算。- SPI时钟频率以赫兹为单位,表示时钟信号的频率。原创 2023-11-24 20:45:06 · 3110 阅读 · 1 评论 -
audacity音频录音看是不是丢帧,丢了多少ms
然后选择波形,放大可以看到丢的帧,选中可以看时间,可以看出图中丢了4ms。首先选频谱图,听声音,听噼啪声,找到竖线,原创 2023-11-24 14:54:43 · 500 阅读 · 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 · 75 阅读 · 1 评论 -
hid usb抓包器的使用流程EZU200、Device Monitoring Studio、Bus Hound
1.先不插设备,然后点击开始采集数据,然后插usb,这样才能获得设备的枚举信息,通过枚举信息来看到对应的接口描述符,然后通过筛选接口描述符好来筛选查看要看的数据。原创 2023-11-09 19:48:19 · 426 阅读 · 0 评论 -
微信alt+a轻松实现翻译和图片文字识别
原创 2023-11-02 13:07:00 · 201 阅读 · 1 评论 -
应用程序查看系统运行时间
注意使用纳秒的时候可能会超出后循环。原创 2023-10-26 14:34:46 · 70 阅读 · 0 评论