- 博客(66)
- 收藏
- 关注
原创 信息安全相关
2. **重放保护**:通过对存储在RPMB中的数据进行签名和加密,任何未经授权的访问或修改均可以被检测到,从而避免数据被重复使用或篡改。4. **应用场景**:RPMB在电子设备中广泛应用,特别是在需要高安全性的场景,如移动设备、IoT设备和汽车电子产品。4. **与BSP的关系**:在BSP中,OTP可以用来配置硬件、设置设备特性,或者存储设备运行所需的关键数据。这使得存储在其中的数据具有很高的安全性。3. **应用场景**:在嵌入式系统中,OTP常用于存储设备的安全信息,固件或软件配置参数,证书等。
2025-03-21 10:51:28
236
原创 esp32 opus 编解码
注意esp32的opus库,对音频进行多大的FRAME_SIZE编码,就得将输出多大的opus文件送入解码才行,应该改为编码后直接将编码输出的长度opus送到解码。
2025-02-17 10:35:55
438
原创 c语言无符号的变量不能和有符号的直接比较,或者使用移项解决符号问题
在这段代码中,`tmp` 是一个有符号整数,而 `a` 是一个无符号整数。在这段代码中,`tmp < a` 的返回值为 `0`(因为比较的时候 `tmp` 被转换为无符号数,大于 `a`),所以输出结果是 `0`。- `tmp` 的值是 `-32`。当该值转换为无符号整数时,它会变成 `UINT_MAX + 1 + tmp`,即 `4294967264`(如果是 32 位系统)。- 这里 `UINT_MAX` 是无符号整型的最大值,通常在 32 位系统中等于 `4294967295`。
2025-01-22 14:09:46
478
原创 esp32在编译是报错在idf中有该文件,但是说没有
解决办法在main\CMakeLists.txt加入efuse(找到在idf的esp_efuse_table.h所在的组件,加入)问题原因:在CMakeLists.txt没有包含路径efuse。报错没有头文件esp_efuse_table.h。
2025-01-13 21:12:34
479
原创 esp32添加组件详解managed_components
在添加组件后,会产生文件main\idf_component.yml,里面会记录添加了的组件,所以不用在CMakeLists.txt添加路径,可以直接调用managed_components中的文件。首先添加组件需要有main文件夹不然会报错如下。
2025-01-13 16:08:06
519
原创 esp32 mqtt连接阿里云细节配置
需要配置hash算法,才能解析阿里云物联网平台自签名证书然后按如下找到产品秘钥,设备名称,设备秘钥域名配置如下:注意旧版和新版的区别替换对应代码的此处如下,需要下载后复制,注意端口是8883:注意需要在后面加上”和/n物模型上报Alink JSON格式上报属性或事件格式。
2025-01-08 16:04:26
736
原创 esp32直接使用官网实现芯片选型和开发板资料,下载代码可以去乐鑫开源gitee会快
然后选方案,里面有相应的方案,如语言助手。可以通过产品选型来实现选择比较模块。点击开发板,查看各种开发板。拉到底会有开发板等资料。
2024-12-27 19:52:42
152
原创 pid学习感悟
d是微分操作,我们知道微分其实就是数值变化的斜率,所以当偏差越小,则数据曲线越接近目标值,斜率就越小,则对控制单元的操作值越小。i是积分操作,是一段时间的累计偏差,累计误差一段时间,发现误差大了,那就对控制单元的操作值越大,是被控对象回到正轨。首先pid是对现测量值和目标值的差值,即偏差值的操作。p是线性操作,偏差越大,则对于控制单元操作的值越大。
2024-12-24 20:28:54
303
原创 esp32 蓝牙和手机微信小程序通信走json,单片机和电脑手机软件通信最好都是用json
在做esp32兼职的时候,直接将16进制的数据给了手机,导致手机端收数据还原复杂,最好的做法是将原数据转成json后再传给手机蓝牙。
2024-12-23 20:25:36
284
原创 esp32 s3 创建大任务栈的时候,任务创建失败原因;如何配置esp32的freertos的堆大小
2.修改freertos的components\freertos\config\xtensa\include\freertos\FreeRTOSConfig_arch.h中的。代码如下,使用xTaskCreate动态创建栈大小为8192*4的任务创建失败,返回值是-1,原因是freertos的堆大小溢出了。还需注意的是esp32 s3使用的是xtensa架构,所以这边使用的FreeRTOSConfig_arch.h是。esp32 s3 创建大任务栈的时候,任务创建失败原因。1.使用静态创建任务。
2024-11-22 14:05:30
362
原创 PSRAM,Flash,SRAM,ROM有什么区别
在 **ESP32-S3** 中,**384 KB 的 ROM** 存储区主要用于存放 **启动程序(Bootloader)** 和一些硬件相关的基础代码(如低级初始化程序),这部分代码会在芯片上电后启动,并负责引导系统加载其他程序(如固件)。- **RTC SRAM(实时时钟 SRAM)** 是一种位于芯片上的专用内存,通常与 **RTC(实时时钟)** 相关,且与 **ESP32-S3** 的低功耗特性密切相关。- **只读**:传统的 ROM 是只读的,数据在生产过程中就已经写入,不能进行修改。
2024-11-13 17:05:06
1782
原创 svn修改头文件版本需要修改的文件
PJ10PC20240120041_c928\components\master-t5\hikauto\module\app\include中的修改了下拉的各组件的include版本号的内容提交,下次拉下来的代码的include就是最新的了。修改版本号的流程如下,以PJ10PC20240120041_c928\components\master-t5\hikauto\module\app\include\ui为例。右键更新svn,把刚刚修改好的版本号的对应的组件中的内容更新到最新。7.提交svn,把修改。
2024-07-04 20:52:57
444
原创 使用ubantu直接进行代码调试的办法
`-pthread` 参数告诉编译器链接 pthread 库,因为你的程序中使用了 pthread 多线程库。- `-o pthread_example` 指定输出的可执行文件名为 `pthread_example`。- 如果程序中的 `sleep()` 函数没有作用,可以检查是否有其他线程在运行导致程序流程被占用。1. **编写程序文件**:将你的程序保存为一个文件,比如 `pthread_example.c`。- `pthread_example.c` 是你的源代码文件。
2024-06-26 16:14:05
309
原创 互斥锁并不能保证任务不能被调度
互斥锁不能保证在临界区的时候,不发送任务调度,所以为了保护共享的资源不被调度访问,需要在两个线程都加互斥锁来保证任务不调度。在多线程环境中,只有当一个线程持有互斥锁并进入临界区时,其他线程才会被阻塞,直到该锁被释放。因此,在你的代码中,即使。这是互斥锁的基本特性,确保在任意时刻只有一个线程可以访问共享资源。使用了互斥锁来保护临界区(即共享资源的访问),而。也可以由调度器选择执行,因为它不需要等待或竞争。的影响,没有在临界区内等待互斥锁。也可以被调度器执行,因为它不受。互斥锁并进入临界区,
2024-06-26 15:01:31
223
原创 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
8803
原创 端口复用详解
1. 允许快速重启服务器:当服务器进程异常退出或者被关闭后,如果不设置端口复用,操作系统会在一段时间内保持该端口处于TIME_WAIT状态,这样会导致在该端口上无法立即启动新的服务器进程。3. 解决TIME_WAIT状态资源耗尽问题:如果不设置端口复用,在高并发情况下,大量的TIME_WAIT状态连接会消耗系统资源,甚至导致资源耗尽。2. 提高服务器的健壮性和可用性:在高并发环境下,服务器可能会频繁启动和关闭,如果不设置端口复用,会导致端口资源被长时间占用,从而影响服务器的健壮性和可用性。
2024-05-09 16:08:58
1346
原创 c/c++传值和传引用的区别
函数中只是被复制了一份,对复制的值的增加不会影响到原来的。函数接受一个指向整数的指针,通过这个指针可以直接修改。函数中使用的是传值方式传递参数,所以。的值,可以通过传递指针的方式修改。这段代码的目的是增加。这个修改后的版本中,的操作就会直接影响到。
2024-04-28 17:39:24
263
原创 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
1137
原创 注意libaudioProcess.so和libdevice.a是不一样的,一个是动态链接,一个是静态
libaudioProcess.so是动态链接,修改需要改根文件系统,需要bsp重新配置。libdevice.a是静态链接,直接替换就行。然后执行fw_update.sh。
2024-04-22 17:04:49
315
原创 君正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
288
原创 音视频开发常用名词
较长的GOP长度意味着更多的帧依赖于之前的帧进行解码,可以实现更高的压缩率,但也可能增加解码的延迟和错误传播的风险。较高的码率可以提供更高的图像质量,因为更多的数据被用来表示视频的细节,但也会导致更大的文件大小和更高的传输成本。在数字视频中,码率决定了视频的质量和文件大小,因为更高的码率通常意味着更高的图像质量和更大的文件大小。具体来说,较低的QP值会导致更精细的量化和更高的图像质量,但也会产生更大的码率。相反,较高的QP值会导致粗糙的量化和较低的图像质量,但可以获得更高的压缩率。
2024-04-21 12:58:14
1331
2
原创 c语言指针相关的用法理解
通过传递指向指针的指针,函数可以修改指针的内容,从而改变调用函数中指针的值。0.指针本身占4个字节(32位操作系统),u32 * p和u8*p,其中的u32 *,u8 *指的是指针指向的地址的数据的解析方式。1.u32 * p和u8*p都是指向一个地址,不同的只是对地址的解析方式不同,如下的。使用方法是对的,都是指向一个地址,只是对地址的中存放的数据的解析方式不一样。根据你的需求和数据类型,你可以选择使用适当类型的指针。指向的是一个32位无符号整数的内存地址。指向的是一个字节的内存地址。
2024-04-19 19:43:40
445
原创 音频数据如果在中断中会随机给的那就放入队列或者缓冲区;队列缓冲区对音频的作用
回采的数据是在中断函数au0_dma_isr_data_output里面给的,而给算法的时候是在主程序karaok_sdadc_process,这样子就会出现中断给的数据和当前的mic帧不匹配,或者说每次的差值不一定,算法就会有问题,解决办法是讲回采数据放入队列,给个缓冲区来循环取放值,这样子缓存去的数据先进先出,就可以实现存取长时间的数据,在这长时间的情况下,一定能轮到另外一边主程序karaok_sdadc_process运行,以拿到数据。错误模型如下,没加循环缓存。正确模型如下,加循环缓存。
2024-03-15 10:25:29
761
原创 单片机的boot升级和双备份升级
同时boot升级还会有一个策略来防止单片机变成砖:就是boot的升级程序写在boot中,这个部分的的升级程序是不会改动的,如果检测到升级失败,会一直等待,直到升级正确的程序。
2024-03-06 15:42:11
550
原创 中科蓝讯板子中段打印注意事项
如下,au0_dma_isr_data_output是会在中断中调用的,所以打印这里参数必须要放到.com区。错误示范:其中%d\n没有放到.com区,系统会一直重启。正确示范:将打印放到.com区。
2024-02-22 14:04:24
407
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人