
驱动
文章平均质量分 87
昵称p
重生之我是嵌入式软件工程师
展开
-
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 · 1168 阅读 · 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 · 1247 阅读 · 0 评论 -
RKmedia的视频录制和推流
- 输出目标如果有数据时,就会自动调用回调函数,收到的数据在mb中存放着,将数据写入文件即可。-- 函数的功能:给输出目标一个回调函数,当数据目标有数据的时候,就会自动调用这个回调函数。-- 靠关系绑定,系统自动取出VI的数据送到VENC,VI有数据就会自动送到VENC里面。-- 那么从VENC出来的数据呢,怎么获取,->当然他出来的数据也有两种选择。-- 在开发板中执行代码,不用关正在执行的代码,让他一直推流,就可以看直播了。-- 函数的功能:设置摄像头捕获的的通道参数,设置 VI 通道参数。原创 2024-12-10 09:20:47 · 951 阅读 · 0 评论 -
开发板是RV1126芯片,摄像头是GC2053(1)
来源一瑞芯微公司的芯片->海思(华为旗下)市场之前我们监控领域百分60%左右市场都是用海思的芯片尤其是 4K的编解码的芯片在19-20年 海思以及华为公司最难的几年所有的行业半导体都在制裁没有一家芯片厂愿意给华为做芯片海思处于没芯片!-- 瑞芯微的 RV1126-> 淘宝25块左右四核 CPU-A7(32bit) -> 频率是1.5GHZ内部集成VPU(专用的视频编解码器)原创 2024-12-10 09:18:09 · 1026 阅读 · 0 评论 -
FFMPEG 的视频开发基础和FFMPEG 结合 LVGL 显示和FFMPEG 的对讲机实现
- 只有第一帧存放最原始的最全的数据,第一帧叫做原始帧,但是从第二帧开始我就不正常存储图像,只存储和第一帧区别!-- 采集摄像头数据 原始格式是YUYV422,如果想要把我的摄像头数据显示到 LVGL 上,需要将YUV422 的图像格式转成 RGB,并且还需要将RGB 再转 ARGB。-- 2、添加上一个背景,然后再选一个图片,我们需要达到的效果就是将摄像头采集的视频显示到这个图片上。-- 4、我们在customs.c中做修改,因为这个文件是如果需要在lvgl做二次开发的时候,就在这个文件中增加代码。原创 2024-12-05 20:05:51 · 1187 阅读 · 0 评论 -
FFMPEG2音频的输出,音频的编码,音频的解码
- SDL不仅仅能播放音频,还能播放视频,还能开发界面,还能控制鼠标、键盘、触摸屏、LCD 等设备-- LVGL 的底层就是用的 SDL2 实现的!你调用 SDL 做图像开发,自动根据你的环境做硬件加速你的开发板有 GPU 自动调用 GPU 加速发现你的开发板没有 GPU,自动调用 CPU 做显示SDL是一个跨平台的多媒体开发库,使用 C 语言写成,用于实现音频、图形、输入以及窗口功能的处理。它提供了一个简单、易用的API,可以帮助开发者快速构建跨平台的多媒体应用程序。原创 2024-12-05 20:04:22 · 342 阅读 · 0 评论 -
FFMPEG(音视频开发的开端)
FFMPEG(音视频开发的开端)和FFMPEG 下的音频开发和FFMPEG 如何读取声卡设备的数据的和FFMPEG 的录制原始声音的示例代码原创 2024-12-05 20:00:24 · 239 阅读 · 0 评论 -
LCD与lvgl
- 最多建议一些驱动可以在此处加载,不建议应用程序也在此次加载 ,建议应用层程序放到 /etc/profile,这个文件也是自启动文件,这个文件是环境完全ok,最稳定的时候,已经完全开机的时候,才会最后加载脚本文件,这个时候你放入你的应用程序,才是最稳定的。-- tip:这里修改引脚的原因是:因为刚开始厂商给的原理图是错的,厂商怕被抄袭,所以后来拿到正确的引脚后,要将设备信息中的LCD的引脚改为正确的。adc来控制电压不同,控制摇杆向前是一个电压,向左是一个电压,向右是一个电压,向后是一个电压。原创 2024-12-02 20:38:44 · 1413 阅读 · 0 评论 -
输入子系统
如果让你写一个按键:请问你的按键的输入设备文件名叫什么?你的按键的返回值 是什么?其他人知道不知道你的设备开发的规矩!如果按键设备名字设置成-> /dev/hehehek,谁都不知道这个文件是用来干什么的,有什么作用.难为两种人:和你对接要做上层开发的 App 的软件工程师难为后续接替你工作的员工LCD 也这样开发 摄像头也这样开发为什么所有的软件工程师都可以通过某些软件开发摄像头/LCD 界面开发?原创 2024-12-02 12:01:22 · 720 阅读 · 0 评论 -
IIC
- 串行的同步的半双工的总线型通信-- 他是嵌入式常用三大串行通信之一-- 他的速度比较慢最慢: 100Kpbs 400Kpbs-- 硬件 IIC 和软件 IIC 是什么意思 有什么区别?硬件 IIC 指的是使用芯片本身附带的外设做的 IIC 通信软件 IIC 指的是任意的两个 IO 口做时许的模拟产生 IIC 通信-- 面试题:你为什么用硬件(软件)IIC?-- 硬件:如果有硬件就用硬件!硬件的更加稳定,更加的快!更加的简单快捷,我根本不用考虑时许的问题。原创 2024-12-02 11:57:38 · 603 阅读 · 0 评论 -
定时器与poll
- 中断又叫异常,异常发生会打断当前正在执行的事情,转而执行中断/处理异常提高系统的实时性提高 CPU 的利用率。原创 2024-12-02 11:55:49 · 826 阅读 · 0 评论 -
中断
我上层调用 open->内核层 open(产生阻塞) 上层也会阻塞 如果内核层 read 产生阻塞 上层的 read 也会阻塞(阻塞就是放弃 CPU)Linux 下的中断区分靠的是在 Linux 下对中断的不同的编号作为区分不同的中断,每个中断都有一个独立的编号,而我们在内核中控制中断也靠这个编号!自然优先级->注册中断的顺序(如果两个优先级的抢占优先级和响应优先级都相同,那么就按照注册的顺序来执行)SPI的编号-32就是中断的编号(写在设备树中的编号),ppi的编号和中断编号差十六。原创 2024-12-02 10:33:55 · 974 阅读 · 0 评论 -
总结复习
目录总结复习一、杂项驱动开发 + 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 · 940 阅读 · 0 评论 -
设备树开发
相关驱动适配代码,厂商会编写芯片的驱动代码,移交提给内核社区,内核社区做审核,全部融入到下一版本的内核,做发布。-- 所以一般只会有一个dtb文件,找到了这个文件,就知道了当前使用的设备树是哪个名字的dts后缀的文件。-- 设备树的本质:是一个文本文件,文本文件里面就是字符串,字符串里面描述的就是我们所说的设备信息。-- 4、所有的节点都是 /(跟节点) 的子节点,所有的节点只能定义在 /节点之下!-- 包含的设备树文件,一般都是dts文件,dtsi里面的内容是厂商编写的,不建议修改。原创 2024-12-02 10:02:11 · 822 阅读 · 0 评论 -
多节点和内核层的接口
以我们板子上的四个灯为例子:请问这两天我们写的驱动,不管有几个灯,最终生成一个设备文件!问题,在于灯不能独立控制,做个流水灯 都难!我们写这四个灯的驱动:写四个驱动,生成四个设备文件!这四个灯的驱动重复高狠!确实能实现四个灯独立性,但是显得我们不专业!我们今天的目的:我想写一个驱动,生成四个设备文件,四个设备文件独立!原创 2024-11-21 10:32:11 · 885 阅读 · 0 评论 -
标准驱动开发(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 · 1155 阅读 · 0 评论 -
杂项驱动开发
- linux分层思想:主要是想告诉大家,linux下的所有的函数接口是通用的,隔离硬件的,软硬件分离,你写的代码原则适用于任何的平台-- 实际上在发展中:把驱动也做了分层,分为硬件层(硬件信息层)和软件层(软件代码层)而软件代码层就在所有的平台通用了,而硬件信息层就渐渐演变成了设备树,bsp厂商把驱动分为两层:硬件层,软件层-- 我们现在初学的linux下的驱动,暂时不考虑分层。原创 2024-11-21 10:28:11 · 1584 阅读 · 0 评论 -
内核的驱动框架
- 针对内核开发去配置vscode-- 解决头文件不报错-- 头文件报错就去改环境变量。原创 2024-11-21 10:23:19 · 873 阅读 · 0 评论 -
文件系统的制作
整个操作系统里面:除去 uboot 内核这些文件之外其他所有的应用程序、配置文件、设备文件结合到一起我们称之为文件系统!文件系统才是真正决定了 系统的功能和大小的单元-- 文件系统一般厂商可能提供,也可能不提供,文件系统是我们开发者可以自己完全独立裁剪定制的一个东西-- tip:疑问:Ubuntu 不是有一套文件系统你为什么不直接复制一份 Ubuntu 文件系统我们 Ubuntu 里面所有的程序都是 x86 的架构所以直接用是不可能。原创 2024-11-21 10:20:40 · 1009 阅读 · 0 评论 -
ubbot和内核
- make -j用make -j带一个参数,可以把项目在进行并行编译,比如在一台双核的机器上,完全可以用make -j4,让make最多允许4个编译命令同时执行,这样可以更有效的利用CPU资源。因此make -j16意思即make最多允许16个编译器同时执行,提高编译速度,充分利用本机计算资源。原创 2024-11-21 10:17:32 · 515 阅读 · 0 评论 -
了解rk3588单片机
- 所有A系列单片机只要出现问题,编译缓冲区就可以直接删除(某些缓冲区),再次编译的时候只会编译这个缓冲区,他会自动检测哪个被删了。-- loader模式烧写镜像可能会失败,maskroom模式下(整体升级和整体烧写)烧写镜像是绝对不会失败的。-- 怎么配置uboot,通过uboot配置文件能够快速配置uboot,用于自己的开发板。-- uboot是一个开源项目,但是需要做配置和裁剪,才能适应开发板。-- 正常的单片机板子是不允许串口供电的,一般都有专门的电源供电。原创 2024-11-21 10:13:40 · 1187 阅读 · 0 评论 -
驱动前的补充
- Loader 模式的单独烧写: 你要先想办法进入 loader 模式 现在我只教了一种:切换 我现在再教给你一种: UART 口和电脑连接到一起 通过 MobaXterm->就是串口助手。-- 如果下载过老师那个完整版虚拟机的话,打开处于挂起状态无法更改配置,就把这两个文件删了,就可以配置了。-- 刚插上板子的时候显示发现一个ADB设备,需要点击切换,切换到BOODer模式。-- 汇编不流行的原因是因为不通用,架构不同,生成的汇编不同,-- 连接上板子后,打开串口,注意波特率是1500000。原创 2024-11-21 10:10:28 · 248 阅读 · 0 评论 -
如何将交叉编译配置在环境变量中
- 将交叉编译配置到环境变量中,就可以直接用了。-- 修改 Linux 的环境变量需要哪个文件。-- 注意这个文件一般要打开两次才会成功。-- 环境变量 = PATH。-- 之后重启虚拟机即可生效。-- 这里针对所有用户修改。-- 查找交叉编译的路径。-- 再次执行.c文件。原创 2024-11-12 16:39:57 · 560 阅读 · 0 评论 -
如何解决不能将开发板连接到虚拟机的问题(连接显示灰色,不能选中)
- 如果连接上rk3588单片机,虚拟机无法来连接,如何更改。-- 将虚拟机的配置文件以文本文件的形式打开。-- 再将所有的FALSE改为TRUE即可。-- 然后再次打开虚拟机即可。-- 先将虚拟机关机。原创 2024-11-12 16:38:45 · 310 阅读 · 0 评论 -
驱动前的准备
- 这个指令主要是解决windows和虚拟机之间空间不对等(虚拟机命名没有用到那么大的空间,但是windows却占用很大的空间。如果下载过老师那个完整版虚拟机的话,打开处于挂起状态无法更改配置,就把这两个文件删了,就可以配置了。-- 解压这个压缩包(会占用大量的空间->有空间再去做!-- 只是更新这个还不够,还需要再虚拟机内部进行配置。-- 打开 VMWare 软件的打开虚拟机。-- 把我 U 盘虚拟机拷贝到 C 盘。-- 首先先更改虚拟机的设置。-- 打开后重新配置虚拟机。所以我创建的虚拟机是高版本。原创 2024-11-10 11:34:56 · 389 阅读 · 0 评论 -
系统回顾
- 驱动只有在做项目的时候会用到 浅浅给大家说一说接口 具体代码编写在项目中我们会重新写相关代码 前三周都用不到!-- 多线程花费 7.8S make -j 线程数(取决于你的 CPU 的线程)-- 原则之间线程之间毫无关系,但是如果一个线程出现段错误,其他线程都会出错。->尽量用该函数结束线程 线程的互斥和同步。-- 如果没有安装ubuntu,请先安装ubuntu,这里就讲一下换源。原生的 Ubuntu 他的源(下载网址)太慢了。//获取文件光标距离开头的位置。-- 一个正常的项目都会用到的技术点!原创 2024-11-10 10:43:15 · 879 阅读 · 0 评论