- 博客(19)
- 收藏
- 关注
原创 嵌入式音视频开发(音频模块学习)
RV1126的AI模块指的是音频输入模块,它的作用是通过内置芯片读取麦克风等音频的模拟信号,然后把音频模拟信号转换成数字信号。在RV1126里面,音频AI模块是所有音频输入的入口。音频输入设备(音频模拟信号)->VI模块(采样、量化、编码)->PCM音频数字信号。
2024-08-10 13:52:06
1561
1
原创 嵌入式音视频开发_视频编码拓展
QP参数调节,指量化参数调节。它主要来调节图像的细节,最终达到调节画面质量的作用。QP值和比特率成反比:QP值越小码率越高,画面质量越好;QP值越大码率越低,画面质量越差。而且随着视频源复杂度,这种反比的关系会更加明显。 但是要注意的是,在设置QP值的时候会容易造成码率的波动,有时候画面质量提升了会导致码率大幅度提升,所以在提升画面质量的时候也需要考虑码率的情况。在编码中,亮度的QP最大值是51、色度的QP最大值是39,在真正开发中调节亮度的QP值为主。
2024-08-06 15:59:41
1262
原创 嵌入式音视频开发学习(视频编码原理及RV1126 VENC模块)
H265的优势在于超高的压缩比(压缩比高达1:200)编码超高清的分辨率,如:4K分辨率(3840 * 2160)、8K分辨率(7680 * 4320),一般只有在编码超高清分辨率的时候才会用到H265编码,普通的分辨率如:1920 * 1080以下的分辨率只需要H264即可(这是由于H265虽然压缩比非常高,但是它的算法复杂程度也远超H264,对于一般播放器来说CPU运算也过于复杂)。因为在网络传输的时候,网络带宽有限,若此时网络传输的时候还用原始数据进行传输的时候,则会对网络带宽造成极大的负担。
2024-08-05 13:11:45
1618
原创 嵌入式音视频开发学习(VI模块、RGA模块)
YUV是一种常见的视频像素格式,经常用在视频编解码上面,YUV分别由Y、U和V分量组成。Y分量指的是亮度分量,也就是经常说的灰阶值,相当于一副灰色的图像。而U分量和V分量表示的是色度分量, 它的作用就是用于影像的色彩以及饱和度,常用于指定像素的颜色,U分量是图像蓝色部分去掉亮度Y,V分量是图像红色部分去掉Y。换言之如果一副图像只有Y分量,没有UV分量就相当于看黑白电视一样没有颜色,所以现在彩电都引用了YUV像素格式。 RV1126的VI模块指的是视频输入模块,它的作用是读取sensor的数据。
2024-08-03 15:01:24
1825
原创 Linux网络编程
第四次挥手:客户端收到FIN之后,再发送一个ACK报文作为应答,且把服务端的序列号加1作为ACK报文的序列号值,此时客户端处于TIME_WAIT状态。 第二次挥手:服务器收到FIN之后,会发送ACK报文,并且把客户端的序列号值加1作为ACK报文的序列号值,表明已经收到客户端的报文了,此时服务器处于CLOSE_WAIT状态。 第三次挥手:如果服务器也想断开连接了,和客户端的第一次挥手一样,发送FIN报文,且指定一个序列号。 第一次挥手:客户端发送一个FIN报文,报文中会指定一个序列号。
2024-07-26 16:05:43
644
原创 Linux线程和线程同步学习/复习
线程的分离属性是用来指定线程的结束时是否需要对其资源进行清理。当一个线程被创建时,可以设置其为分离属性,这意味着当线程结束时,系统会自动释放其占用的资源,而不需要其他线程来等待它的结束并回收资源。在C/C++中,可以使用pthread库中的pthread_attr_setdetachstate函数来设置线程的分离属性。 exit(0)是退出整个进程,退出单一线程可以使用pthread_exit(NULL);初始化:pthread_mutex_init(&mutex,NULL);
2024-07-23 16:07:19
962
原创 Linux进程与进程间通信学习/复习
操作系统将不同进程之间共享内存安排为同一段物理内存,进程可以将共享内存连接到它们自己的地址空间中,如果某个进程修改了共享内存中的数据,其他的进程读到的数据也将改变。 并行:当系统有一个以上CPU时,一个CPU执行一个进程时,其他CPU也能执行其他进程,两个进程互不抢占CPU资源,可以同时进行,这种方式就成为并行。 fork()函数通过系统调用 创建一个与原来进程几乎完全相同的进程,也就是两个进程可以作完全相同的事,但如果初始参数或者传入的变量不同,两个进程也可以做不同的事。数据写端流入,读端流出。
2024-07-20 23:17:34
658
原创 Linux文件IO学习/复习
一、Linux目录结构以及文件操作1.Linux命令操作的目的2.Linux文件目录分布3.常用Linux命令4.vi编辑器的简单使用5.vi常用两种模式二、Linux文件open函数文件权限close函数write函数read函数lseek函数main函数参数cp指令的实现fopen函数freadfwritefseekfclose文件IO和标准IO的区别缓存的概念三类读写函数1.行缓存,遇到换行符(\n),或者写满用户缓存时,即调用系统调用函数2.无缓存,只要用户调用这个函数,就会写到内核中。
2024-07-18 14:07:29
280
原创 内存管理和C语言拓展
C语言允许宏带参数,在宏定义中的参数称为形参,在宏调用中的参数称为实参。对带参数的宏,调用中不仅要宏展开,而且要用实参去代换形参。#define 宏名(形参表) 字符串。
2024-07-16 13:58:41
428
原创 C语言学习/复习 (指针篇)
在C语言中,内存单元的地址称为指针,专门用来存放地址的变量,有时对地址,指针和指针变量不区分,统称为指针。 因为数组名是地址常量,所以px++或px–是正确的,但x++或x–就是错误的,只能x+1或*(x+2)操作。 C语言中数组的指针是指数组在内存中的起始地址,数组元素的地址是指 数组元素在内存中的起始地址。 注意:指针变量和数组的指针(或叫数组名)在本质上不同,指针变量是地址变量,而数组名是地址常量。 初始化字符指针是把内存中字符串的首地址赋予指针,而不是把该字符串复制到指针中。
2024-07-13 16:19:24
1006
原创 C语言学习/复习(不包含指针)
2.只要程序没有结束,就不会随着说明他的程序段的约束而消失,它下次再调用该函数,该存储类型的变量不会重新说明,而且还保留上次调用存储。 具有一定顺序关系的若干个变量的集合,组成数组的各个变量称为元素。连接前,两串均以’\0’结束,连接后,串1的’\0’取消,新船最后加’\0’。 变量在程序中用变量名表示,变量名由字母、数字、下划线组成,不能以数字开始,不能和C的关键字重名。extern称为外部参照引用型,使用extern说明的变量是想引用在其他文件中的函数体外声明的变量。
2024-07-12 18:28:03
898
原创 建议收藏万字长文!嵌入式Linux系统移植原理与方法总结
本文是对整个Linux系统移植的讲解,适宜有一定基础的初学者进行复习,基本可以自己制作PCB之后自己根据这个方法烧写Linux系统,不涉及U-Boot与Linux的源码和编译流程的讲解(这东西后面再学没事的),只讲最实用的方法,如果你有跟着烧写过一遍Linux系统,那么本文会让你重新复习一遍整个流程,加深对Linux系统移植的理解与应用。
2023-09-24 13:09:07
4927
6
原创 Chatgpt+机器人的构想
而且我们学的stm32这款微控制器的ST公司,以后主推HAL库开发(抽象印象层),而主要用HAL库开发的IDE能通过 图形配置芯片 最后自动输出整个工程的代码,大大减少我初始化各个芯片管脚功能的工作量,这使得我只需要编写业务代码就行了。就是等gpt的更新迭代写代码能力越来越强,他能够根据与人类对话和当时的环境 实时输出嵌入式业务代码,真正做到自己操控自己。我感觉大语言模型以后真的是机器人的重要技术栈啊,相当于机器的大脑一样。而这编写业务代码的任务以后就交给chatgpt,真的就是机器人随心所欲控制自己了。
2023-08-30 02:05:04
117
原创 嵌入式Linux驱动学习_简单了解Cortex-A7 MPCore架构
L1 可选择 8KB、16KB、32KB、64KB,L2 Cache 可以不配,也可以选择 128KB、256KB、512KB、1024KB。R8~R12有俩种寄存器,FIQ模式下它们对应Rx_irq物理寄存器,其他模式对应Rx物理寄存器。R14共有7个物理寄存器,其中一个是User、Sys和Hyp共有的。R13一共有8个物理寄存器,其中一个是User和Sys模式共用的,剩下7个对应7种不同模式。指令的地址,然后对于32位的ARM处理器,每条指令是4个字节,所以PC=执行程序地址+8个字节。
2023-08-29 16:23:38
286
1
原创 学了stm32怎么看数据手册?
引脚定义 |介绍不同封装的引脚分布、引脚定义等,含引脚特性、复用功能、脚位等 3。主要内部SRAM1(112KB)、辅助内部SRAM2(16KB)、辅助内部SRAM3(64KB)、电气特性 |介绍芯片的详细电气特性,包括工作电压、电流、温度、各外设资源的电气特性 5。M4内核I总线、D总线、S总线、DMA1存储器总线、DMA2存储器总线、DMA2外设总线、被动单元:内部FLASH、内部SRAM、FSMC、AHB到APB的桥 它连接的所有APB外设。
2023-08-28 17:32:40
461
1
原创 入门LinuxC编程(嵌入式Linux掌握)
* 表示目标模式中%及其之前的部分,如果目标是test/a.test.c,目标模式为a.%.c那么$*就是test/a.test。这条规则的目标是main,main.o、input.o和calcu.o是生成main的依赖文件,如果要更新目标main,就必须。将字符串“a.c b.c c.c”中所有符合%.c的字符串替换为%.o,替换完后就是“a.o b.o c.o”–c main.c”,这行命令很熟悉了吧,就是不链接编译 main.c,生成 main.o,其它两个.o 文件同理。
2023-08-28 17:26:45
311
1
原创 线性规划Matlab基于问题求解方法
线性规划中如果当约束条件和目标函数比较复杂,运用matlab中创建最大值问题的函数来会更简便一些,而且此方法以后也用的更多些
2022-04-15 22:05:45
3276
5
工科生学了许多数据分析方法有用吗
2022-09-27
TA创建的收藏夹 TA关注的收藏夹
TA关注的人