自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 搭建BOA服务器

将html文件放在www/html cgi文件放在www/cgi-bin,在浏览器执行开发板ip+html文件相对于www文件夹的路径(我这里是192.168.22/html/a.html)(这里将www当作根文件夹)生成boa文件,将boa文件拷贝到开发板,再将Ubuntu/etc/mime.types拷贝到上面指定的开发板mime.types文件位置。BOA服务器是嵌入式常用的服务器类型,嵌入式程序作为后端时候如果想配合网页进行显示,利用BOA服务器搭建网络界面是不错的选择。

2025-03-07 20:22:31 533

原创 C语言二级指针的作用

这个问题类似于为什么不能直接传递int 值,主函数传递a给自定义函数,而自定义函数无法修改主函数的a,这是因为自定义函数与主函数之间的a并不是一个a,我们传递主函数a的地址,然后再自定义函数解引用a的地址间接操作a地址指向的内存的值。当我们相对主函数的指针地址进行操作时候,我们需要传递该地址的指针,然后自定义函数中对指针的指针解引用实际上就是在操作主函数中的指针。第一步初始化是一样的,第二部中我们传入了b的地址就是0x14,*b其实就是在操作主函数中的b,因此第三步是的主函数中的b发生了变化。

2024-12-02 11:02:03 184

原创 “堆”-“栈”带来的小问题

这样写代码是有问题的,因为在这个函数中A是一个局部变量,其内存被分配在栈上,而栈上的内存在这个函数结束时候会被自动释放,因此我们主函数调用这个函数获取到的这个地址里面的内容实际上已经被清除了,会导致段错误。而这样就是对的,因为malloc会在堆上开辟空间,堆上内存不会自动释放而需要手动free这里的malloc就和c++里面的new一样。

2024-11-25 14:10:05 87

原创 基于rkmedia的视频解码

rkmedia会读取MEDIA_BUFFER类型的数据实质也就是void *,因此我们先分配了这样的MEDIA_BUFFER数据(这里可以理解MEDIA_BUFFER是一个画布,需要指定其框架大小后往里面填充数据),然后把我们的数据拷进去,大小也考进去,发送到VDEC最后释放。显示模块,我没屏幕,没做,但是你可以建立一个线程然后RK_MPI_SYS_GetMediaBuffer得到数据然后RK_MPI_MB_GetImageInfo获取信息,打印出来看这个信息判断是否正常运行。

2024-11-21 20:03:34 369

原创 FFMPEG音视频API-----------------复用(编码)篇

----------------------------------------一些出口函数-----------------------------------------------------------------------------------------上面的是一系列的配置函数,下面是实际的功能函数---------------------------------(如果这里的编码器设置为NULL的时候不会设定编码器上下文的参数,需要后面再次设定编码器上下文的信息)

2024-10-10 19:48:17 1372

原创 RKMEDIA画面质量调节-QP调节

分别表示I帧与P帧的阈值,一般来说不改动,这个数组是控制宏块画面质量,对于一帧图片来说改动其内部宏块的意义其实不大,因此我们通常不改动。在文件大小中第一个视频的大小为20m第二个为3m,静态图片从键盘来看,第一个图片的清晰度远大于第二个。分别表示I帧、P帧的宏块的QP值与整个帧的QP值之间的可接受的波动范围。整个是帧的QP的关键的配置项,其越小画面质量越好,通常配置在1-51之间。下面是关于QP的使用,其实我们只需要在VENC下面定义结构体。第一帧的QP值,默认-1。即可,其不需要单独的进行管道的配置。

2024-10-08 19:07:10 544

原创 音视频推流中使用wireshark进行抓包分析RTMP

最近使用开发板采集音视频数据合成FLV流后进行推流到PC端(RTMP协议),PC端需要安装对应的nginx以及支持rtmp的nginx,在网上找了教程后安装成功,现在使用wireshark工具对开发板于pc端之间的通信协议进行解析。

2024-09-14 20:21:57 1812

原创 FLV流分析

与上一篇一样的,FLV流也是用于音视频合成,且用于音视频传输。相比于TS流,FLV的封装更为简单,其分为文件头(File Header)、文件体(File Body)

2024-08-01 10:36:00 857

原创 TS流分析

1.传输PAT表时,即TS header中PID为0时,通常先要传输一个PAT表,告诉大家后面有是节目,然后在进行传输,因此PAT表是定期传输,但注意实际上在传输PAT表时候是不存在Adaptation field这个内容的,因此,传输PAT时候结构为TS header +PAT信息+0xff补齐。TS header是包头,其中比较重要的是PID,当后面传输PAT时候这个PID就是0,当后面传输的是具体的PES时候就是具体的PES对应的PID,该PID与PMT中PID信息是一致的。

2024-07-31 20:07:26 381

原创 AAC原理及其使用(基于rv1126)

AAC是什么?在视频编码时 可以使用H264对视频进行编码AAC就是在音频编码使用的压缩技术如果直接把音频裸流进行传输,也会占用很大的资源,因此我们需要使用压缩技术对音频数据进行压缩后在进行压缩这很类似于我们在电脑中习惯性的把文件夹压缩为压缩包在进行传输数据AAC又分为了ADIF与ADTS,其中ADIF包含一个头与很多数据,这样的类型很适合与存储,而ADTS对每一帧进行编码,因此ADTS适合用于网络传输。

2024-07-31 17:50:00 1070 1

原创 H264、Annexb 格式、NALU------解析笔记

基本编码后的数据位SODB数据,为了数据对齐,在SODB后加入一个1与多个0完成数据对齐的数据叫做RBSP数据,最后为了去除开始加入防止与起始码重复的0x03,将多余的0x03取出后为最终的数据EBSP。SPS指的是序列参数集,它保存了一组编码视频序列的全局参数。H.264的目的是通过先进的编码技术,提供高质量的视频压缩,比以前的标准(如MPEG-2)在相同的画质下占用更少的带宽和存储空间。“00 00 00”修改为“00 00 03 00” “00 00 01”修改为“00 00 03 01”

2024-07-29 18:44:34 439

原创 rv1126物体检测 rkmedia、opencv……

整体码流流向:因此代码也分为这几部分:VI:采集视频 配置视频采集信息模型推理线程:获取VI码流、载入模型、进行模型推理、保存推理结果画框线程:获取VI码流、获取推理结果、显示推理结果、输出码流到VENCVENC:编码RTSP:获取VENC编码码流、传输。

2024-07-25 10:17:15 1056

原创 rv1126利用rkmedia、opencv、rockx……完成人脸识别

视频采集、处理使用rkmedia:vi模块进行视频输入、rga模块进行视频处理人脸识别:先获取rga输出码流,再调用rkmedia的模型对人脸进行推理(线程1)打框框:opencv(线程2),且在打完框后把视频输入至venc(编码)rtsp推流:获得venc编码数据后进行rtsp推流。

2024-07-22 20:37:12 1283

原创 win、ubuntu、开发板配置静态ip

在进行嵌入式开发时我们希望win端、ubuntu端、开发板端处于同一网段,例如我设置的:开发板:192.168.1.22硬件连接:首先win端连接wifi,开发板与win使用网线连接。

2024-07-19 10:28:13 611

原创 RKmedia进行vi-vo模块

首先包含了必要的头文件,以及rkmedia底层的库static bool quit 是定义了布尔类型的变量来表示这个程序的运行状态 false表示没停止 true表示停止fprintf: 这一行将接收到的信号编号打印到标准错误流(stderr: 这行代码将全局变量quit设置为true。即表示停止程序。这里的optstr 和 long_options 分别是短选项字符串、长选项结构数组。(用于后面解析命令,在main函数的getopt_long用到)这里短选项字符串定义了?

2024-06-25 14:42:52 851

原创 v4l2抓取rv1126图像

本文是基于正点原子的rv1126开发板使用mx415摄像头对不同节点的图像进行抓取。

2024-05-29 15:30:28 1677

原创 qt把虚拟键盘部署到arm开发板上(imx6ull)(键盘显示不全)

home/book/qtstudy/qt-everywhere-src-5.15.2/arm-qt/bin/qmake,其中就是在qt-everywhere-src-5.15.2文件夹下,arm-qt是我编译qt源码指定的文件夹,每个人的不同需要根据具体情况看。arm-qt/plugins/platforminputcontexts(arm-qt就是我们之前安装qt的时候生成的文件夹。然后把这个库文件复制到我们开发板的安装qt的目录下。最后在qt的main函数时候使能该键盘的环境变量。

2024-05-28 16:05:21 1581 7

原创 qt与mysql数据库交互(利用navicat可视化)

MySQL的安装我看了这篇帖子,讲的很详细很好安装后可以去搜索框搜-服务-然后找到MySQL,如果没有启动的话启动一下navicat的安装直接正常下载安装即可,如果只用一次可以登录体验两周,如果想一直使用可以去搜一下如何破解。如果启动了MySQL此时navicat应该是可以双击变绿下面可以再列表中新建需要的表加入数据,其中设计表是设计整体有多少变量设计后保存再打开表即可填充数据。

2024-05-20 16:59:58 681

原创 qt操作硬件(以imx6ull为例)

下面用imx6ull的qt'点灯说明,这里要使用c++,c混合编程一、完成ui界面位置 构造一个这样的简单界面即可,主要是实现open和close的槽函数即可。我这里分别把两个按钮改名为为openbt closebt了二、实现逻辑功能2.1完成led类创建 在主文件夹led中addnew,选择c++的类,记得把base class改成qobject,取个类的名字,其余保持默认即可。完成创建后你会得

2024-05-10 10:33:29 811

原创 qt-imx6ull调试记录(触摸屏无反应)

今天调试代码不小心调到了不该调的东西,触摸屏无反应了(可显示),而且我发现/dev/input/event1也不见了,即压根没识别到触摸屏,但是还能显示qt界面也是很神奇,调了半天环境变量、……都没有用,最后甚至tslib测试程序都跑不了了,我严重怀疑是tslib库、环境变量哪里设置错了。再配置环境变量后就可以使用触摸屏了!

2024-05-09 20:05:32 810

原创 qt移植到imx6ull运行(qt部署到imx6ull)

这个事情对于小白来说确实不是很友好,会经常出现错误,我弄了两天终于弄好了我主要参考了这两个教程。

2024-05-08 15:23:09 1435 2

原创 QT-实现实时时间、计时器

1.显示实时时间2.实现计时、暂停、重置、打点。

2024-04-30 10:58:48 2405

原创 QT如何显示一张图片

首先在ui设计界面中选入label组件label是我们载入图片的容器在总体工程的文件夹点击右键选择add new选择添加qt 资源文件设置名称后完成,会生成一个qrc文件,在resources文件夹下选择 open in editor 在资源管理器中打开选择add prefix 再选择add files选择需要加入的图片,保存右键ui中的label,编辑样式表,添加资源,选择border-image,在里面可以找到我们加入的图片。

2024-04-29 15:50:49 2635

原创 QT如何实现换页

如何我们可以设计新的ui,在之前的ui(widget)的头文件中包含新的ui(form)的头文件,并在public中定义新的类即Form *f。首先我们需要新建一个ui,选择左上角文件->新建文件->选择QT中的QT设计师界面类。即关闭老的界面,打开新界面,这样即可实现界面的转换。在老ui的widget.cpp中初始化form类。在页面1我们如何实现点击按钮进入下一个界面?一路默认,当然也可以修改文件名。

2024-04-29 15:00:19 550

原创 QT之udp通信

udp通信被认为是不可靠的通信因为其不关心数据有没有成功发送,它只需要知道对方的ip地址以及端口号即可发送数据,在udp协议中没用服务器和客户端的概念。

2024-04-29 10:38:22 1241

原创 QT实现tcp通信

接受框:Group Box+Plain Text Edit 设置为readonly端口号:Line Edit发送窗口:Line Edit其余按钮:Push Button。

2024-04-26 16:39:46 690 1

原创 QT实现串口助手

选择Qt Widgets Application,输入名称选择路径(不要出现中文),define build system选择默认的qmake下一步中的bass class选择QWidget,其余配置均按照默认即可,完成项目创建下面对forms文件夹下面的widget.ui文件进行编辑。

2024-04-25 21:05:07 2915 2

原创 spi总线驱动模型-linux

spi分为了电源线、地线、MOSI、MISO、SCLK、CS、DC线MOSI:m即master主设备的意思s即slave从设备的意思,因此mosi就是主设备输出数据从设备接收数据MISO:相反的,主设备接收数据,从设备发送数据SCLK:时钟线,不同的spi设备的频率是不同的,我们可以在设备树中指定频率CS:片选引脚,比如一个spi1节点下有A、B两个spi设备,那我用哪个我就需要先使用片引脚进行选择。

2024-04-23 20:56:37 625

原创 I2C总线驱动模型-linux

i2c_driver中的driver中的of_match_table中的compatible进行匹配设备节点时候,我们也需要构建并初始化一个id_table(可以胡乱填充),这点在韦东山老师的直播课程中有调试过,这是内核的bug,如果没有id_table即使compatible匹配也无法进入probe函数。(这里第四个内容是一个地址,因为我们不可能只写一个字节啊,因此一个变量肯定是不可以表示的,我们需要一个地址指向我们的字节,再配合长度完成写),需要注意的是数据是一个unsigned char类型。

2024-04-18 19:48:02 910

原创 C语言的小问题

在驱动程序种实现ioctl中使用arg来接受这个地址,那么unsigned int *usr_buf = (unsigned int *)arg就是定义了一个指针usr_buf指向了arg内容的那个位置。那么在函数传输的时候是不是可以用long类型来接指针的地址呢?应用程序ioctl里的buf是一个字符串的首地址。在32位机器上指针的大小都是4个字节即32位。long类型也是4字节。

2024-04-18 19:12:27 187

原创 Input子系统学习笔记

在没引入输入子系统是时候我们需要自己注册字符驱动程序、注册class、注册设备、实现file_operation结构体,但我们引入之后我们只需要分配、配置、注册输入子系统即可,再配合中断服务函数进行数据解析、数据上报。

2024-04-11 15:23:26 557

原创 c语言一些问题

开始输入的是a的地址,如果使用方法一是把a指向的位置变为1,方法二则是让a的地址等于b的地址,但在主程序中并不知道这个地址?还是什么情况反正我不太理解为什么第二个方式不对。在之后我又测试了test中b的地址和主函数中输出的a的地址并不一样。

2024-04-09 19:24:20 179

原创 LINUX-IMX6ULL SR501驱动

需要先增加sr501模块的设备树节点,由于作为GPIO使用因此不需要配置PinCtrl子系统。

2024-03-27 19:04:17 1029 1

原创 ZYNQ-PS-LEDINTERRUPT

先宏定义了gpio id,中断控制器id,gpio中断id ,key ,led的引脚,并声明了中断系统函数和中断服务函数这两个函数,其次我们定义了gpio和intc这两个结构体。2.注册中断处理函数(输入了:中断类型IRQ,中断控制器,以及最开始定义的中断控制器结构体)此时输入的第三个变量和下面的第一个变量相同,应该是将两个函数关联起来的量。3.关联中断和中断源(输入:中断控制器结构体,中断源ID(此时是gpio),中断服务函数,传入中断服务函数的变量(即谁进行中断,此时是gpio))

2023-11-23 10:57:31 132

原创 ZYNQ-PS-LED

ZYNQ 使用ps端之前也需要现在vivado中配置所需要的底层硬件,例如本次需要使用vivado配置ddr,串口(检查是否报错),gpio,其中mio是多功能复用io,他是ps端所使用的io。

2023-11-21 16:00:56 161

原创 ZYNQ-FPGA-AD\DA(高速)

ADC是analog to digital converter也就是代表模拟转数字DAC是digital to analog converter是数字转模拟性能指标:通常我们关注转换速率以及分辨率两个指标转换速率:每秒可以采集多少个点分辨率:分辨率是由数据位宽决定,位宽越大越精准(例如0.21比0.2更精准)其中本次ad da实验采用串并比较型是较快的速度。

2023-11-12 18:33:55 2783

原创 ZYNQ-FPGA-RTC (实时显示时钟)

通过PCF8563模块完成实时时钟的数据产生。PCF8563具有报警功能、定时器功能、时钟输出功能以及中断输出功能。内存地址00H、01H用作控制寄存器和状态寄存器(CONTROL_STATUS);内存地址02H~08H 用作TIME 计时器(秒~年计时器);地址09H~0CH 用于报警(ALARM)寄存器(定义报警条件);地址0DH 控制CLKOUT 管脚的输出频率;地址0EH 和0FH 分别用于定时器控制寄存器和定时器寄存器。如何使用该模块实现时钟显示?

2023-11-08 09:53:50 1259

原创 ZYNQ-FPGA-IIC协议及eeprom读写

IIC协议是传输中常见的协议,其包括了SCL 和SDA 两个引脚,它是一种半双工协议即可以收可以发但是不能同时进行。传输速度不高但较为简单。如上图,SCL与SDA 都连接着上拉电阻,因此当SCL、SDA空闲时候被上拉为高电平1,因此我们通常用0来表示有效。在SDA线上挂着许多元器件,这些元器件有自己的器件地址,因此主机可以通过器件地址找到设备。IIC协议的状态:1.空闲,SCL与SDA被上拉为高电平2.开始,当SCL为高电平时候,SDA 出现第一个下降沿表示起始信号。

2023-11-05 19:44:14 1242

原创 ZYNQ-FPGA-LCD图片以及汉字显示

与LCD色块相比仅需调整LCD_display模块即可,因为lcd的显示内容取决于显示模块,与驱动、锁相环、顶层模块无关。显示字符:显示字符的过程其实与色块类似,就是点亮相应的像素点即可,但不可能人为的进行取模,因此需要软件取模。显示图片:显示图片比字符难一点,因为显示图片不仅需要确定显示的像素点,而且多了一个维度就是RGB888,需要先确定相应的像素点,再将色彩数据输入。

2023-10-25 14:32:03 966

原创 ZYNQ-FPGA-LCD显示色块

不同款屏幕需要根据其引脚编号进行设置驱动模块的实验。这里提供一些AX7020如果用4.3寸lcd ax430的引脚图:其实我这里没有用到lcd_bl和lcd_rst信号。

2023-10-23 19:58:10 274 2

空空如也

空空如也

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

TA关注的人

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