自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 vmware 虚拟机突然没网了,网络图标不见了,解决方法:

网络图标出现,网络恢复正常。

2025-03-17 10:38:03 153

原创 RKmedia的音视频合成器和wifi和Sd卡

现在的音频和视频都是单独录制!音频最多保存成 Mp2 / G711A视频最多保存成 H264/H265不专业一看,都不知道这是啥!正常人只认 Mp4 ->音视频合成的产物!-- 所以我们今天用合成器将音频和视频合成mp49.9 购买正常电脑都可以用的 WIFI你插到你的电脑就会自动生成 USB 的 WIFI 网卡你插到主机,主机就会有 WIFI 了!但是由于 WIFI 价钱便宜:只支持 2.4G 网络WIFI 分为:2.4G 和 5GWIFI。

2024-12-10 20:35:32 1116 1

原创 RKMedia下的音频录制

- 这里需要注意:瑞芯微的音频推流不支持mp2的推流,所以虽然编码上用的是mp2,但是推流的时候不能用,只能用RTSP_CODEC_ID_AUDIO_G711A, RTSP_CODEC_ID_AUDIO_G711U ,所以编码的也需要改。-- 下面的结构体用哪个,看enCodecType参数填的那个,如果填RK_CODEC_TYPE_MP2,就是选对应的结构体,也就是下面这个。-- 只需要在编码代码的基础上,加上RTSP的初始化和在回调函数中,存到本地文件换成,将数据推到服务器中。

2024-12-10 09:52:21 1218

原创 RKmedia的视频录制和推流

- 输出目标如果有数据时,就会自动调用回调函数,收到的数据在mb中存放着,将数据写入文件即可。-- 函数的功能:给输出目标一个回调函数,当数据目标有数据的时候,就会自动调用这个回调函数。-- 靠关系绑定,系统自动取出VI的数据送到VENC,VI有数据就会自动送到VENC里面。-- 那么从VENC出来的数据呢,怎么获取,->当然他出来的数据也有两种选择。-- 在开发板中执行代码,不用关正在执行的代码,让他一直推流,就可以看直播了。-- 函数的功能:设置摄像头捕获的的通道参数,设置 VI 通道参数。

2024-12-10 09:20:47 907

原创 开发板是RV1126芯片,摄像头是GC2053(1)

来源一瑞芯微公司的芯片->海思(华为旗下)市场之前我们监控领域百分60%左右市场都是用海思的芯片尤其是 4K的编解码的芯片在19-20年 海思以及华为公司最难的几年所有的行业半导体都在制裁没有一家芯片厂愿意给华为做芯片海思处于没芯片!-- 瑞芯微的 RV1126-> 淘宝25块左右四核 CPU-A7(32bit) -> 频率是1.5GHZ内部集成VPU(专用的视频编解码器)

2024-12-10 09:18:09 936

原创 FFMPEG 的视频开发基础和FFMPEG 结合 LVGL 显示和FFMPEG 的对讲机实现

- 只有第一帧存放最原始的最全的数据,第一帧叫做原始帧,但是从第二帧开始我就不正常存储图像,只存储和第一帧区别!-- 采集摄像头数据 原始格式是YUYV422,如果想要把我的摄像头数据显示到 LVGL 上,需要将YUV422 的图像格式转成 RGB,并且还需要将RGB 再转 ARGB。-- 2、添加上一个背景,然后再选一个图片,我们需要达到的效果就是将摄像头采集的视频显示到这个图片上。-- 4、我们在customs.c中做修改,因为这个文件是如果需要在lvgl做二次开发的时候,就在这个文件中增加代码。

2024-12-05 20:05:51 1141

原创 FFMPEG2音频的输出,音频的编码,音频的解码

- SDL不仅仅能播放音频,还能播放视频,还能开发界面,还能控制鼠标、键盘、触摸屏、LCD 等设备-- LVGL 的底层就是用的 SDL2 实现的!你调用 SDL 做图像开发,自动根据你的环境做硬件加速你的开发板有 GPU 自动调用 GPU 加速发现你的开发板没有 GPU,自动调用 CPU 做显示SDL是一个跨平台的多媒体开发库,使用 C 语言写成,用于实现音频、图形、输入以及窗口功能的处理。它提供了一个简单、易用的API,可以帮助开发者快速构建跨平台的多媒体应用程序。

2024-12-05 20:04:22 332

原创 FFMPEG(音视频开发的开端)

FFMPEG(音视频开发的开端)和FFMPEG 下的音频开发和FFMPEG 如何读取声卡设备的数据的和FFMPEG 的录制原始声音的示例代码

2024-12-05 20:00:24 228

原创 LCD与lvgl

- 最多建议一些驱动可以在此处加载,不建议应用程序也在此次加载 ,建议应用层程序放到 /etc/profile,这个文件也是自启动文件,这个文件是环境完全ok,最稳定的时候,已经完全开机的时候,才会最后加载脚本文件,这个时候你放入你的应用程序,才是最稳定的。-- tip:这里修改引脚的原因是:因为刚开始厂商给的原理图是错的,厂商怕被抄袭,所以后来拿到正确的引脚后,要将设备信息中的LCD的引脚改为正确的。adc来控制电压不同,控制摇杆向前是一个电压,向左是一个电压,向右是一个电压,向后是一个电压。

2024-12-02 20:38:44 1381

原创 输入子系统

如果让你写一个按键:请问你的按键的输入设备文件名叫什么?你的按键的返回值 是什么?其他人知道不知道你的设备开发的规矩!如果按键设备名字设置成-> /dev/hehehek,谁都不知道这个文件是用来干什么的,有什么作用.难为两种人:和你对接要做上层开发的 App 的软件工程师难为后续接替你工作的员工LCD 也这样开发 摄像头也这样开发为什么所有的软件工程师都可以通过某些软件开发摄像头/LCD 界面开发?

2024-12-02 12:01:22 715

原创 IIC

- 串行的同步的半双工的总线型通信-- 他是嵌入式常用三大串行通信之一-- 他的速度比较慢最慢: 100Kpbs 400Kpbs-- 硬件 IIC 和软件 IIC 是什么意思 有什么区别?硬件 IIC 指的是使用芯片本身附带的外设做的 IIC 通信软件 IIC 指的是任意的两个 IO 口做时许的模拟产生 IIC 通信-- 面试题:你为什么用硬件(软件)IIC?-- 硬件:如果有硬件就用硬件!硬件的更加稳定,更加的快!更加的简单快捷,我根本不用考虑时许的问题。

2024-12-02 11:57:38 598

原创 定时器与poll

- 中断又叫异常,异常发生会打断当前正在执行的事情,转而执行中断/处理异常提高系统的实时性提高 CPU 的利用率。

2024-12-02 11:55:49 804

原创 中断

我上层调用 open->内核层 open(产生阻塞) 上层也会阻塞 如果内核层 read 产生阻塞 上层的 read 也会阻塞(阻塞就是放弃 CPU)Linux 下的中断区分靠的是在 Linux 下对中断的不同的编号作为区分不同的中断,每个中断都有一个独立的编号,而我们在内核中控制中断也靠这个编号!自然优先级->注册中断的顺序(如果两个优先级的抢占优先级和响应优先级都相同,那么就按照注册的顺序来执行)SPI的编号-32就是中断的编号(写在设备树中的编号),ppi的编号和中断编号差十六。

2024-12-02 10:33:55 957

原创 总结复习

目录总结复习一、杂项驱动开发 + GPIO子系统1:何为杂项、何为驱动、Linux下驱动有什么特点?2:杂项的特点有什么3:杂项是如何注册(misc_register();)、杂项是如何取消注册(misc_deregister();4:GPIO子系统是什么,有什么用?5:GPIO子系统的GPIO编号如何获取6:GPIO子系统如何申请一个 引脚,不申请行不行?7:GPIO子系统怎么设置 GPIO的工作模式的8:GPIO子系统如何获取GPIO的状态的。

2024-12-02 10:28:37 909

原创 平台设备总线和lvgl

- 平台设备总线:最早来源就是早期的设备树另一种体现方式平台设备总线也是跟设备树的思想一样,他想把驱动分为:设备层:只负责提供设备信息驱动层:通用的驱动早期的时候,这个时候是没有设备树的设备树是 3.x 的内核才引入,刚引入的时候,还不适应市场!早期虽然有 设备信息和驱动的分层思想,没有设备树的支持,有了平台设备总线这个平台设备总线的 设备层->不是设备树而是一个代码来做设备信息的传递设备层还有函数:platform_device_register();

2024-12-02 10:16:50 902

原创 设备树开发

相关驱动适配代码,厂商会编写芯片的驱动代码,移交提给内核社区,内核社区做审核,全部融入到下一版本的内核,做发布。-- 所以一般只会有一个dtb文件,找到了这个文件,就知道了当前使用的设备树是哪个名字的dts后缀的文件。-- 设备树的本质:是一个文本文件,文本文件里面就是字符串,字符串里面描述的就是我们所说的设备信息。-- 4、所有的节点都是 /(跟节点) 的子节点,所有的节点只能定义在 /节点之下!-- 包含的设备树文件,一般都是dts文件,dtsi里面的内容是厂商编写的,不建议修改。

2024-12-02 10:02:11 806

原创 多节点和内核层的接口

以我们板子上的四个灯为例子:请问这两天我们写的驱动,不管有几个灯,最终生成一个设备文件!问题,在于灯不能独立控制,做个流水灯 都难!我们写这四个灯的驱动:写四个驱动,生成四个设备文件!这四个灯的驱动重复高狠!确实能实现四个灯独立性,但是显得我们不专业!我们今天的目的:我想写一个驱动,生成四个设备文件,四个设备文件独立!

2024-11-21 10:32:11 882

原创 标准驱动开发(Linux2.6(cdev) 的开发)

- 函数的原型:struct device *device_create(struct class *class, struct device *parent, dev_t devt, void *drvdata, const char *fmt, ...);-- 函数的原型:int cdev_add(struct cdev *cdev, dev_t dev, unsigned count);-- 函数返回值:返回的就是你创建的类结构体, 这个类结构体用于生成设备文件的函数的传参!-- 什么是特殊文件?

2024-11-21 10:30:28 1152

原创 杂项驱动开发

- linux分层思想:主要是想告诉大家,linux下的所有的函数接口是通用的,隔离硬件的,软硬件分离,你写的代码原则适用于任何的平台-- 实际上在发展中:把驱动也做了分层,分为硬件层(硬件信息层)和软件层(软件代码层)而软件代码层就在所有的平台通用了,而硬件信息层就渐渐演变成了设备树,bsp厂商把驱动分为两层:硬件层,软件层-- 我们现在初学的linux下的驱动,暂时不考虑分层。

2024-11-21 10:28:11 1541

原创 内核的驱动框架

- 针对内核开发去配置vscode-- 解决头文件不报错-- 头文件报错就去改环境变量。

2024-11-21 10:23:19 857

原创 文件系统的制作

整个操作系统里面:除去 uboot 内核这些文件之外其他所有的应用程序、配置文件、设备文件结合到一起我们称之为文件系统!文件系统才是真正决定了 系统的功能和大小的单元-- 文件系统一般厂商可能提供,也可能不提供,文件系统是我们开发者可以自己完全独立裁剪定制的一个东西-- tip:疑问:Ubuntu 不是有一套文件系统你为什么不直接复制一份 Ubuntu 文件系统我们 Ubuntu 里面所有的程序都是 x86 的架构所以直接用是不可能。

2024-11-21 10:20:40 1000

原创 ubbot和内核

- make -j用make -j带一个参数,可以把项目在进行并行编译,比如在一台双核的机器上,完全可以用make -j4,让make最多允许4个编译命令同时执行,这样可以更有效的利用CPU资源。因此make -j16意思即make最多允许16个编译器同时执行,提高编译速度,充分利用本机计算资源。

2024-11-21 10:17:32 510

原创 了解rk3588单片机

- 所有A系列单片机只要出现问题,编译缓冲区就可以直接删除(某些缓冲区),再次编译的时候只会编译这个缓冲区,他会自动检测哪个被删了。-- loader模式烧写镜像可能会失败,maskroom模式下(整体升级和整体烧写)烧写镜像是绝对不会失败的。-- 怎么配置uboot,通过uboot配置文件能够快速配置uboot,用于自己的开发板。-- uboot是一个开源项目,但是需要做配置和裁剪,才能适应开发板。-- 正常的单片机板子是不允许串口供电的,一般都有专门的电源供电。

2024-11-21 10:13:40 1149

原创 驱动前的补充

- Loader 模式的单独烧写: 你要先想办法进入 loader 模式 现在我只教了一种:切换 我现在再教给你一种: UART 口和电脑连接到一起 通过 MobaXterm->就是串口助手。-- 如果下载过老师那个完整版虚拟机的话,打开处于挂起状态无法更改配置,就把这两个文件删了,就可以配置了。-- 刚插上板子的时候显示发现一个ADB设备,需要点击切换,切换到BOODer模式。-- 汇编不流行的原因是因为不通用,架构不同,生成的汇编不同,-- 连接上板子后,打开串口,注意波特率是1500000。

2024-11-21 10:10:28 244

原创 如何将交叉编译配置在环境变量中

- 将交叉编译配置到环境变量中,就可以直接用了。-- 修改 Linux 的环境变量需要哪个文件。-- 注意这个文件一般要打开两次才会成功。-- 环境变量 = PATH。-- 之后重启虚拟机即可生效。-- 这里针对所有用户修改。-- 查找交叉编译的路径。-- 再次执行.c文件。

2024-11-12 16:39:57 528

原创 如何解决不能将开发板连接到虚拟机的问题(连接显示灰色,不能选中)

- 如果连接上rk3588单片机,虚拟机无法来连接,如何更改。-- 将虚拟机的配置文件以文本文件的形式打开。-- 再将所有的FALSE改为TRUE即可。-- 然后再次打开虚拟机即可。-- 先将虚拟机关机。

2024-11-12 16:38:45 301

原创 MCU面试题

如何在 FreeRTOS 中使用钩子函数 在 FreeRTOS 中使用钩子函数,

2024-11-10 17:20:46 1445

原创 驱动前的准备

- 这个指令主要是解决windows和虚拟机之间空间不对等(虚拟机命名没有用到那么大的空间,但是windows却占用很大的空间。如果下载过老师那个完整版虚拟机的话,打开处于挂起状态无法更改配置,就把这两个文件删了,就可以配置了。-- 解压这个压缩包(会占用大量的空间->有空间再去做!-- 只是更新这个还不够,还需要再虚拟机内部进行配置。-- 打开 VMWare 软件的打开虚拟机。-- 把我 U 盘虚拟机拷贝到 C 盘。-- 首先先更改虚拟机的设置。-- 打开后重新配置虚拟机。所以我创建的虚拟机是高版本。

2024-11-10 11:34:56 380

原创 系统回顾

- 驱动只有在做项目的时候会用到 浅浅给大家说一说接口 具体代码编写在项目中我们会重新写相关代码 前三周都用不到!-- 多线程花费 7.8S make -j 线程数(取决于你的 CPU 的线程)-- 原则之间线程之间毫无关系,但是如果一个线程出现段错误,其他线程都会出错。->尽量用该函数结束线程 线程的互斥和同步。-- 如果没有安装ubuntu,请先安装ubuntu,这里就讲一下换源。原生的 Ubuntu 他的源(下载网址)太慢了。//获取文件光标距离开头的位置。-- 一个正常的项目都会用到的技术点!

2024-11-10 10:43:15 876

原创 IAP升级

通过这一步设置,我们就可以在 MDK 编译成功之后,调用 fromelf.exe(注意,我的 MDK 是安装在 D盘文件夹下,如果你是安装在其他目录,请根据你自己的目录修改fromelf.exe 的路径),根据当前工程的 weather.axf(如果是其他的名字,请记住修改,这个文件存放在 Objects 目录下面,格式为 xxx.axf),生成一个 RTC.bin 的文件。如果想清楚的看到程序运行的结果,可以实现程序接收到bin文件后就立马复位,所以要在程序更新的后面写一个软件复位的代码。

2024-11-10 10:18:02 1168

原创 git 工具原理

- 在你要执行的的工程的根目录下打开git,首先输出cmd命令行提示符,然后输入git -v,如果输出git的版本号,则说明git已经安装成功。-- 8、将这次更改直接上传到版本库,也就是提交到仓库,并且写上代码提交信息。特点: 版本库分为本地版本库和远程版本库。-- 4、再次查看状态,已经没有需要提交到仓库的文件了(也就是说没有更改过的文件了),然后查看提交日志,记录了第一次提交的内容。-- 7、执行完git diff后一直按键盘↓,到底部就会看到具体的变化,绿色表示增加的变化,红色表示删除的变化。

2024-11-06 20:15:43 1423

原创 更改lvgl图片的分辨率(减少像素)达到减小内存占用的目的

- 这里主要是降低它的像素,之前是16位的,现在更改为4位的,(其实就是色彩的精确度降低了一些,本来是浅蓝***型号,更改过后可能没有这个型号,只有大概偏向这个型号的颜色。:这里要更改分辨率的图片必须是已经修改好大小的图片,这个转换器不会自动更改图片的大小,所以需要提前修改好图片的大小(要占用屏幕的大小)。--注意,如果界面对像素的要求很高,或者降低分辨率后对界面显示出来的效果差距过大,不建议更改,可以采用其他方法。-- 由于lvgl中图片占的内存过大,所以需要更改图片的分辨率(降低像素的方式)

2024-11-06 17:51:39 595

原创 lvgl白屏问题(LCD长时间白屏)和优化lvgl

总结下来,其实就几点:1、失能lvgl不必要的部件;2、尽可能使用绘制来代替图片;3、实在没法绘制的小图标就直接使用图片;另外,还可以直接弄一个写flash工程,将不经常刷新的图片素材写到外部flash中,为什么要单独弄一个呢?因为直接在工程里写flash,容易导致每次烧录程序都要写一遍。其实还有个方式,那就是开启keil的优化等级,只不过这种情况下需要注意一些变量的volatile处理,而且优化也并不明显,能大概下降个二三十k吧。

2024-11-06 10:16:08 1342

原创 RT-Thread操作系统(2)

- 通过设备句柄,应用程序可以打开和关闭设备,打开设备时,会检测设备是否已经初始化,没有初始化则会默认调用初始化接口初始化设备。-- 在main函数下面写一个函数,将上面我们写过的线程创建和启动写在这个函数中,然后宏定义声明,这样就算我们不在main中调用,我们也可以执行。设备驱动框架层是对同类硬件设备驱动的抽象,将不同厂家的同类硬件设备驱动中相同的部分抽取出来,将不同部分留出接口,由驱动程序实现。-- 配置过后,保存,配置串口3的宏定义和在main.c中写调用代码,编译,就会连接上阿里云。

2024-11-05 19:31:05 716

原创 RT-Thread操作系统(1)

RT-Thread,全称是 Real Time-Thread,顾名思义,它是一个嵌入式实时多线程操作系统,基本属性之一是支持多任务,允许多个任务同时运行并不意味着处理器在同一时刻真地执行了多个任务。事实上,一个处理器核心在某一时刻只能运行一个任务,由于每次对一个任务的执行时间很短、任务与任务之间通过任务调度器进行非常快速地切换(调度器根据优先级决定此刻该执行的任务),给人造成多个任务在一个时刻同时运行的错觉。

2024-11-05 16:37:39 947

原创 IIC

硬件 I2C:是指直接利用 STM32 芯片中的硬件 I2C 外设,该硬件 I2C 外设跟 USART串口外设类似,只要配置好对应的寄存器,外设就会产生标准串口协议的时序。5、应答信号: 发送数据的设备:发送完8bit一个字节的数据之后,会等待一定的时间,等接接收方的应答信号(SDA在接收前,拉高释放SDA ),接收端通过拉低SDA数据线,给发送端发送一个应答信号,以提醒发送端我这边已经接受完成,数据可以继续传输,接下来,发送端就可以继续发送数据了。在iic通信中,每发送一个字节,从机都会发送一个应答。

2024-11-02 19:29:11 872

原创 cubemx(hal库开发)

并且从16年开始,ST公司就逐渐停止了对标准固件库的更新,转而倾向于HAL固件库和 Low-layer底层库的更新,停止标准库更新,也就表示了以后使用STM32CubeMX配置HAL/LL库是主流配置环境;和标准库对比起来,STM32的HAL库更加的抽象,ST最终的目的是要实现在STM32系列MCU之间无缝移植,甚至在其他MCU也能实现快速移植。-- 5、配置完后会发现时钟有个错误,因为之前配置时钟的时候没有考虑到ADC的时钟,因为adc时钟不能超过14HZ,所以这里需要重新配置时钟。

2024-10-31 10:51:18 4392

原创 # lvgl补充

- 9、擦除之后将擦除这个函数注释掉,将其他的任务打开,然后重新编译下载程序。-- 6、在main函数中调用擦除函数,将其他任务都注释掉,只执行这个擦除的函数,然后下载进工程中,会看到串口助手显示擦除成功。-- 因为我们的天气模块要显示的字体格式可能会由很多,如果都用lvgl生成字模会占用比较大的空间,所以这里我们采用其他方式。-- 10、之后将刚刚生成的.c文件添加到工程中(lvgl/app),将40多行左右的注释打开。-- 2、从电脑自带的字体中找到一个字体,将这个字体复制到桌面,注意不要剪切。

2024-10-31 10:46:12 786

原创 lvgl

- 1、进行界面设计,注意先考虑好布局(做几个界面,每个界面显示什么内容,如何规划)-- 2、保证每个界面在屏幕上都能显示出来-- 3、保证界面相互切换不会卡死-- 4、界面刷新。

2024-10-25 16:25:51 1434

原创 任务间通信(2)

- 今天我们要讲的事件也是任务间通信的一种方式,它的核心用途也是任务间同步,与信号量不同的是事件可以实现多任务间的同步-- 事件也叫事件组-- 我们还是先看官方文档-- 文档中说该宏定义的取值规定着最多可用于几个任务同步-- 当前我们用的操作系统的版本是10.2.1,下面是该操作系统官方代码中宏定义的赋值。(注意:不同版本的操作系统使用上会有差异)-- 事件组应用的核心就是“逻辑与”和“逻辑或”

2024-10-25 16:19:34 916

vim打开时有初始内容

vim打开时有初始内容

2024-08-14

系统编程-认识Linux及常用指令

系统编程-认识Linux及常用指令

2024-08-13

使用15单片机做的传感器课设,传感器包括火焰,ds18B20,ds1302,数码管,DHT11等外设

其中用了iic和onewire总线

2024-07-24

0基础C语言控制传感器配套源码100多个

0基础C语言控制传感器配套源码100多个

2024-07-24

空空如也

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

TA关注的人

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